Skip to content

Instantly share code, notes, and snippets.

View sirbrillig's full-sized avatar

Payton Swick sirbrillig

View GitHub Profile
@sirbrillig
sirbrillig / basic-vim-syntax-plugins.vim
Created August 4, 2022 17:57
My basic recommended vim syntax plugins
" Syntax plugins
Plug 'yuezk/vim-js'
Plug 'leafgarland/typescript-vim'
Plug 'peitalin/vim-jsx-typescript'
Plug 'MaxMEllon/vim-jsx-pretty'
Plug 'elzr/vim-json'
Plug 'moll/vim-node'
Plug 'cakebaker/scss-syntax.vim'
Plug 'hail2u/vim-css3-syntax'
Plug 'StanAngeloff/php.vim'
@sirbrillig
sirbrillig / basic-vim-settings.vim
Created August 4, 2022 17:50
Some of my most basic vim/nvim settings
syntax on
filetype on
filetype plugin on
filetype indent on
set hlsearch "highlight search matches
set autoindent "use previous line's indent level
set preserveindent " when reindenting try to preserve existing indentation as much as possible
set copyindent " when starting a new line use the indent of the previous line
set hidden "allow edited buffers to be hidden
set switchbuf=useopen "use existing buffer rather than opening a new one
@sirbrillig
sirbrillig / tsc-file.sh
Created August 23, 2021 23:40
A way to run tsc on a single file in my project; copied from https://stackoverflow.com/a/60950355/2615868
#!/bin/bash -e
TMP=.tsconfig-lint.json
cat >$TMP <<EOF
{
"extends": "./tsconfig.json",
"include": [
EOF
for file in "$@"; do
echo " \"$file\"," >> $TMP
// This is a little tricky because we need to verify that text never appears,
// even after some time passes, so we use this slightly convoluted technique:
// https://stackoverflow.com/a/68318058/2615868
async function verifyThatTextNeverAppears( text: string ) {
await expect( screen.findByText( text ) ).rejects.toThrow();
}
// OR, a custom Jest matcher:
expect.extend( {
<?php
/*
Plugin Name: Checkout Experiment
Description: An experimental WordPress.com checkout inside wp-admin
Author: Automattic
Version: 1.0
Author URI: http://automattic.com
*/
class CheckoutExperiment {
import React from "react";
import { render } from "react-dom";
// @ts-ignore
import wpcomFactory from 'wpcom';
import wpcomProxyRequest from 'wpcom-proxy-request';
import {
ShoppingCartProvider,
useShoppingCart,
} from "@automattic/shopping-cart";
import {
@sirbrillig
sirbrillig / .gitconfig
Created March 10, 2020 22:34
Git config alias for backup and restore of current branch
[alias]
backup-create = "!f() { git branch -f backup-$(git rev-parse --abbrev-ref HEAD) && echo 'Backup created. Use git backup-restore to restore.'; }; f"
backup-restore = "!f() { echo 'Are you sure you want to overwrite the current branch with the latest backup? This cannot be undone!'; select result in Yes No; do [[ $result == "Yes" ]] && git reset --hard backup-$(git rev-parse --abbrev-ref HEAD) && echo 'Backup restored.'; break; done; }; f"
@sirbrillig
sirbrillig / index.php
Last active October 4, 2019 00:43
Example of PHP shell helper injection and test
<?php
// If this function were a class method, the injection could happen in the constructor instead
function printMessageAndExit(string $message, ?ShellHelper $shell): void {
$shell = $shell ?? new DefaultShell();
$shell->echo($message);
$shell->exit();
}
interface ShellHelper {
@sirbrillig
sirbrillig / Phabricator-Notification-Grouping.js
Last active December 17, 2018 18:07
Allows collapsing Phabricator notifications to one-per-revision
// ==UserScript==
// @name Phabricator Notification Grouping
// @namespace https://gist.github.com/sirbrillig/6473dff58511c1672d644af33f078535
// @version 0.1
// @description Allows collapsing Phabricator notifications to one-per-revision
// @author Payton Swick <payton@foolord.com>
// @match https://code.a8c.com/notification/*
// @grant none
// ==/UserScript==
@sirbrillig
sirbrillig / Vegan_Haggis.md
Last active April 30, 2018 17:17
My vegan haggis recipe

Vegan Haggins and Neeps and Tatties

Ingredients

  • 6 medium russet potatoes, roughly chopped
  • 1 large rutabaga, roughly chopped
  • 1/2 stick of margarine
  • salt and pepper to taste
  • 1 large onion, chopped
  • 2 medium carrots, grated