about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2019-10-09T11·13+0100
committerWilliam Carroll <wpcarro@gmail.com>2019-12-24T15·21+0000
commit6b456c1b7a4f6899f063a6e65355af51901d9c7a (patch)
treecfc70d74818ae9fabdbbfb0cf16cce092e4c1a09 /configs/shared/emacs/.emacs.d
parenta7c72adb2ebec1e497fc040eaf3551d564d61a5b (diff)
Massive configuration overhaul
Currently paying the price of months of non-diligent git usage.

Here's what has changed.

- Theming support in Gvcci and wpgtk
- Dropping support for i3
- Supporting EXWM
- Many Elisp modules
- Collapsed redundant directories in ./configs
Diffstat (limited to 'configs/shared/emacs/.emacs.d')
-rw-r--r--configs/shared/emacs/.emacs.d/init.el26
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/c-mode/stdio5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/c-mode/stdlib5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/c-mode/struct7
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs11
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/provide-footer6
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/haskell-mode/derive-safe-copy5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/haskell-mode/import-qualified5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/haskell-mode/instance-defn6
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/haskell-mode/language-extension5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/haskell-mode/separator5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/haskell-mode/undefined5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/html-mode/index-boilerplate18
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/java-mode/public-static-void-main7
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/nix-mode/shell-nix12
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/org-mode/code-snippet7
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/org-mode/href5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/python-mode/dunder-main6
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/python-mode/shebang6
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/python-mode/utf-85
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/action-extractor5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/console-log5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-defn5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-function7
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/destructure-const5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow-function7
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-destructured5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-react5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-type5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-x-from-y5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-y5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-describe-test10
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-test7
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/react-class-component11
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/redux-action5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/typed-redux-action5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/web-mode/index-boilerplate18
-rw-r--r--configs/shared/emacs/.emacs.d/tramp42
-rw-r--r--configs/shared/emacs/.emacs.d/vendor/org-clubhouse.el365
-rw-r--r--configs/shared/emacs/.emacs.d/vendor/reason-indent.el304
-rw-r--r--configs/shared/emacs/.emacs.d/vendor/reason-interaction.el216
-rw-r--r--configs/shared/emacs/.emacs.d/vendor/reason-mode.el242
-rw-r--r--configs/shared/emacs/.emacs.d/vendor/refmt.el231
-rw-r--r--configs/shared/emacs/.emacs.d/vendor/slack-snippets.el228
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/casing.el46
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/fs-functions.el24
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/functions.el210
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/macros.el28
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el51
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el24
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el22
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el16
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el15
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el14
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el56
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el88
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el139
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el48
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el205
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el12
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el76
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el27
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el22
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el162
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/string-functions.el48
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/variables.el26
67 files changed, 0 insertions, 3264 deletions
diff --git a/configs/shared/emacs/.emacs.d/init.el b/configs/shared/emacs/.emacs.d/init.el
deleted file mode 100644
index a674ddc19a07..000000000000
--- a/configs/shared/emacs/.emacs.d/init.el
+++ /dev/null
@@ -1,26 +0,0 @@
-(require 'wpc-package "~/.emacs.d/wpc/packages/wpc-package.el")
-
-;; load order is intentional
-(require 'variables)
-(require 'wpc-misc)
-
-;; my libraries
-(require 'functions)
-(require 'string-functions)
-(require 'macros)
-(require 'casing)
-
-(require 'wpc-ui)
-(require 'wpc-keybindings)
-(require 'wpc-dired)
-(require 'wpc-terminal)
-(require 'wpc-org)
-(require 'wpc-company)
-(require 'wpc-flycheck)
-(require 'wpc-docker)
-(require 'wpc-lisp)
-(require 'wpc-haskell)
-(require 'wpc-elixir)
-(require 'wpc-nix)
-(require 'wpc-clojure)
-(require 'wpc-javascript)
diff --git a/configs/shared/emacs/.emacs.d/snippets/c-mode/stdio b/configs/shared/emacs/.emacs.d/snippets/c-mode/stdio
deleted file mode 100644
index 52bc717e470e..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/c-mode/stdio
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: <stdio.h>
-# key: sio
-# --
-#include <stdio.h>
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/c-mode/stdlib b/configs/shared/emacs/.emacs.d/snippets/c-mode/stdlib
deleted file mode 100644
index 5d44e8ed7989..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/c-mode/stdlib
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: <stdlib.h>
-# key: slb
-# --
-#include <stdlib.h>
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/c-mode/struct b/configs/shared/emacs/.emacs.d/snippets/c-mode/struct
deleted file mode 100644
index 6e9282f83c79..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/c-mode/struct
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: snippet -*-
-# name: struct
-# key: struct
-# --
-typedef struct $1 {
-  $2
-} $1_t;
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs b/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs
deleted file mode 100644
index 8ea7b8f07724..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- mode: snippet -*-
-# name: Elisp module docs
-# key: emd
-# --
-;;; `(-> (buffer-file-name) f-filename)` --- $2 -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; $3
-
-;;; Code:
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/provide-footer b/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/provide-footer
deleted file mode 100644
index 2a0bcc33f7bb..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/provide-footer
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- mode: snippet -*-
-# name: Provide footer
-# key: elf
-# --
-(provide '`(-> (buffer-file-name) f-filename f-no-ext)`)
-;;; `(-> (buffer-file-name) f-filename)` ends here
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/derive-safe-copy b/configs/shared/emacs/.emacs.d/snippets/haskell-mode/derive-safe-copy
deleted file mode 100644
index 95f7d9deecd0..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/derive-safe-copy
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Derive Safe Copy
-# key: dsc
-# --
-deriveSafeCopy 0 'base ''$1
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/import-qualified b/configs/shared/emacs/.emacs.d/snippets/haskell-mode/import-qualified
deleted file mode 100644
index 4c4db62a8a47..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/import-qualified
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Import qualified
-# key: iq
-# --
-import qualified $1 as $2
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/instance-defn b/configs/shared/emacs/.emacs.d/snippets/haskell-mode/instance-defn
deleted file mode 100644
index 10d194ce41f0..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/instance-defn
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- mode: snippet -*-
-# name: Instance
-# key: inst
-# --
-instance $1 where
-  $2 = $3
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/language-extension b/configs/shared/emacs/.emacs.d/snippets/haskell-mode/language-extension
deleted file mode 100644
index 9d6084acb40d..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/language-extension
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: language extension
-# key: lang
-# --
-{-# LANGUAGE $1 #-}
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/separator b/configs/shared/emacs/.emacs.d/snippets/haskell-mode/separator
deleted file mode 100644
index 1ab0d762b611..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/separator
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Separator
-# key: -
-# --
---------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/undefined b/configs/shared/emacs/.emacs.d/snippets/haskell-mode/undefined
deleted file mode 100644
index 7609f801f278..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/undefined
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Undefiend
-# key: nd
-# --
-undefined
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/html-mode/index-boilerplate b/configs/shared/emacs/.emacs.d/snippets/html-mode/index-boilerplate
deleted file mode 100644
index 3cea6ce003ba..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/html-mode/index-boilerplate
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- mode: snippet -*-
-# name: HTML index.html starter
-# key: html
-# --
-<!doctype html>
-
-<html lang="en">
-<head>
-  <meta charset="utf-8">
-  <title>$1</title>
-  <meta name="description" content="$2">
-  <meta name="author" content="William Carroll">
-  <link rel="stylesheet" href="index.css">
-</head>
-<body>
-  <script src="index.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/java-mode/public-static-void-main b/configs/shared/emacs/.emacs.d/snippets/java-mode/public-static-void-main
deleted file mode 100644
index 1839a27eb5c0..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/java-mode/public-static-void-main
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: snippet -*-
-# name: public static void main
-# key: psvm
-# --
-public static void main(String[] args) {
-    $1
-}
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/nix-mode/shell-nix b/configs/shared/emacs/.emacs.d/snippets/nix-mode/shell-nix
deleted file mode 100644
index 4c308bb51b3a..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/nix-mode/shell-nix
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- mode: snippet -*-
-# name: shell.nix boilerplate
-# key: import
-# --
-with import <nixpkgs> {};
-
-stdenv.mkDerivation {
-  name = "$1";
-  buildInputs = [
-    $2
-  ];
-}
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/org-mode/code-snippet b/configs/shared/emacs/.emacs.d/snippets/org-mode/code-snippet
deleted file mode 100644
index 4215b15992b6..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/org-mode/code-snippet
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: snippet -*-
-# name: Code Snippet
-# key: src
-# --
-#+BEGIN_SRC $1
-$2
-#+END_SRC
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/org-mode/href b/configs/shared/emacs/.emacs.d/snippets/org-mode/href
deleted file mode 100644
index ac65ea2e49be..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/org-mode/href
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Org mode URL
-# key: href
-# --
-[[$1][$2]]
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/python-mode/dunder-main b/configs/shared/emacs/.emacs.d/snippets/python-mode/dunder-main
deleted file mode 100644
index 4dd22dc0b2da..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/python-mode/dunder-main
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- mode: snippet -*-
-# name: Dunder main (__main__)
-# key: mn
-# --
-if __name__ == "__main__":
-    main()
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/python-mode/shebang b/configs/shared/emacs/.emacs.d/snippets/python-mode/shebang
deleted file mode 100644
index 0f45ae782d32..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/python-mode/shebang
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- mode: snippet -*-
-# name: shebang
-# key: shb
-# --
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
diff --git a/configs/shared/emacs/.emacs.d/snippets/python-mode/utf-8 b/configs/shared/emacs/.emacs.d/snippets/python-mode/utf-8
deleted file mode 100644
index 3babc730305a..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/python-mode/utf-8
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: utf-8
-# key: utf
-# --
-# -*- coding: utf-8 -*-
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/action-extractor b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/action-extractor
deleted file mode 100644
index 62834a29ab04..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/action-extractor
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: exactness
-# key: $x
-# --
-$Exact<$Call<typeof $1>>
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/console-log b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/console-log
deleted file mode 100644
index 82ec3fd8e379..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/console-log
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Console.log helper
-# key: clg
-# --
-console.log($1)
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-defn b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-defn
deleted file mode 100644
index 8e35e61fc2c4..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-defn
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: const definition
-# key: cn
-# --
-const $1 = '$2'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-function b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-function
deleted file mode 100644
index 13f2018f2269..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-function
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: snippet -*-
-# name: const function
-# key: cfn
-# --
-const $1 = ($2) => {
-  $3
-}
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/destructure-const b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/destructure-const
deleted file mode 100644
index 2a52c57c75cd..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/destructure-const
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Destructuring a const
-# key: cds
-# --
-const { $1 } = $2
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow
deleted file mode 100644
index 187a2efc5a7c..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Fat arrow function
-# key: fa
-# --
-=>
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow-function b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow-function
deleted file mode 100644
index 694914a83c95..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow-function
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: snippet -*-
-# name: Fat arrow function
-# key: faf
-# --
-() => {
-  $1
-}
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-destructured b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-destructured
deleted file mode 100644
index ded3ce163a93..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-destructured
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Import destructured
-# key: ids
-# --
-import { $1 } from '$2'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-react b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-react
deleted file mode 100644
index 0463f5cd5593..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-react
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: Import React dependency (ES6)
-# key: ir
-# --
-import React from 'react'
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-type b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-type
deleted file mode 100644
index fcd51f687b61..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-type
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: import type
-# key: ixt
-# --
-import type { $1 } from '$2'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-x-from-y b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-x-from-y
deleted file mode 100644
index 09fa6df50506..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-x-from-y
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: import x from y
-# key: ix
-# --
-import $1 from '$2'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-y b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-y
deleted file mode 100644
index 9f550e300d12..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-y
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: import y
-# key: iy
-# --
-import '$1'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-describe-test b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-describe-test
deleted file mode 100644
index ed382d4f74c4..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-describe-test
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- mode: snippet -*-
-# name: Jest describe/test block
-# key: dsc
-# --
-describe('$1', () => {
-  test('$2', () => {
-
-    expect($3).toEqual($4)
-  })
-})
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-test b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-test
deleted file mode 100644
index 12ca2e786ded..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-test
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: snippet -*-
-# name: Jest / Jasmine test
-# key: tst
-# --
-test('$1', () => {
-  expect($2).toBe($3)
-})
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/react-class-component b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/react-class-component
deleted file mode 100644
index f2a93a31d96d..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/react-class-component
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- mode: snippet -*-
-# name: React class extends
-# key: clz
-# --
-class $1 extends React.Component {
-  render() {
-    $2
-  }
-}
-
-export default $1
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/redux-action b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/redux-action
deleted file mode 100644
index d196f8ee809f..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/redux-action
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: redux-action
-# key: rax
-# --
-export const ${1:$$(lower->caps yas-text)} = '`(downcase (buffer-dirname))`/${1:$(caps->kebab yas-text)}'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/typed-redux-action b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/typed-redux-action
deleted file mode 100644
index a4ef0181cd4e..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/typed-redux-action
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: typed-redux-action
-# key: trax
-# --
-export const ${1:$$(lower->caps yas-text)}: '`(downcase (buffer-dirname))`/${1:$(caps->kebab yas-text)}' = '`(downcase (buffer-dirname))`/${1:$(caps->kebab yas-text)}'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/web-mode/index-boilerplate b/configs/shared/emacs/.emacs.d/snippets/web-mode/index-boilerplate
deleted file mode 100644
index b791cdf86fe5..000000000000
--- a/configs/shared/emacs/.emacs.d/snippets/web-mode/index-boilerplate
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- mode: snippet -*-
-# name: HTML index.html starter
-# key: html
-# --
-<!doctype html>
-
-<html lang="en">
-<head>
-  <meta charset="utf-8">
-  <title>$1</title>
-  <meta name="description" content="$2">
-  <meta name="author" content="William Carroll">
-  <link rel="stylesheet" href="index.css">
-</head>
-<body>
-  <script src="index.js"></script>
-</body>
-</html>
diff --git a/configs/shared/emacs/.emacs.d/tramp b/configs/shared/emacs/.emacs.d/tramp
deleted file mode 100644
index dcbfb28ed02f..000000000000
--- a/configs/shared/emacs/.emacs.d/tramp
+++ /dev/null
@@ -1,42 +0,0 @@
-;; -*- emacs-lisp -*- <18/11/04 17:19:20 /home/wpcarro/.emacs.d/tramp>
-;; Tramp connection history.  Don't change this file.
-;; You can delete it, forcing Tramp to reapply the checks.
-
-((["sudo" "root" "nixos" nil nil]
-  ("uname" "Linux 4.14.71")
-  ("locale" "LC_ALL=en_US.utf8")
-  ("test" "test")
-  ("remote-path"
-   ("/run/current-system/sw/bin" "/bin" "/usr/bin"))
-  ("remote-shell" "/bin/sh")
-  ("readlink" "\\readlink")
-  ("stat" nil)
-  ("perl-file-spec" t)
-  ("perl-cwd-realpath" t)
-  ("perl" "\\perl")
-  ("id" "/run/current-system/sw/bin/id")
-  ("gid-integer" 0)
-  ("file-exists" "test -e")
-  ("gid-string" "root")
-  ("uid-integer" 0)
-  ("git" "\\git")
-  ("~root" "/root")
-  ("env-u-option" t))
- (["ssh" nil "chords" nil nil]
-  ("uname" "Linux 4.4.0-138-generic")
-  ("locale" "LC_ALL=en_US.utf8")
-  ("test" "test")
-  ("remote-path"
-   ("/bin" "/usr/bin" "/sbin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin"))
-  ("remote-shell" "/bin/sh")
-  ("readlink" "\\readlink")
-  ("stat" nil)
-  ("perl-file-spec" t)
-  ("perl-cwd-realpath" t)
-  ("perl" "\\perl")
-  ("id" "/usr/bin/id")
-  ("gid-integer" 0)
-  ("gid-string" "root")
-  ("file-exists" "test -e")
-  ("ls" "/bin/ls --color=never")
-  ("ls-dired" t)))
diff --git a/configs/shared/emacs/.emacs.d/vendor/org-clubhouse.el b/configs/shared/emacs/.emacs.d/vendor/org-clubhouse.el
deleted file mode 100644
index ba1f004a2410..000000000000
--- a/configs/shared/emacs/.emacs.d/vendor/org-clubhouse.el
+++ /dev/null
@@ -1,365 +0,0 @@
-;;; private/grfn/org-clubhouse.el
-
-(require 'dash)
-(require 'dash-functional)
-(require 's)
-(require 'org)
-(require 'org-element)
-(require 'cl)
-
-;;;
-;;; Configuration
-;;;
-
-(defvar org-clubhouse-auth-token nil
-  "Authorization token for the Clubhouse API")
-
-(defvar org-clubhouse-team-name nil
-  "Team name to use in links to Clubhouse
-ie https://app.clubhouse.io/<TEAM_NAME>/stories")
-
-(defvar org-clubhouse-project-ids nil
-  "Specific list of project IDs to synchronize with clubhouse.
-If unset all projects will be synchronized")
-
-(defvar org-clubhouse-workflow-name "Default")
-
-(defvar org-clubhouse-state-alist
-  '(("LATER"  . "Unscheduled")
-    ("[ ]"    . "Ready for Development")
-    ("TODO"   . "Ready for Development")
-    ("OPEN"   . "Ready for Development")
-    ("ACTIVE" . "In Development")
-    ("PR"     . "Review")
-    ("DONE"   . "Merged")
-    ("[X]"    . "Merged")
-    ("CLOSED" . "Merged")))
-
-;;;
-;;; Utilities
-;;;
-
-(defun ->list (vec) (append vec nil))
-
-(defun reject-archived (item-list)
-  (-filter (lambda (item) (equal :json-false (alist-get 'archived item))) item-list))
-
-(defun alist->plist (key-map alist)
-  (->> key-map
-       (-map (lambda (key-pair)
-               (let ((alist-key (car key-pair))
-                     (plist-key (cdr key-pair)))
-                 (list plist-key (alist-get alist-key alist)))))
-       (-flatten-n 1)))
-
-(defun alist-get-equal (key alist)
-  "Like `alist-get', but uses `equal' instead of `eq' for comparing keys"
-  (->> alist
-       (-find (lambda (pair) (equal key (car pair))))
-       (cdr)))
-
-;;;
-;;; Org-element interaction
-;;;
-
-;; (defun org-element-find-headline ()
-;;   (let ((current-elt (org-element-at-point)))
-;;     (if (equal 'headline (car current-elt))
-;;         current-elt
-;;       (let* ((elt-attrs (cadr current-elt))
-;;              (parent (plist-get elt-attrs :post-affiliated)))
-;;         (goto-char parent)
-;;         (org-element-find-headline)))))
-
-(defun org-element-find-headline ()
-  (let ((current-elt (org-element-at-point)))
-    (when (equal 'headline (car current-elt))
-      (cadr current-elt))))
-
-(defun org-element-extract-clubhouse-id (elt)
-  (when-let ((clubhouse-id-link (plist-get elt :CLUBHOUSE-ID)))
-    (string-match
-     (rx "[[" (one-or-more anything) "]"
-         "[" (group (one-or-more digit)) "]]")
-     clubhouse-id-link)
-    (string-to-int (match-string 1 clubhouse-id-link))))
-
-
-
-(defun org-element-clubhouse-id ()
-  (org-element-extract-clubhouse-id
-   (org-element-find-headline)))
-
-;;;
-;;; API integration
-;;;
-
-(defvar org-clubhouse-base-url* "https://api.clubhouse.io/api/v2")
-
-(defun org-clubhouse-auth-url (url)
-  (concat url
-          "?"
-          (url-build-query-string
-           `(("token" ,org-clubhouse-auth-token)))))
-
-(defun org-clubhouse-baseify-url (url)
-  (if (s-starts-with? org-clubhouse-base-url* url) url
-    (concat org-clubhouse-base-url*
-            (if (s-starts-with? "/" url) url
-              (concat "/" url)))))
-
-(defun org-clubhouse-request (method url &optional data)
-  (message "%s %s %s" method url (prin1-to-string data))
-  (let* ((url-request-method method)
-         (url-request-extra-headers
-          '(("Content-Type" . "application/json")))
-         (url-request-data data)
-         (buf))
-
-    (setq url (-> url
-                  org-clubhouse-baseify-url
-                  org-clubhouse-auth-url))
-
-    (setq buf (url-retrieve-synchronously url))
-
-    (with-current-buffer buf
-      (goto-char url-http-end-of-headers)
-      (prog1 (json-read) (kill-buffer)))))
-
-(cl-defun to-id-name-pairs
-    (seq &optional (id-attr 'id) (name-attr 'name))
-  (->> seq
-       ->list
-       (-map (lambda (resource)
-          (cons (alist-get id-attr   resource)
-                (alist-get name-attr resource))))))
-
-(cl-defun org-clubhouse-fetch-as-id-name-pairs
-    (resource &optional
-              (id-attr 'id)
-              (name-attr 'name))
-  "Returns the given resource from clubhouse as (id . name) pairs"
-  (let ((resp-json (org-clubhouse-request "GET" resource)))
-    (-> resp-json
-        ->list
-        reject-archived
-        (to-id-name-pairs id-attr name-attr))))
-
-(defun org-clubhouse-link-to-story (story-id)
-  (format "https://app.clubhouse.io/%s/story/%d"
-          org-clubhouse-team-name
-          story-id))
-
-(defun org-clubhouse-link-to-epic (epic-id)
-  (format "https://app.clubhouse.io/%s/epic/%d"
-          org-clubhouse-team-name
-          epic-id))
-
-(defun org-clubhouse-link-to-project (project-id)
-  (format "https://app.clubhouse.io/%s/project/%d"
-          org-clubhouse-team-name
-          project-id))
-
-;;;
-;;; Caching
-;;;
-
-
-
-(defvar org-clubhouse-cache-clear-functions ())
-
-(defmacro defcache (name &optional docstring &rest body)
-  (let* ((doc (when docstring (list docstring)))
-         (cache-var-name (intern (concat (symbol-name name)
-                                         "-cache")))
-         (clear-cache-function-name
-          (intern (concat "clear-" (symbol-name cache-var-name)))))
-    `(progn
-       (defvar ,cache-var-name :no-cache)
-       (defun ,name ()
-         ,@doc
-         (when (equal :no-cache ,cache-var-name)
-           (setq ,cache-var-name (progn ,@body)))
-         ,cache-var-name)
-       (defun ,clear-cache-function-name ()
-         (interactive)
-         (setq ,cache-var-name :no-cache))
-
-       (push (quote ,clear-cache-function-name)
-             org-clubhouse-cache-clear-functions))))
-
-(defun org-clubhouse-clear-cache ()
-  (interactive)
-  (-map #'funcall org-clubhouse-cache-clear-functions))
-
-;;;
-;;; API resource functions
-;;;
-
-(defcache org-clubhouse-projects
-  "Returns projects as (project-id . name)"
-  (org-clubhouse-fetch-as-id-name-pairs "projects"))
-
-(defcache org-clubhouse-epics
-  "Returns projects as (project-id . name)"
-  (org-clubhouse-fetch-as-id-name-pairs "epics"))
-
-(defcache org-clubhouse-workflow-states
-  "Returns worflow states as (name . id) pairs"
-  (let* ((resp-json (org-clubhouse-request "GET" "workflows"))
-         (workflows (->list resp-json))
-         ;; just assume it exists, for now
-         (workflow  (-find (lambda (workflow)
-                             (equal org-clubhouse-workflow-name
-                                    (alist-get 'name workflow)))
-                           workflows))
-         (states    (->list (alist-get 'states workflow))))
-    (to-id-name-pairs states
-                      'name
-                      'id)))
-
-(defun org-clubhouse-stories-in-project (project-id)
-  "Returns the stories in the given project as org bugs"
-  (let ((resp-json (org-clubhouse-request "GET" (format "/projects/%d/stories" project-id))))
-    (->> resp-json ->list reject-archived
-         (-reject (lambda (story) (equal :json-true (alist-get 'completed story))))
-         (-map (lambda (story)
-                 (cons
-                  (cons 'status
-                        (cond
-                         ((equal :json-true (alist-get 'started story))
-                          'started)
-                         ((equal :json-true (alist-get 'completed story))
-                          'completed)
-                         ('t
-                          'open)))
-                  story)))
-         (-map (-partial #'alist->plist
-                         '((name . :title)
-                           (id . :id)
-                           (status . :status)))))))
-
-;;;
-;;; Story creation
-;;;
-
-(cl-defun org-clubhouse-create-story-internal
-    (title &key project-id epic-id)
-  (assert (and (stringp title)
-               (integerp project-id)
-               (or (null epic-id) (integerp epic-id))))
-  (org-clubhouse-request
-   "POST"
-   "stories"
-   (json-encode
-    `((name . ,title)
-      (project_id . ,project-id)
-      (epic_id . ,epic-id)))))
-
-(defun org-clubhouse-prompt-for-project (cb)
-  (ivy-read
-   "Select a project: "
-   (-map #'cdr (org-clubhouse-projects))
-   :require-match t
-   :history 'org-clubhouse-project-history
-   :action (lambda (selected)
-             (let ((project-id
-                    (->> (org-clubhouse-projects)
-                         (-find (lambda (proj)
-                                    (string-equal (cdr proj) selected)))
-                         car)))
-               (message "%d" project-id)
-               (funcall cb project-id)))))
-
-(defun org-clubhouse-prompt-for-epic (cb)
-  (ivy-read
-   "Select an epic: "
-   (-map #'cdr (org-clubhouse-epics))
-   :history 'org-clubhouse-epic-history
-   :action (lambda (selected)
-             (let ((epic-id
-                    (->> (org-clubhouse-epics)
-                         (-find (lambda (proj)
-                                    (string-equal (cdr proj) selected)))
-                         car)))
-               (message "%d" epic-id)
-               (funcall cb epic-id)))))
-
-(defun org-clubhouse-populate-created-story (story)
-  (let ((elt        (org-element-find-headline))
-        (story-id   (alist-get 'id story))
-        (epic-id    (alist-get 'epic_id story))
-        (project-id (alist-get 'project_id story)))
-
-    (org-set-property "clubhouse-id"
-                      (org-make-link-string
-                       (org-clubhouse-link-to-story story-id)
-                       (number-to-string story-id)))
-
-    (org-set-property "clubhouse-epic"
-                      (org-make-link-string
-                       (org-clubhouse-link-to-epic epic-id)
-                       (alist-get epic-id (org-clubhouse-epics))))
-
-    (org-set-property "clubhouse-project"
-                      (org-make-link-string
-                       (org-clubhouse-link-to-project project-id)
-                       (alist-get project-id (org-clubhouse-projects))))
-
-    (org-todo "TODO")))
-
-(defun org-clubhouse-create-story ()
-  (interactive)
-  ;; (message (org-element-find-headline))
-  (when-let ((elt (org-element-find-headline))
-             (title (plist-get elt :title)))
-    (if (plist-get elt :CLUBHOUSE-ID)
-        (message "This headline is already a clubhouse story!")
-      (org-clubhouse-prompt-for-project
-       (lambda (project-id)
-         (when project-id
-           (org-clubhouse-prompt-for-epic
-            (lambda (epic-id)
-              (let* ((story (org-clubhouse-create-story-internal
-                             title
-                             :project-id project-id
-                             :epic-id epic-id)))
-                (org-clubhouse-populate-created-story story))))))))))
-
-;;;
-;;; Story updates
-;;;
-
-(cl-defun org-clubhouse-update-story-internal
-    (story-id &rest attrs)
-  (assert (and (integerp story-id)
-               (listp attrs)))
-  (org-clubhouse-request
-   "PUT"
-   (format "stories/%d" story-id)
-   (json-encode attrs)))
-
-(defun org-clubhouse-update-status ()
-  (when-let (clubhouse-id (org-element-clubhouse-id))
-    (let* ((elt (org-element-find-headline))
-           (todo-keyword (-> elt (plist-get :todo-keyword) (substring-no-properties))))
-      (message todo-keyword)
-      (when-let ((clubhouse-workflow-state
-                  (alist-get-equal todo-keyword org-clubhouse-state-alist))
-                 (workflow-state-id
-                  (alist-get-equal clubhouse-workflow-state (org-clubhouse-workflow-states))))
-        (org-clubhouse-update-story-internal
-         clubhouse-id
-         :workflow_state_id workflow-state-id)
-        (message "Successfully updated clubhouse status to \"%s\""
-                 clubhouse-workflow-state)))))
-
-(define-minor-mode org-clubhouse-mode
-  :init-value nil
-  :group 'org
-  :lighter "Org-Clubhouse"
-  :keymap '()
-  (add-hook 'org-after-todo-state-change-hook
-            'org-clubhouse-update-status
-            nil
-            t))
diff --git a/configs/shared/emacs/.emacs.d/vendor/reason-indent.el b/configs/shared/emacs/.emacs.d/vendor/reason-indent.el
deleted file mode 100644
index 8fd3c9425866..000000000000
--- a/configs/shared/emacs/.emacs.d/vendor/reason-indent.el
+++ /dev/null
@@ -1,304 +0,0 @@
-;;; reason-indent.el --- Indentation functions for ReasonML -*-lexical-binding: t-*-
-
-;; Portions Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
-
-;;; Commentary:
-
-;; Indentation functions for Reason.
-
-;;; Code:
-
-(defconst reason-re-ident "[[:word:][:multibyte:]_][[:word:][:multibyte:]_[:digit:]]*")
-
-(defcustom reason-indent-offset 2
-  "Indent Reason code by this number of spaces."
-  :type 'integer
-  :group 'reason-mode
-  :safe #'integerp)
-
-(defun reason-looking-back-str (str)
-  "Like `looking-back' but for fixed strings rather than regexps.
-Works around some regexp slowness.
-Argument STR string to search for."
-  (let ((len (length str)))
-    (and (> (point) len)
-         (equal str (buffer-substring-no-properties (- (point) len) (point))))))
-
-(defun reason-paren-level ()
-  "Get the level of nesting inside parentheses."
-  (nth 0 (syntax-ppss)))
-
-(defun reason-in-str-or-cmnt ()
-  "Return whether point is currently inside a string or a comment."
-  (nth 8 (syntax-ppss)))
-
-(defun reason-rewind-past-str-cmnt ()
-  "Rewind past string or comment."
-  (goto-char (nth 8 (syntax-ppss))))
-
-(defun reason-rewind-irrelevant ()
-  "Rewind past irrelevant characters (whitespace of inside comments)."
-  (interactive)
-  (let ((starting (point)))
-    (skip-chars-backward "[:space:]\n")
-    (if (reason-looking-back-str "*/") (backward-char))
-    (if (reason-in-str-or-cmnt)
-        (reason-rewind-past-str-cmnt))
-    (if (/= starting (point))
-        (reason-rewind-irrelevant))))
-
-(defun reason-align-to-expr-after-brace ()
-  "Align the expression at point to the expression after the previous brace."
-  (save-excursion
-    (forward-char)
-    ;; We don't want to indent out to the open bracket if the
-    ;; open bracket ends the line
-    (when (not (looking-at "[[:blank:]]*\\(?://.*\\)?$"))
-      (when (looking-at "[[:space:]]")
-        (forward-word 1)
-        (backward-word 1))
-      (current-column))))
-
-(defun reason-align-to-prev-expr ()
-  "Align the expression at point to the previous expression."
-  (let ((alignment (save-excursion
-                     (forward-char)
-                     ;; We don't want to indent out to the open bracket if the
-                     ;; open bracket ends the line
-                     (when (not (looking-at "[[:blank:]]*\\(?://.*\\)?$"))
-                       (if (looking-at "[[:space:]]")
-                           (progn
-                             (forward-word 1)
-                             (backward-word 1))
-                         (backward-char))
-                       (current-column)))))
-    (if (not alignment)
-        (save-excursion
-          (forward-char)
-          (forward-line)
-          (back-to-indentation)
-          (current-column))
-      alignment)))
-
-;;; Start of a reason binding
-(defvar reason-binding
-  (regexp-opt '("let" "type" "module" "fun")))
-
-(defun reason-beginning-of-defun (&optional arg)
-  "Move backward to the beginning of the current defun.
-
-With ARG, move backward multiple defuns.  Negative ARG means
-move forward.
-
-This is written mainly to be used as `beginning-of-defun-function'.
-Don't move to the beginning of the line.  `beginning-of-defun',
-which calls this, does that afterwards."
-  (interactive "p")
-  (re-search-backward (concat "^\\(" reason-binding "\\)\\_>")
-                      nil 'move (or arg 1)))
-
-(defun reason-end-of-defun ()
-  "Move forward to the next end of defun.
-
-With argument, do it that many times.
-Negative argument -N means move back to Nth preceding end of defun.
-
-Assume that this is called after ‘beginning-of-defun’.  So point is
-at the beginning of the defun body.
-
-This is written mainly to be used as `end-of-defun-function' for Reason."
-  (interactive)
-  ;; Find the opening brace
-  (if (re-search-forward "[{]" nil t)
-      (progn
-        (goto-char (match-beginning 0))
-        ;; Go to the closing brace
-        (condition-case nil
-            (forward-sexp)
-          (scan-error
-           ;; The parentheses are unbalanced; instead of being unable to fontify, just jump to the end of the buffer
-           (goto-char (point-max)))))
-    ;; There is no opening brace, so consider the whole buffer to be one "defun"
-    (goto-char (point-max))))
-
-(defun reason-rewind-to-beginning-of-current-level-expr ()
-  "Rewind to the beginning of the expression on the current level of nesting."
-  (interactive)
-  (let ((current-level (reason-paren-level)))
-    (back-to-indentation)
-    (when (looking-at "=>")
-      (reason-rewind-irrelevant)
-      (back-to-indentation))
-    (while (> (reason-paren-level) current-level)
-      (backward-up-list)
-      (back-to-indentation))))
-
-(defun reason-mode-indent-line ()
-  "Indent current line."
-  (interactive)
-  (let ((indent
-         (save-excursion
-           (back-to-indentation)
-           ;; Point is now at beginning of current line
-           (let* ((level (reason-paren-level))
-                  (baseline
-                   ;; Our "baseline" is one level out from the indentation of the expression
-                   ;; containing the innermost enclosing opening bracket. That
-                   ;; way if we are within a block that has a different
-                   ;; indentation than this mode would give it, we still indent
-                   ;; the inside of it correctly relative to the outside.
-                   (if (= 0 level)
-                       0
-                     (save-excursion
-                       (reason-rewind-irrelevant)
-                       (if (save-excursion
-                             (reason-rewind-to-beginning-of-current-level-expr)
-                             (looking-at "<"))
-                           (progn
-                             (reason-rewind-to-beginning-of-current-level-expr)
-                             (current-column))
-                           (progn
-                             (backward-up-list)
-                             (reason-rewind-to-beginning-of-current-level-expr)
-
-                             (cond
-                              ((looking-at "switch")
-                               (current-column))
-
-                              ((looking-at "|")
-                               (+ (current-column) (* reason-indent-offset 2)))
-
-                              (t
-                               (let ((current-level (reason-paren-level)))
-                                 (save-excursion
-                                   (while (and (= current-level (reason-paren-level))
-                                               (not (looking-at reason-binding)))
-                                     (reason-rewind-irrelevant)
-                                     (reason-rewind-to-beginning-of-current-level-expr))
-                                   (+ (current-column) reason-indent-offset)))))))))))
-             (cond
-              ;; A function return type is indented to the corresponding function arguments
-              ((looking-at "=>")
-               (+ baseline reason-indent-offset))
-
-              ((reason-in-str-or-cmnt)
-               (cond
-                ;; In the end of the block -- align with star
-                ((looking-at "*/") (+ baseline 1))
-                ;; Indent to the following shape:
-                ;; /* abcd
-                ;;  * asdf
-                ;;  */
-                ;;
-                ((looking-at "*") (+ baseline 1))
-                ;; Indent to the following shape:
-                ;; /* abcd
-                ;;    asdf
-                ;;  */
-                ;;
-                (t (+ baseline (+ reason-indent-offset 1)))))
-
-              ((looking-at "</") (- baseline reason-indent-offset))
-
-              ;; A closing brace is 1 level unindented
-              ((looking-at "}\\|)\\|\\]")
-               (save-excursion
-                 (reason-rewind-irrelevant)
-                 (let ((jsx? (reason-looking-back-str ">")))
-                   (backward-up-list)
-                   (reason-rewind-to-beginning-of-current-level-expr)
-                   (cond
-                    ((looking-at "switch") baseline)
-
-                    (jsx? (current-column))
-
-                    (t (- baseline reason-indent-offset))))))
-
-              ;; Doc comments in /** style with leading * indent to line up the *s
-              ((and (nth 4 (syntax-ppss)) (looking-at "*"))
-               (+ 1 baseline))
-
-              ;; If we're in any other token-tree / sexp, then:
-              (t
-               (or
-                ;; If we are inside a pair of braces, with something after the
-                ;; open brace on the same line and ending with a comma, treat
-                ;; it as fields and align them.
-                (when (> level 0)
-                  (save-excursion
-                    (reason-rewind-irrelevant)
-                    (backward-up-list)
-                    ;; Point is now at the beginning of the containing set of braces
-                    (reason-align-to-expr-after-brace)))
-
-                (progn
-                  (back-to-indentation)
-                  (cond ((looking-at (regexp-opt '("and" "type")))
-                         baseline)
-                        ((save-excursion
-                           (reason-rewind-irrelevant)
-                           (= (point) 1))
-                         baseline)
-                        ((save-excursion
-                           (while (looking-at "|")
-                             (reason-rewind-irrelevant)
-                             (back-to-indentation))
-                           (looking-at (regexp-opt '("type"))))
-                         (+ baseline reason-indent-offset))
-                        ((looking-at "|\\|/[/*]")
-                         baseline)
-                        ((and (> level 0)
-                              (save-excursion
-                                (reason-rewind-irrelevant)
-                                (backward-up-list)
-                                (reason-rewind-to-beginning-of-current-level-expr)
-                                (looking-at "switch")))
-                         (+ baseline reason-indent-offset))
-                        ((save-excursion
-                           (reason-rewind-irrelevant)
-                           (looking-back "[{;,\\[(]" (- (point) 2)))
-                         baseline)
-                        ((and
-                          (save-excursion
-                            (reason-rewind-irrelevant)
-                            (reason-rewind-to-beginning-of-current-level-expr)
-                            (and (looking-at reason-binding)
-                                 (not (progn
-                                        (forward-sexp)
-                                        (forward-sexp)
-                                        (skip-chars-forward "[:space:]\n")
-                                        (looking-at "=")))))
-                          (not (save-excursion
-                                 (skip-chars-backward "[:space:]\n")
-                                 (reason-looking-back-str "=>"))))
-                         (save-excursion
-                           (reason-rewind-irrelevant)
-                           (backward-sexp)
-                           (reason-align-to-prev-expr)))
-                        ((save-excursion
-                           (reason-rewind-irrelevant)
-                           (looking-back "<\/.*?>" (- (point) 30)))
-                         baseline)
-                        (t
-                         (save-excursion
-                           (reason-rewind-irrelevant)
-                           (reason-rewind-to-beginning-of-current-level-expr)
-
-                           (if (looking-at "|")
-                               baseline
-                             (+ baseline reason-indent-offset)))))
-                  ;; Point is now at the beginning of the current line
-                  ))))))))
-
-    (when indent
-      ;; If we're at the beginning of the line (before or at the current
-      ;; indentation), jump with the indentation change.  Otherwise, save the
-      ;; excursion so that adding the indentations will leave us at the
-      ;; equivalent position within the line to where we were before.
-      (if (<= (current-column) (current-indentation))
-          (indent-line-to indent)
-        (save-excursion (indent-line-to indent))))))
-
-(provide 'reason-indent)
-
-;;; reason-indent.el ends here
diff --git a/configs/shared/emacs/.emacs.d/vendor/reason-interaction.el b/configs/shared/emacs/.emacs.d/vendor/reason-interaction.el
deleted file mode 100644
index 6ceaed1e9340..000000000000
--- a/configs/shared/emacs/.emacs.d/vendor/reason-interaction.el
+++ /dev/null
@@ -1,216 +0,0 @@
-;;; reason-interaction.el --- Phrase navitagion for rtop -*-lexical-binding: t-*-
-
-;; Portions Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
-
-;;; Commentary:
-
-;; Phrase navigation for utop and maybe other REPLs.
-
-;; The utop compatibility layer for Reason was mainly taken from:
-;; https://github.com/ocaml/tuareg/blob/master/tuareg-light.el (big thanks!)
-
-;;; Code:
-
-(defun reason-backward-char (&optional step)
-  "Go back one char.
-Similar to `backward-char` but it does not signal errors
-`beginning-of-buffer` and `end-of-buffer`.  It optionally takes a
-STEP parameter for jumping back more than one character."
-  (when step (goto-char (- (point) step))
-        (goto-char (1- (point)))))
-
-(defun reason-forward-char (&optional step)
-  "Go forward one char.
-Similar to `forward-char` but it does not signal errors
-`beginning-of-buffer` and `end-of-buffer`.  It optionally takes a
-STEP parameter for jumping back more than one character."
-  (when step (goto-char (+ (point) step))
-    (goto-char (1+ (point)))))
-
-(defun reason-in-literal-p ()
-  "Return non-nil if point is inside an Reason literal."
-  (nth 3 (syntax-ppss)))
-
-(defconst reason-comment-delimiter-regexp "\\*/\\|/\\*"
-  "Regex for identify either open or close comment delimiters.")
-
-(defun reason-in-between-comment-chars-p ()
-  "Return non-nil iff point is in between the comment delimiter chars.
-It returns non-nil if point is between the chars only (*|/ or /|*
-where | is point)."
-  (and (not (bobp)) (not (eobp))
-       (or (and (char-equal ?/ (char-before)) (char-equal ?* (char-after)))
-           (and (char-equal ?* (char-before)) (char-equal ?/ (char-after))))))
-
-(defun reason-looking-at-comment-delimiters-p ()
-  "Return non-nil iff point in between comment delimiters."
-  (looking-at-p reason-comment-delimiter-regexp))
-
-(defun reason-in-between-comment-delimiters-p ()
-  "Return non-nil if inside /* and */."
-  (nth 4 (syntax-ppss)))
-
-(defun reason-in-comment-p ()
-  "Return non-nil iff point is inside or right before a comment."
-  (or (reason-in-between-comment-delimiters-p)
-      (reason-in-between-comment-chars-p)
-      (reason-looking-at-comment-delimiters-p)))
-
-(defun reason-beginning-of-literal-or-comment ()
-  "Skip to the beginning of the current literal or comment (or buffer)."
-  (interactive)
-  (goto-char (or (nth 8 (syntax-ppss)) (point))))
-
-(defun reason-inside-block-scope-p ()
-  "Skip to the beginning of the current literal or comment (or buffer)."
-  (and (> (nth 0 (syntax-ppss)) 0)
-       (let ((delim-start (nth 1 (syntax-ppss))))
-         (save-excursion
-           (goto-char delim-start)
-           (char-equal ?{ (following-char))))))
-
-(defun reason-at-phrase-break-p ()
-  "Is the underlying `;' a phrase break?"
-  ;; Difference from OCaml, the phrase separator is a single semi-colon
-  (and (not (eobp))
-       (char-equal ?\; (following-char))))
-
-(defun reason-skip-to-close-delimiter (&optional limit)
-  "Skip to the end of a Reason block.
-It basically calls `re-search-forward` in order to go to any
-closing delimiter, not concerning itself with balancing of any
-sort.  Client code needs to check that.
-LIMIT is passed to `re-search-forward` directly."
-  (re-search-forward "\\s)" limit 'move))
-
-(defun reason-skip-back-to-open-delimiter (&optional limit)
-  "Skip to the beginning of a Reason block backwards.
-It basically calls `re-search-backward` in order to go to any
-opening delimiter, not concerning itself with balancing of any
-sort.  Client code needs to check that.
-LIMIT is passed to `re-search-backward` directly."
-  (re-search-backward "\\s(" limit 'move))
-
-(defun reason-find-phrase-end ()
-  "Skip to the end of a phrase."
-  (while (and (not (eobp))
-              (not (reason-at-phrase-break-p)))
-    (if (re-search-forward ";" nil 'move)
-        (progn (when (reason-inside-block-scope-p)
-                 (reason-skip-to-close-delimiter))
-               (goto-char (1- (point))))
-      ;; avoid infinite loop at the end of the buffer
-      (re-search-forward "[[:space:]\\|\n]+" nil 'move)))
-  (min (goto-char (1+ (point))) (point-max)))
-
-(defun reason-skip-blank-and-comments ()
-  "Skip blank spaces and comments."
-  (cond
-   ((eobp) (point))
-   ((or (reason-in-between-comment-chars-p)
-        (reason-looking-at-comment-delimiters-p)) (progn
-                                                    (reason-forward-char 1)
-                                                    (reason-skip-blank-and-comments)))
-   ((reason-in-between-comment-delimiters-p) (progn
-                                               (search-forward "*/" nil t)
-                                               (reason-skip-blank-and-comments)))
-   ((eolp) (progn
-             (reason-forward-char 1)
-             (reason-skip-blank-and-comments)))
-   (t (progn (skip-syntax-forward " ")
-             (point)))))
-
-(defun reason-skip-back-blank-and-comments ()
-  "Skip blank spaces and comments backwards."
-  (cond
-   ((bobp) (point))
-   ((looking-back reason-comment-delimiter-regexp) (progn
-                                                     (reason-backward-char 1)
-                                                     (reason-skip-back-blank-and-comments)))
-   ((reason-in-between-comment-delimiters-p) (progn
-                                               (search-backward "/*" nil t)
-                                               (reason-backward-char 1)
-                                               (reason-skip-back-blank-and-comments)))
-   ((or (reason-in-between-comment-chars-p)
-        (reason-looking-at-comment-delimiters-p)) (progn
-                                                    (reason-backward-char 1)
-                                                    (reason-skip-back-blank-and-comments)))
-   ((bolp) (progn
-             (reason-backward-char 1)
-             (reason-skip-back-blank-and-comments)))
-   (t (progn (skip-syntax-backward " ")
-             (point)))))
-
-(defun reason-ro (&rest words)
-  "Build a regex matching iff at least a word in WORDS is present."
-  (concat "\\<" (regexp-opt words t) "\\>"))
-
-(defconst reason-find-phrase-beginning-regexp
-  (concat (reason-ro "end" "type" "module" "sig" "struct" "class"
-                     "exception" "open" "let")
-          "\\|^#[ \t]*[a-z][_a-z]*\\>\\|;"))
-
-(defun reason-at-phrase-start-p ()
-  "Return t if is looking at the beginning of a phrase.
-A phrase starts when a toplevel keyword is at the beginning of a line."
-  (or (looking-at "#")
-      (looking-at reason-find-phrase-beginning-regexp)))
-
-(defun reason-find-phrase-beginning-backward ()
-  "Find the beginning of a phrase and return point.
-It scans code backwards, therefore the caller can assume that the
-beginning of the phrase (if found) is always before the starting
-point.  No error is signalled and (point-min) is returned when a
-phrease cannot be found."
-  (beginning-of-line)
-  (while (and (not (bobp)) (not (reason-at-phrase-start-p)))
-    (if (reason-inside-block-scope-p)
-        (reason-skip-back-to-open-delimiter)
-      (re-search-backward reason-find-phrase-beginning-regexp nil 'move)))
-  (point))
-
-(defun reason-discover-phrase ()
-  "Discover a Reason phrase in the buffer."
-  ;; TODO reason-with-internal-syntax ;; tuareg2 modifies the syntax table (removed for now)
-  ;; TODO stop-at-and feature for phrase detection (do we need it?)
-  ;; TODO tuareg2 has some custom logic for module and class (do we need it?)
-  (save-excursion
-    (let ((case-fold-search nil))
-      (reason-skip-blank-and-comments)
-      (list (reason-find-phrase-beginning-backward) ;; beginning
-            (reason-find-phrase-end)                ;; end
-            (save-excursion                         ;; end-with-comment
-              (reason-skip-blank-and-comments)
-              (point))))))
-
-(defun reason-discover-phrase-debug ()
-  "Discover a Reason phrase in the buffer (debug mode)."
-  (let ((triple (reason-discover-phrase)))
-    (message (concat "Evaluating: \"" (reason-fetch-phrase triple) "\""))
-    triple))
-
-(defun reason-fetch-phrase (triple)
-  "Fetch the phrase text given a TRIPLE."
-  (let* ((start (nth 0 triple))
-         (end (nth 1 triple))) ;; we don't need end-with-comment
-    (buffer-substring-no-properties start end)))
-
-(defun reason-next-phrase ()
-  "Skip to the beginning of the next phrase."
-  (cond
-   ((reason-at-phrase-start-p) (point))
-   ((eolp) (progn
-             (forward-char 1)
-             (reason-skip-blank-and-comments)
-             (reason-next-phrase)))
-   ((reason-inside-block-scope-p) (progn (reason-skip-to-close-delimiter)
-                                         (reason-next-phrase)))
-   ((looking-at ";") (progn
-                       (forward-char 1)
-                       (reason-next-phrase)))
-   (t (progn (end-of-line)
-             (reason-next-phrase)))))
-
-(provide 'reason-interaction)
-
-;;; reason-interaction.el ends here
diff --git a/configs/shared/emacs/.emacs.d/vendor/reason-mode.el b/configs/shared/emacs/.emacs.d/vendor/reason-mode.el
deleted file mode 100644
index 789735955db2..000000000000
--- a/configs/shared/emacs/.emacs.d/vendor/reason-mode.el
+++ /dev/null
@@ -1,242 +0,0 @@
-;;; reason-mode.el --- A major mode for editing ReasonML -*-lexical-binding: t-*-
-;; Portions Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
-
-;; Version: 0.4.0
-;; Author: Mozilla
-;; Url: https://github.com/reasonml-editor/reason-mode
-;; Keywords: languages, ocaml
-;; Package-Requires: ((emacs "24.3"))
-
-;; This file is NOT part of GNU Emacs.
-
-;; This file is distributed under the terms of both the MIT license and the
-;; Apache License (version 2.0).
-
-;;; Commentary:
-;; This project provides useful functions and helpers for developing code
-;; using the Reason programming language (https://facebook.github.io/reason).
-;;
-;; Reason is an umbrella project that provides a curated layer for OCaml.
-;;
-;; It offers:
-;;  - A new, familiar syntax for the battle-tested language that is OCaml.
-;;  - A workflow for compiling to JavaScript and native code.
-;;  - A set of friendly documentations, libraries and utilities.
-;;
-;; See the README.md for more details.
-
-;;; Code:
-
-(require 'reason-indent)
-(require 'refmt)
-(require 'reason-interaction)
-
-(eval-when-compile (require 'rx)
-                   (require 'compile)
-                   (require 'url-vars))
-
-;; Syntax definitions and helpers
-(defvar reason-mode-syntax-table
-  (let ((table (make-syntax-table)))
-
-    ;; Operators
-    (dolist (i '(?+ ?- ?* ?/ ?& ?| ?^ ?! ?< ?> ?~ ?@))
-      (modify-syntax-entry i "." table))
-
-    ;; Strings
-    (modify-syntax-entry ?\" "\"" table)
-    (modify-syntax-entry ?\\ "\\" table)
-    (modify-syntax-entry ?\' "_"  table)
-
-    ;; Comments
-    (modify-syntax-entry ?/  ". 124b" table)
-    (modify-syntax-entry ?*  ". 23n"  table)
-    (modify-syntax-entry ?\n "> b"    table)
-    (modify-syntax-entry ?\^m "> b"   table)
-
-    table))
-
-(defgroup reason nil
-  "Support for Reason code."
-  :link '(url-link "http://facebook.github.io/reason/")
-  :group 'languages)
-
-(defcustom reason-mode-hook nil
-  "Hook called by `reason-mode'."
-  :type 'hook
-  :group 'reason)
-
-;; Font-locking definitions and helpers
-(defconst reason-mode-keywords
-  '("and" "as"
-    "else" "external"
-    "fun" "for"
-    "if" "impl" "in" "include"
-    "let"
-    "module" "match" "mod" "move" "mutable"
-    "open"
-    "priv" "pub"
-    "rec" "ref" "return"
-    "self" "static" "switch" "struct" "super"
-    "trait" "type"
-    "use"
-    "virtual"
-    "where" "when" "while"))
-
-(defconst reason-mode-consts
-  '("true" "false"))
-
-(defconst reason-special-types
-  '("int" "float" "string" "char"
-    "bool" "unit" "list" "array" "exn"
-    "option" "ref"))
-
-(defconst reason-camel-case
-  (rx symbol-start
-      (group upper (0+ (any word nonascii digit "_")))
-      symbol-end))
-
-(eval-and-compile
-  (defconst reason--char-literal-rx
-    (rx (seq (group "'")
-             (or (seq "\\" anything)
-                 (not (any "'\\")))
-             (group "'")))))
-
-(defun reason-re-word (inner)
-  "Build a word regexp given INNER."
-  (concat "\\<" inner "\\>"))
-
-(defun reason-re-grab (inner)
-  "Build a grab regexp given INNER."
-  (concat "\\(" inner "\\)"))
-
-(defun reason-regexp-opt-symbols (words)
-  "Like `(regexp-opt words 'symbols)`, but will work on Emacs 23.
-See rust-mode PR #42.
-Argument WORDS argument to pass to `regexp-opt`."
-  (concat "\\_<" (regexp-opt words t) "\\_>"))
-
-;;; Syntax highlighting for Reason
-(defvar reason-font-lock-keywords
-  `((,(reason-regexp-opt-symbols reason-mode-keywords) . font-lock-keyword-face)
-    (,(reason-regexp-opt-symbols reason-special-types) . font-lock-builtin-face)
-    (,(reason-regexp-opt-symbols reason-mode-consts) . font-lock-constant-face)
-
-    (,reason-camel-case 1 font-lock-type-face)
-
-    ;; Field names like `foo:`, highlight excluding the :
-    (,(concat (reason-re-grab reason-re-ident) ":[^:]") 1 font-lock-variable-name-face)
-    ;; Module names like `foo::`, highlight including the ::
-    (,(reason-re-grab (concat reason-re-ident "::")) 1 font-lock-type-face)
-    ;; Name punned labeled args like ::foo
-    (,(concat "[[:space:]]+" (reason-re-grab (concat "::" reason-re-ident))) 1 font-lock-type-face)
-
-    ;; TODO jsx attribs?
-    (,
-     (concat "<[/]?" (reason-re-grab reason-re-ident) "[^>]*" ">")
-     1 font-lock-type-face)))
-
-(defun reason-mode-try-find-alternate-file (mod-name extension)
-  "Switch to the file given by MOD-NAME and EXTENSION."
-  (let* ((filename (concat mod-name extension))
-         (buffer (get-file-buffer filename)))
-    (if buffer (switch-to-buffer buffer)
-      (find-file filename))))
-
-(defun reason-mode-find-alternate-file ()
-  "Switch to implementation/interface file."
-  (interactive)
-  (let ((name buffer-file-name))
-    (when (string-match "\\`\\(.*\\)\\.re\\([il]\\)?\\'" name)
-      (let ((mod-name (match-string 1 name))
-            (e (match-string 2 name)))
-        (cond
-         ((string= e "i")
-          (reason-mode-try-find-alternate-file mod-name ".re"))
-         (t
-          (reason-mode-try-find-alternate-file mod-name ".rei")))))))
-
-(defun reason--syntax-propertize-multiline-string (end)
-  "Propertize Reason multiline string.
-Argument END marks the end of the string."
-  (let ((ppss (syntax-ppss)))
-    (when (eq t (nth 3 ppss))
-      (let ((key (save-excursion
-                   (goto-char (nth 8 ppss))
-                   (and (looking-at "{\\([a-z]*\\)|")
-                        (match-string 1)))))
-        (when (search-forward (format "|%s}" key) end 'move)
-          (put-text-property (1- (match-end 0)) (match-end 0)
-                             'syntax-table (string-to-syntax "|")))))))
-
-(defun reason-syntax-propertize-function (start end)
-  "Propertize Reason function.
-Argument START marks the beginning of the function.
-Argument END marks the end of the function."
-  (goto-char start)
-  (reason--syntax-propertize-multiline-string end)
-  (funcall
-   (syntax-propertize-rules
-    (reason--char-literal-rx (1 "\"") (2 "\""))
-    ;; multi line strings
-    ("\\({\\)[a-z]*|"
-     (1 (prog1 "|"
-          (goto-char (match-end 0))
-          (reason--syntax-propertize-multiline-string end)))))
-   (point) end))
-
-(defvar reason-mode-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map "\C-c\C-a" #'reason-mode-find-alternate-file)
-    (define-key map "\C-c\C-r" #'refmt-region-ocaml-to-reason)
-    (define-key map "\C-c\C-o" #'refmt-region-reason-to-ocaml)
-    map))
-
-;;;###autoload
-(define-derived-mode reason-mode prog-mode "Reason"
-  "Major mode for Reason code.
-
-\\{reason-mode-map}"
-  :group 'reason
-  :syntax-table reason-mode-syntax-table
-  :keymap reason-mode-map
-
-  ;; Syntax
-  (setq-local syntax-propertize-function #'reason-syntax-propertize-function)
-  ;; Indentation
-  (setq-local indent-line-function 'reason-mode-indent-line)
-  ;; Fonts
-  (setq-local font-lock-defaults '(reason-font-lock-keywords))
-  ;; Misc
-  (setq-local comment-start "/*")
-  (setq-local comment-end   "*/")
-  (setq-local indent-tabs-mode nil)
-  ;; Allow paragraph fills for comments
-  (setq-local comment-start-skip "/\\*+[ \t]*")
-  (setq-local paragraph-start
-              (concat "^[ \t]*$\\|\\*)$\\|" page-delimiter))
-  (setq-local paragraph-separate paragraph-start)
-  (setq-local require-final-newline t)
-  (setq-local normal-auto-fill-function nil)
-  (setq-local comment-multi-line t)
-
-  (setq-local beginning-of-defun-function 'reason-beginning-of-defun)
-  (setq-local end-of-defun-function 'reason-end-of-defun)
-  (setq-local parse-sexp-lookup-properties t))
-
-;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.rei?\\'" . reason-mode))
-
-(defun reason-mode-reload ()
-  "Reload Reason mode."
-  (interactive)
-  (unload-feature 'reason-mode)
-  (unload-feature 'reason-indent)
-  (unload-feature 'reason-interaction)
-  (require 'reason-mode)
-  (reason-mode))
-
-(provide 'reason-mode)
-
-;;; reason-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/vendor/refmt.el b/configs/shared/emacs/.emacs.d/vendor/refmt.el
deleted file mode 100644
index b9ea2b43f0ce..000000000000
--- a/configs/shared/emacs/.emacs.d/vendor/refmt.el
+++ /dev/null
@@ -1,231 +0,0 @@
-;;; refmt.el --- utility functions to format reason code
-
-;; Copyright (c) 2014 The go-mode Authors. All rights reserved.
-;; Portions Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
-
-;; Redistribution and use in source and binary forms, with or without
-;; modification, are permitted provided that the following conditions are
-;; met:
-
-;; * Redistributions of source code must retain the above copyright
-;; notice, this list of conditions and the following disclaimer.
-;; * Redistributions in binary form must reproduce the above
-;; copyright notice, this list of conditions and the following disclaimer
-;; in the documentation and/or other materials provided with the
-;; distribution.
-;; * Neither the name of the copyright holder nor the names of its
-;; contributors may be used to endorse or promote products derived from
-;; this software without specific prior written permission.
-
-;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.)
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'cl-lib)
-
-(defcustom refmt-command "refmt"
-  "The 'refmt' command."
-  :type 'string
-  :group 're-fmt)
-
-(defcustom refmt-show-errors 'buffer
-    "Where to display refmt error output.
-It can either be displayed in its own buffer, in the echo area, or not at all.
-Please note that Emacs outputs to the echo area when writing
-files and will overwrite refmt's echo output if used from inside
-a `before-save-hook'."
-    :type '(choice
-            (const :tag "Own buffer" buffer)
-            (const :tag "Echo area" echo)
-            (const :tag "None" nil))
-      :group 're-fmt)
-
-(defcustom refmt-width-mode nil
-  "Specify width when formatting buffer contents."
-  :type '(choice
-          (const :tag "Window width" window)
-          (const :tag "Fill column" fill)
-          (const :tag "None" nil))
-  :group 're-fmt)
-
-;;;###autoload
-(defun refmt-before-save ()
-  "Add this to .emacs to run refmt on the current buffer when saving:
- (add-hook 'before-save-hook 'refmt-before-save)."
-    (interactive)
-      (when (eq major-mode 'reason-mode) (refmt)))
-
-(defun reason--goto-line (line)
-  (goto-char (point-min))
-    (forward-line (1- line)))
-
-(defun reason--delete-whole-line (&optional arg)
-    "Delete the current line without putting it in the `kill-ring'.
-Derived from function `kill-whole-line'.  ARG is defined as for that
-function."
-    (setq arg (or arg 1))
-    (if (and (> arg 0)
-             (eobp)
-             (save-excursion (forward-visible-line 0) (eobp)))
-        (signal 'end-of-buffer nil))
-    (if (and (< arg 0)
-             (bobp)
-             (save-excursion (end-of-visible-line) (bobp)))
-        (signal 'beginning-of-buffer nil))
-    (cond ((zerop arg)
-           (delete-region (progn (forward-visible-line 0) (point))
-                          (progn (end-of-visible-line) (point))))
-          ((< arg 0)
-           (delete-region (progn (end-of-visible-line) (point))
-                          (progn (forward-visible-line (1+ arg))
-                                 (unless (bobp)
-                                   (backward-char))
-                                 (point))))
-          (t
-           (delete-region (progn (forward-visible-line 0) (point))
-                                                  (progn (forward-visible-line arg) (point))))))
-
-(defun reason--apply-rcs-patch (patch-buffer &optional start-pos)
-  "Apply an RCS-formatted diff from PATCH-BUFFER to the current buffer."
-  (setq start-pos (or start-pos (point-min)))
-  (let ((first-line (line-number-at-pos start-pos))
-        (target-buffer (current-buffer))
-        ;; Relative offset between buffer line numbers and line numbers
-        ;; in patch.
-        ;;
-        ;; Line numbers in the patch are based on the source file, so
-        ;; we have to keep an offset when making changes to the
-        ;; buffer.
-        ;;
-        ;; Appending lines decrements the offset (possibly making it
-        ;; negative), deleting lines increments it. This order
-        ;; simplifies the forward-line invocations.
-        (line-offset 0))
-    (save-excursion
-      (with-current-buffer patch-buffer
-        (goto-char (point-min))
-        (while (not (eobp))
-          (unless (looking-at "^\\([ad]\\)\\([0-9]+\\) \\([0-9]+\\)")
-            (error "invalid rcs patch or internal error in reason--apply-rcs-patch"))
-          (forward-line)
-          (let ((action (match-string 1))
-                (from (string-to-number (match-string 2)))
-                (len  (string-to-number (match-string 3))))
-            (cond
-             ((equal action "a")
-              (let ((start (point)))
-                (forward-line len)
-                (let ((text (buffer-substring start (point))))
-                  (with-current-buffer target-buffer
-                    (cl-decf line-offset len)
-                    (goto-char start-pos)
-                    (forward-line (- from len line-offset))
-                    (insert text)))))
-             ((equal action "d")
-              (with-current-buffer target-buffer
-                (reason--goto-line (- (1- (+ first-line from)) line-offset))
-                (cl-incf line-offset len)
-                (reason--delete-whole-line len)))
-             (t
-              (error "invalid rcs patch or internal error in reason--apply-rcs-patch")))))))))
-
-(defun refmt--process-errors (filename tmpfile errorfile errbuf)
-  (with-current-buffer errbuf
-    (if (eq refmt-show-errors 'echo)
-        (progn
-          (message "%s" (buffer-string))
-          (refmt--kill-error-buffer errbuf))
-      (insert-file-contents errorfile nil nil nil)
-      ;; Convert the refmt stderr to something understood by the compilation mode.
-      (goto-char (point-min))
-      (insert "refmt errors:\n")
-      (while (search-forward-regexp (regexp-quote tmpfile) nil t)
-        (replace-match (file-name-nondirectory filename)))
-      (compilation-mode)
-      (display-buffer errbuf))))
-
-(defun refmt--kill-error-buffer (errbuf)
-  (let ((win (get-buffer-window errbuf)))
-    (if win
-        (quit-window t win)
-      (with-current-buffer errbuf
-        (erase-buffer))
-      (kill-buffer errbuf))))
-
-(defun apply-refmt (&optional start end from to)
-  (setq start (or start (point-min))
-        end (or end (point-max))
-        from (or from "re")
-        to (or to "re"))
-   (let* ((ext (file-name-extension buffer-file-name t))
-          (bufferfile (make-temp-file "refmt" nil ext))
-          (outputfile (make-temp-file "refmt" nil ext))
-          (errorfile (make-temp-file "refmt" nil ext))
-          (errbuf (if refmt-show-errors (get-buffer-create "*Refmt Errors*")))
-          (patchbuf (get-buffer-create "*Refmt patch*"))
-          (coding-system-for-read 'utf-8)
-          (coding-system-for-write 'utf-8)
-          (width-args
-           (cond
-            ((equal refmt-width-mode 'window)
-             (list "--print-width" (number-to-string (window-body-width))))
-            ((equal refmt-width-mode 'fill)
-             (list "--print-width" (number-to-string fill-column)))
-            (t
-             '()))))
-     (unwind-protect
-         (save-restriction
-           (widen)
-           (write-region start end bufferfile)
-           (if errbuf
-               (with-current-buffer errbuf
-                 (setq buffer-read-only nil)
-                 (erase-buffer)))
-           (with-current-buffer patchbuf
-             (erase-buffer))
-           (if (zerop (apply 'call-process
-                             refmt-command nil (list (list :file outputfile) errorfile)
-                             nil (append width-args (list "--parse" from "--print" to bufferfile))))
-               (progn
-                 (call-process-region start end "diff" nil patchbuf nil "-n" "-"
-                                      outputfile)
-                 (reason--apply-rcs-patch patchbuf start)
-                 (message "Applied refmt")
-                 (if errbuf (refmt--kill-error-buffer errbuf)))
-             (message "Could not apply refmt")
-             (if errbuf
-                 (refmt--process-errors (buffer-file-name) bufferfile errorfile errbuf)))))
-     (kill-buffer patchbuf)
-     (delete-file errorfile)
-     (delete-file bufferfile)
-     (delete-file outputfile)))
-
-(defun refmt ()
-  "Format the current buffer according to the refmt tool."
-  (interactive)
-  (apply-refmt))
-
-(defun refmt-region-ocaml-to-reason (start end)
-  (interactive "r")
-  (apply-refmt start end "ml"))
-
-(defun refmt-region-reason-to-ocaml (start end)
-  (interactive "r")
-  (apply-refmt start end "re" "ml"))
-
-(provide 'refmt)
-
-;;; refmt.el ends here
diff --git a/configs/shared/emacs/.emacs.d/vendor/slack-snippets.el b/configs/shared/emacs/.emacs.d/vendor/slack-snippets.el
deleted file mode 100644
index 6bf933cfb86d..000000000000
--- a/configs/shared/emacs/.emacs.d/vendor/slack-snippets.el
+++ /dev/null
@@ -1,228 +0,0 @@
-;;; private/grfn/slack-snippets.el -*- lexical-binding: t; -*-
-
-(require 's)
-(require 'json)
-(require 'dash)
-(require 'dash-functional)
-(require 'request)
-(require 'subr-x)
-
-;;;
-;;; Configuration
-;;;
-
-(defvar slack/token nil
-  "Legacy (https://api.slack.com/custom-integrations/legacy-tokens) access token")
-
-(defvar slack/include-public-channels 't
-  "Whether or not to inclue public channels in the list of conversations")
-
-(defvar slack/include-private-channels 't
-  "Whether or not to inclue public channels in the list of conversations")
-
-(defvar slack/include-im 't
-  "Whether or not to inclue IMs (private messages) in the list of conversations")
-
-(defvar slack/include-mpim nil
-  "Whether or not to inclue multi-person IMs (multi-person private messages) in
-  the list of conversations")
-
-;;;
-;;; Utilities
-;;;
-
-(defmacro comment (&rest _body)
-  "Comment out one or more s-expressions"
-  nil)
-
-(defun ->list (vec) (append vec nil))
-
-(defun json-truthy? (x) (and x (not (equal :json-false x))))
-
-;;;
-;;; Generic API integration
-;;;
-
-(defvar slack/base-url "https://slack.com/api")
-
-(defun slack/get (path params &optional callback)
-  "params is an alist of query parameters"
-  (let* ((params-callback (if (functionp params) `(() . ,params) (cons params callback)))
-         (params (car params-callback)) (callback (cdr params-callback))
-         (params (append `(("token" . ,slack/token)) params))
-         (url (concat (file-name-as-directory slack/base-url) path)))
-    (request url
-             :type "GET"
-             :params params
-             :parser 'json-read
-             :success (cl-function
-                       (lambda (&key data &allow-other-keys)
-                         (funcall callback data))))))
-
-(defun slack/post (path params &optional callback)
-  (let* ((params-callback (if (functionp params) `(() . ,params) (cons params callback)))
-         (params (car params-callback)) (callback (cdr params-callback))
-         (url (concat (file-name-as-directory slack/base-url) path)))
-    (request url
-             :type "POST"
-             :data (json-encode params)
-             :headers `(("Content-Type"  . "application/json")
-                        ("Authorization" . ,(format "Bearer %s" slack/token)))
-             :success (cl-function
-                       (lambda (&key data &allow-other-keys)
-                         (funcall callback data))))))
-
-
-;;;
-;;; Specific API endpoints
-;;;
-
-;; Users
-
-(defun slack/users (cb)
-  "Returns users as (id . name) pairs"
-  (slack/get
-   "users.list"
-   (lambda (data)
-     (->> data
-          (assoc-default 'members)
-          ->list
-          (-map (lambda (user)
-                  (cons (assoc-default 'id user)
-                        (assoc-default 'real_name user))))
-          (-filter #'cdr)
-          (funcall cb)))))
-
-(comment
- (slack/get
-  "users.list"
-  (lambda (data) (setq response-data data)))
-
- (slack/users (lambda (data) (setq --users data)))
-
- )
-
-;; Conversations
-
-(defun slack/conversation-types ()
-  (->>
-   (list (when slack/include-public-channels  "public_channel")
-         (when slack/include-private-channels "private_channel")
-         (when slack/include-im               "im")
-         (when slack/include-mpim             "mpim"))
-   (-filter #'identity)
-   (s-join ",")))
-
-(defun channel-label (chan users-alist)
-  (cond
-   ((json-truthy? (assoc-default 'is_channel chan))
-    (format "#%s" (assoc-default 'name chan)))
-   ((json-truthy? (assoc-default 'is_im chan))
-    (let ((user-id (assoc-default 'user chan)))
-      (format "Private message with %s" (assoc-default user-id users-alist))))
-   ((json-truthy? (assoc-default 'is_mpim chan))
-    (->> chan
-         (assoc-default 'purpose)
-         (assoc-default 'value)))))
-
-(defun slack/conversations (cb)
-  "Calls `cb' with (id . '((label . \"label\") '(topic . \"topic\") '(purpose . \"purpose\"))) pairs"
-  (slack/get
-   "conversations.list"
-   `(("types"            . ,(slack/conversation-types))
-     ("exclude-archived" . "true"))
-   (lambda (data)
-     (setq --data data)
-     (slack/users
-      (lambda (users)
-        (->> data
-             (assoc-default 'channels)
-             ->list
-             (-filter
-              (lambda (chan) (channel-label chan users)))
-             (-map
-              (lambda (chan)
-                (cons (assoc-default 'id chan)
-                      `((label   . ,(channel-label chan users))
-                        (topic   . ,(->> chan
-                                         (assoc-default 'topic)
-                                         (assoc-default 'value)))
-                        (purpose . ,(->> chan
-                                         (assoc-default 'purpose)
-                                         (assoc-default 'value)))))))
-             (funcall cb)))))))
-
-(comment
- (slack/get
-  "conversations.list"
-  '(("types" . "public_channel,private_channel,im,mpim"))
-  (lambda (data) (setq response-data data)))
-
- (slack/get
-  "conversations.list"
-  '(("types" . "im"))
-  (lambda (data) (setq response-data data)))
-
- (slack/conversations
-  (lambda (convos) (setq --conversations convos)))
-
- )
-
-;; Messages
-
-(cl-defun slack/post-message
-    (&key text channel-id (on-success #'identity))
-  (slack/post "chat.postMessage"
-              `((text    . ,text)
-                (channel . ,channel-id)
-                (as_user . t))
-              on-success))
-
-(comment
-
- (slack/post-message
-  :text "hi slackbot"
-  :channel-id slackbot-channel-id
-  :on-success (lambda (data) (setq resp data)))
-
- (-map (lambda (chan) (let ((label (assoc-default 'label (cdr chan)))
-                            (id (car chan)))
-                        (propertize label 'channel-id id)))
-            --conversations)
-
- )
-
-;;;
-;;; Posting code snippets to slack
-;;;
-
-(defun prompt-for-channel (cb)
-  (slack/conversations
-   (lambda (conversations)
-     (setq testing (-map (lambda (chan) (let ((label (assoc-default 'label (cdr chan)))
-                            (id (car chan)))
-                        (propertize label 'channel-id id)))
-            conversations))
-     (ivy-read
-      "Select channel: "
-      ;; TODO want to potentially use purpose / topic stuff here
-      (-map (lambda (chan) (let ((label (assoc-default 'label (cdr chan)))
-                            (id (car chan)))
-                        (propertize label 'channel-id id)))
-            conversations)
-      :history 'slack/channel-history
-      :action (lambda (selected)
-                (let ((channel-id (get-text-property 0 'channel-id selected)))
-                  (funcall cb channel-id)
-                  (message "Sent message to %s" selected))))))
-  nil)
-
-(defun slack-send-code-snippet (&optional snippet-text)
-  (interactive)
-  (when-let ((snippet-text (or snippet-text
-                               (buffer-substring-no-properties (mark) (point)))))
-    (prompt-for-channel
-     (lambda (channel-id)
-       (slack/post-message
-        :text       (format "```\n%s```" snippet-text)
-        :channel-id channel-id)))))
diff --git a/configs/shared/emacs/.emacs.d/wpc/casing.el b/configs/shared/emacs/.emacs.d/wpc/casing.el
deleted file mode 100644
index 9f8e8a231851..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/casing.el
+++ /dev/null
@@ -1,46 +0,0 @@
-;; casing.el --- Helper functions for formatting text -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; These functions are intended to be bound to KBDs for daily use and
-;; refactoring.
-
-;;; Code:
-
-;; todo - grab the string at point and replace it with the output of
-;; each fn
-
-(defun caps->kebab (x)
-  "Change the casing of X from CAP_CASE to kebab-case."
-  (->> x
-       s-downcase
-       (s-replace "_" "-")))
-
-(defun kebab->caps (x)
-  "Change the casing of X from CAP_CASE to kebab-case."
-  (->> x
-       s-upcase
-       (s-replace "-" "_")))
-
-(defun lower->caps (x)
-  "Change the casing of X from lowercase to CAPS_CASE."
-  (->> x
-       s-upcase
-       (s-replace " " "_")))
-
-(defun lower->kebab (x)
-  "Change the casing of X from lowercase to kebab-case"
-  (s-replace " " "-" x))
-
-;;; Tests:
-
-(ert-deftest caps->kebab-test ()
-  (should (string= (caps->kebab "CAPS_CASE_STRING")
-                   "caps-case-string")))
-
-(ert-deftest kebab->caps-test ()
-  (should (string= (kebab->caps "kebab-case-string")
-                   "KEBAB_CASE_STRING")))
-
-(provide 'casing)
-;;; casing.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/fs-functions.el b/configs/shared/emacs/.emacs.d/wpc/fs-functions.el
deleted file mode 100644
index 9ca970c242c3..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/fs-functions.el
+++ /dev/null
@@ -1,24 +0,0 @@
-;;; fs-functions.el --- Functions to make working with the filesystem easier. -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts ergonomic functions for working with a filesystem.
-
-;;; Code:
-(defun ensure-file-path (path)
-  "Ensure that a file and its directories in PATH exist.
-Will error for inputs with a trailing slash."
-  (when (s-ends-with? "/" path)
-    (error (format "Input path has trailing slash: %s" path)))
-  (let ((dirs (->> path f-dirname f-split)))
-    (apply #'f-mkdir dirs)
-    (f-touch path)))
-
-(defun ensure-dir-path (path)
-  "Ensures that a directory and its ancestor directories in PATH exist."
-  (->> path
-       f-split
-       (apply #'f-mkdir)))
-
-(provide 'fs-functions)
-;;; fs-functions.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/functions.el b/configs/shared/emacs/.emacs.d/wpc/functions.el
deleted file mode 100644
index f734c13d9a4b..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/functions.el
+++ /dev/null
@@ -1,210 +0,0 @@
-;; functions.el --- Helper functions for my Emacs development -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This file hopefully contains friendly APIs that making ELisp development more enjoyable.
-
-;;; Code:
-(defun wpc/evil-window-vsplit-right ()
-  (interactive)
-  (evil-window-vsplit)
-  (windmove-right))
-
-(defun wpc/evil-window-split-down ()
-  (interactive)
-  (evil-window-split)
-  (windmove-down))
-
-(defun wpc/reindent-defun-and-align-clojure-map ()
-  (interactive)
-  (call-interactively #'paredit-reindent-defun)
-  (call-interactively #'clojure-align))
-
-(defun wpc/find-file ()
-  "Prefer project-based file-finding if inside of project; otherwise gracefully fallback."
-  (interactive)
-  (with-current-buffer (current-buffer)
-    (if (projectile-project-p)
-        (call-interactively #'projectile-find-file)
-      (call-interactively #'find-file))))
-
-(defun wpc/find-or-create-js-test ()
-  (->> buffer-file-name
-       (s-chop-suffix ".js")
-       (s-append ".test.js")
-       (find-file)))
-
-(defun wpc/find-or-create-js-module ()
-  (->> buffer-file-name
-       (s-chop-suffix ".test.js")
-       (s-append ".js")
-       (find-file)))
-
-(defun wpc/find-or-create-js-store ()
-  (->> buffer-file-name
-       (s-replace "index.js" "store.js")
-       (find-file)))
-
-(defun wpc/find-or-create-js-component ()
-  (->> buffer-file-name
-       (s-replace "store.js" "index.js")
-       (find-file)))
-
-(defun wpc/bind-ido-keys ()
-  "Adds custom KBDs for ido. This function is recommended in the ido source code."
-  (define-key ido-completion-map (kbd "<tab>") #'ido-next-match)
-  (define-key ido-completion-map (kbd "<backtab>") #'ido-prev-match))
-
-(defun wpc/toggle-between-js-test-and-module ()
-  "Toggle between a Javascript test or module."
-  (interactive)
-  (if (s-ends-with? ".test.js" buffer-file-name)
-      (wpc/find-or-create-js-module)
-    (if (s-ends-with? ".js" buffer-file-name)
-        (wpc/find-or-create-js-test)
-      (message "Not in a Javascript file. Exiting..."))))
-
-(defun wpc/toggle-between-js-component-and-store ()
-  "Toggle between a React component and its Redux store."
-  (interactive)
-  (if (s-ends-with? "index.js" buffer-file-name)
-      (wpc/find-or-create-js-store)
-    (if (or (s-ends-with? "store.js" buffer-file-name)
-            (s-ends-with? "store.test.js" buffer-file-name))
-        (wpc/find-or-create-js-component)
-      (message "Not in a React/Redux file. Exiting..."))))
-
-(defun wpc/read-file-as-string (filename)
-  (with-temp-buffer
-    (insert-file-contents filename)
-    (s-trim (buffer-string))))
-
-(defun wpc/create-snippet ()
-  "Creates a window split and then opens the Yasnippet editor."
-  (interactive)
-  (evil-window-vsplit)
-  (call-interactively #'yas-new-snippet))
-
-(defun wpc/find-file-split (filename)
-  "Creates a window split and then edits `filename'."
-  (interactive)
-  (evil-window-vsplit)
-  (find-file filename))
-
-(defun wpc/jump-to-parent-file ()
-  "Jumps to a React store or component's parent file. Useful for store or index file."
-  (interactive)
-  (-> buffer-file-name
-      f-dirname
-      (f-join "..")
-      (f-join (f-filename buffer-file-name))
-      find-file))
-
-(defun wpc/tmux-emacs-windmove (dir)
-  "Move windows in a Tmux-friendly way."
-  (let* ((dir->opts '((left . ("-L" . windmove-left))
-                      (right . ("-R" . windmove-right))
-                      (above . ("-U" . windmove-up))
-                      (below . ("-D" . windmove-down))))
-         (opts (alist-get dir dir->opts))
-         (tmux-opt (car opts))
-         (emacs-fn (cdr opts)))
-    (if (window-in-direction dir)
-        (funcall emacs-fn)
-      (shell-command (format "tmux select-pane %s" tmux-opt)))))
-
-(defun wpc/tmux-emacs-windmove-left ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'left))
-
-(defun wpc/tmux-emacs-windmove-right ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'right))
-
-(defun wpc/tmux-emacs-windmove-up ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'above))
-
-(defun wpc/tmux-emacs-windmove-down ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'below))
-
-(defun wpc/get-window-by-buffername (buffername)
-  "Finds a window by the name of the buffer it's hosting."
-  (let ((buffer (get-buffer buffername)))
-    (when buffer
-        (get-buffer-window buffer))))
-
-(defun wpc/add-earmuffs (x)
-  "Returns X surrounded by asterisks."
-  (format "*%s*" x))
-
-(defun wpc/get-default-shell ()
-  (or explicit-shell-file-name
-      (getenv "SHELL")
-      (getenv "ESHELL")))
-
-(defun wpc/find-terminal-buffer ()
-  (get-buffer (wpc/add-earmuffs wpc/terminal-name)))
-
-(defun wpc/find-terminal-window ()
-  (wpc/get-window-by-buffername (wpc/add-earmuffs wpc/terminal-name)))
-
-(defun wpc/create-terminal-session ()
-  (wpc/evil-window-vsplit-right)
-  (ansi-term (wpc/get-default-shell) wpc/terminal-name))
-
-(defun wpc/toggle-terminal ()
-  "Toggles a custom terminal session in Emacs."
-  (interactive)
-  (let ((window (wpc/find-terminal-window)))
-    (if window
-        (delete-window window)
-      (wpc/find-or-create-terminal))))
-
-(defun wpc/find-or-create-terminal ()
-  (let ((buffer (wpc/find-terminal-buffer)))
-    (if buffer
-        (display-buffer buffer)
-      (wpc/create-terminal-session))))
-
-(defun wpc/put-file-name-on-clipboard ()
-  "Put the current file name on the clipboard"
-  (interactive)
-  (let ((filename (if (equal major-mode 'dired-mode)
-                      default-directory
-                    (buffer-file-name))))
-    (when filename
-      (with-temp-buffer
-        (insert filename)
-        (clipboard-kill-region (point-min) (point-max)))
-      (message filename))))
-
-(defun wpc/evil-replace-under-point ()
-  "Faster than typing %s//thing/g"
-  (interactive)
-  (save-excursion
-    (evil-ex (concat "%s/\\b" (symbol-name (symbol-at-point)) "\\b/"))))
-
-(defun wpc/disable-linum-mode ()
-  "Convenience function defined to make adding hooks easier without a lambda."
-  (linum-mode -1))
-
-(defun wpc/disable-company-mode ()
-  "Convenience function defined to make adding hooks easier without a lambda."
-  (company-mode -1))
-
-(defun wpc/toggle-term-mode ()
-  "Toggle between term-line-mode and temr-char-mode."
-  (if (term-in-line-mode)
-      (term-char-mode)
-    (term-line-mode)))
-
-(defun buffer-dirname ()
-  "Return the directory name of the current buffer as a string."
-  (->> buffer-file-name
-       f-dirname
-       f-filename))
-
-(provide 'functions)
-;;; functions.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/macros.el b/configs/shared/emacs/.emacs.d/wpc/macros.el
deleted file mode 100644
index 02d7501b224d..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/macros.el
+++ /dev/null
@@ -1,28 +0,0 @@
-;;; macros.el --- Helpful variables for making my ELisp life more enjoyable -*- lexical-binding: t -*-
-;; Authpr: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This file contains helpful variables that I use in my ELisp development.
-
-;;; Code:
-(defmacro xi (&rest FORMS)
-  `(lambda ,(--filter (s-contains? (symbol-name it)
-                                   (prin1-to-string FORMS))
-                      '(x1 x2 x3 x4 x5))
-     ,FORMS))
-
-(defmacro enable (mode)
-  "Helper for enabling MODE. Useful in `add-hook' calls."
-  `#'(lambda nil (,mode 1)))
-
-(defmacro disable (mode)
-  "Helper for disabling MODE. Useful in `add-hook' calls."
-  `#'(lambda nil (,mode -1)))
-
-(defmacro add-hooks (modes)
-  "Add multiple MODES for the CALLBACK."
-  `(dolist (mode ,modes)
-     (add-hook (symbol/ensure-hookified mode) ,callback)))
-
-(provide 'macros)
-;;; macros.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el
deleted file mode 100644
index 1939d3ecedb1..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el
+++ /dev/null
@@ -1,51 +0,0 @@
-;;; clojure.el --- My Clojure preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosting my Clojure tooling preferences
-
-;;; Code:
-
-;; Helper functions
-(defun wpc/buffer-name-for-clojure-mode (mode)
-  (let* ((project-name (projectile-project-name))
-         (cljs-name (concat "*cider-repl CLJS " project-name "*"))
-         (clj-name  (concat "*cider-repl " project-name "*")))
-    (cond ((eq mode 'clojurescript-mode) cljs-name)
-          ((eq mode 'clojure-mode) clj-name)
-          ((eq mode 'clojurec-mode) cljs-name))))
-
-(defun wpc/repl-function-for-clojure-mode (mode)
-  (let ((project-name (projectile-project-name))
-        (cljs-fn #'cider-jack-in-clojurescript)
-        (clj-fn  #'cider-jack-in))
-    (cond ((eq mode 'clojurescript-mode) cljs-fn)
-          ((eq mode 'clojure-mode) clj-fn)
-          ((eq mode 'clojurec-mode) cljs-fn))))
-
-(defun wpc/find-or-create-clojure-or-clojurescript-repl ()
-  (interactive)
-  (with-current-buffer (current-buffer)
-    (let ((buffer-name   (wpc/buffer-name-for-clojure-mode major-mode))
-          (repl-function (wpc/repl-function-for-clojure-mode major-mode)))
-      (if (get-buffer buffer-name)
-          (switch-to-buffer buffer-name)
-        (funcall repl-function)))))
-
-(use-package cider
-  :config
-  (general-define-key
-    :keymaps 'cider-repl-mode-map
-    "C-l"    #'cider-repl-clear-buffer
-    "C-u"    #'kill-whole-line
-    "<up>"   #'cider-repl-previous-input
-    "<down>" #'cider-repl-next-input
-    "C-c 'j" #'wpc/find-or-create-clojure-or-clojurescript-repl)
-  (setq cider-cljs-lein-repl
-        "(do (require 'figwheel-sidecar.repl-api)
-             (figwheel-sidecar.repl-api/start-figwheel!)
-             (figwheel-sidecar.repl-api/cljs-repl))"
-        cider-prompt-for-symbol nil))
-
-(provide 'wpc-clojure)
-;;; wpc-clojure.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el
deleted file mode 100644
index e4507031a1e0..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el
+++ /dev/null
@@ -1,24 +0,0 @@
-;;; company.el --- Autocompletion package, company, preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my company mode preferences
-
-;;; Code:
-
-;; autocompletion client
-(use-package company
-  :config
-  (general-define-key
-    :keymaps 'company-active-map
-    "C-j" #'company-select-next
-    "C-n" #'company-select-next
-    "C-k" #'company-select-previous
-    "C-p" #'company-select-previous
-    "C-d" #'company-show-doc-buffer)
-  (setq company-idle-delay 0)
-  (setq company-minimum-prefix-length 2)
-  (global-company-mode))
-
-(provide 'wpc-company)
-;;; wpc-company.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el
deleted file mode 100644
index 6639ea530604..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el
+++ /dev/null
@@ -1,22 +0,0 @@
-;;; dired.el --- My dired preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my attempts at configuring dired
-
-;;; Code:
-
-(require 'dired)
-(general-nmap
-  :keymaps 'dired-mode-map
-  "c" #'find-file
-  "f" #'wpc/find-file
-  "-" #'dired-up-directory)
-(general-unbind
-  :keymaps 'dired-mode-map
-  "s")
-(general-add-hook 'dired-mode-hook (list (enable dired-hide-details-mode)
-                                         #'auto-revert-mode))
-
-(provide 'wpc-dired)
-;;; wpc-dired.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el
deleted file mode 100644
index 270eaec6fe4c..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el
+++ /dev/null
@@ -1,16 +0,0 @@
-;;; docker.el --- Docker preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; My Docker preferences and configuration
-
-;;; Code:
-
-(use-package docker
-  :config
-  (setenv "DOCKER_TLS_VERIFY" "1")
-  (setenv "DOCKER_HOST" "tcp://10.11.12.13:2376")
-  (setenv "DOCKER_MACHINE_NAME" "name"))
-
-(provide 'wpc-docker)
-;;; wpc-docker.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el
deleted file mode 100644
index fd3c178ebae8..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el
+++ /dev/null
@@ -1,15 +0,0 @@
-;;; wpc-elixir.el --- Elixir / Erland configuration -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; My preferences for working with Elixir / Erlang projects
-
-;;; Code:
-(use-package elixir-mode
-  :config
-  (general-add-hook 'elixir-mode-hook
-                    (lambda ()
-                      (add-hook 'before-save-hook #'elixir-format nil t))))
-
-(provide 'wpc-elixir)
-;;; wpc-elixir.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el
deleted file mode 100644
index d7bb834a6257..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el
+++ /dev/null
@@ -1,14 +0,0 @@
-;;; flycheck.el --- My flycheck configuration -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my Flycheck preferences
-
-;;; Code:
-
-(use-package flycheck
-  :config
-  (global-flycheck-mode))
-
-(provide 'wpc-flycheck)
-;;; wpc-flycheck.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el
deleted file mode 100644
index 6fc98b31e77f..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el
+++ /dev/null
@@ -1,56 +0,0 @@
-;;; haskell.el --- My Haskell preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my Haskell development preferences
-
-;;; Code:
-
-;; Haskell support
-
-;; font-locking, glyph support, etc
-(use-package haskell-mode
-  :config
-  (let ((m-symbols
-         '(("`mappend`" . "⊕")
-           ("<>"        . "⊕"))))
-    (dolist (item m-symbols) (add-to-list 'haskell-font-lock-symbols-alist item)))
-  (setq haskell-font-lock-symbols t)
-  (add-hook 'before-save-hook #'haskell-align-imports))
-
-;; LSP support
-(use-package lsp-haskell
-  :after (haskell-mode)
-  :config
-  (setq lsp-haskell-process-path-hie "hie-wrapper")
-  (add-hook 'haskell-mode-hook #'lsp-haskell-enable)
-  (add-hook 'haskell-mode-hook #'flycheck-mode))
-
-;; Test toggling
-(defun haskell/module->test ()
-  "Jump from a module to a test."
-  (let ((filename (->> buffer-file-name
-                       (s-replace "/src/" "/test/")
-                       (s-replace ".hs" "Test.hs")
-                       find-file)))
-    (make-directory (f-dirname filename) t)
-    (find-file filename)))
-
-(defun haskell/test->module ()
-  "Jump from a test to a module."
-  (let ((filename (->> buffer-file-name
-                       (s-replace "/test/" "/src/")
-                       (s-replace "Test.hs" ".hs")
-                       )))
-    (make-directory (f-dirname filename) t)
-    (find-file filename)))
-
-(defun haskell/test<->module ()
-  "Toggle between test and module in Haskell."
-  (interactive)
-  (if (s-contains? "/src/" buffer-file-name)
-      (haskell/module->test)
-    (haskell/test->module)))
-
-(provide 'wpc-haskell)
-;;; wpc-haskell.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el
deleted file mode 100644
index d341c2b580db..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el
+++ /dev/null
@@ -1,88 +0,0 @@
-;; wpc-javascript.el --- My Javascript preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This module hosts my Javascript tooling preferences
-
-;;; Code:
-
-;; Constants
-(defconst wpc/js-hooks
-  '(js-mode-hook js2-mode-hook rjsx-mode-hook)
-  "All of the commonly used hooks for Javascript buffers.")
-
-(defconst wpc/frontend-hooks
-  (-insert-at 0 'css-mode-hook wpc/js-hooks)
-  "All of the commonly user hooks for frontend development.")
-
-
-;; Helper functions
-(defun wpc/insert-flow-annotation ()
-  "Insert a flow type annotation to the beginning of a buffer."
-  (interactive)
-  (save-excursion
-    (goto-char (point-min))
-    (insert "// @flow\n")))
-
-;; frontend indentation settings
-(setq js-indent-level 2
-      css-indent-offset 2)
-
-;; ;; javascript
-;; (evil-leader/set-key-for-mode 'rjsx-mode "t" #'wpc/toggle-between-js-test-and-module)
-;; (evil-leader/set-key-for-mode 'rjsx-mode "x" #'wpc/toggle-between-js-component-and-store)
-;; (evil-leader/set-key-for-mode 'rjsx-mode "u" #'wpc/jump-to-parent-file)
-
-;; Flow for Javascript
-(use-package add-node-modules-path
-  :config
-  (general-add-hook wpc/js-hooks #'add-node-modules-path))
-
-(use-package flow-minor-mode
-  :requires evil-leader
-  :config
-  (general-add-hook wpc/js-hooks #'flow-minor-mode)
-  (evil-leader/set-key-for-mode 'rjsx-mode "F" #'wpc/insert-flow-annotation))
-
-(use-package web-mode
-  :mode "\\.html\\'"
-  :config
-  (setq web-mode-css-indent-offset 2)
-  (setq web-mode-code-indent-offset 2)
-  (setq web-mode-markup-indent-offset 2))
-
-;; Shouldn't need this once LSP is setup properly
-;; (use-package company-flow
-;;   :after (company)
-;;   :config
-;;   (add-to-list 'company-flow-modes 'rjsx-mode)
-;;   (add-to-list 'company-backends 'company-flow))
-
-;; Shouldn't need this once LSP is setup properly
-;; (use-package flycheck-flow
-;;   :after (flycheck)
-;;   :config
-;;   (flycheck-add-mode 'javascript-flow 'rjsx-mode)
-;;   (flycheck-add-mode 'javascript-flow 'flow-minor-mode)
-;;   (flycheck-add-mode 'javascript-eslint 'flow-minor-mode)
-;;   (flycheck-add-next-checker 'javascript-flow 'javascript-eslint))
-
-;; JSX highlighting
-(use-package rjsx-mode
-  :mode "\\.js\\'"
-  :config
-  (general-unbind rjsx-mode-map "<" ">" "C-d")
-  (general-nmap
-    :keymaps 'rjsx-mode-map
-    "K" #'flow-minor-type-at-pos)
-  (setq js2-mode-show-parse-errors nil
-        js2-mode-show-strict-warnings nil))
-
-;; JS autoformatting
-(use-package prettier-js
-  :after (rjsx-mode)
-  :config
-  (general-add-hook wpc/frontend-hooks #'prettier-js-mode))
-
-(provide 'wpc-javascript)
-;;; wpc-javascript.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el
deleted file mode 100644
index a01505a041ef..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el
+++ /dev/null
@@ -1,139 +0,0 @@
-;;; keybindings.el --- My Evil preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This module hosts my Evil preferences
-;;
-;; Wish List:
-;; - drop support for `evil-leader' library in favor of `general.el'
-;; - restore support for concise (n <kbd> <function>) instead of `general-mmap'
-;; - restore support for `general-unbind'
-
-;;; Code:
-
-(use-package evil
-  :init
-  (setq evil-want-integration nil)
-  (general-evil-setup)
-  :config
-  (general-mmap
-    :keymaps 'override
-    "RET" #'evil-goto-line
-    "H"   #'evil-first-non-blank
-    "L"   #'evil-end-of-line
-    "-"   #'dired-jump
-    "sl"  #'wpc/evil-window-vsplit-right
-    "sh"  #'evil-window-vsplit
-    "sk"  #'evil-window-split
-    "sj"  #'wpc/evil-window-split-down)
-  (general-nmap
-    :keymaps 'override
-    "gd"  #'xref-find-definitions)
-  (general-unbind 'motion "M-." "C-p")
-  (general-unbind 'normal "s"   "M-.")
-  (general-unbind 'insert "C-d" "C-a" "C-e" "C-n" "C-p" "C-k")
-  (setq evil-symbol-word-search t)
-  (evil-mode 1))
-
-;; evil keybindings
-(use-package evil-collection
-  :after (evil)
-  :config
-  (evil-collection-init))
-
-;; expose a leader key
-(use-package evil-leader
-  :after (evil counsel)
-  :config
-  (global-evil-leader-mode)
-  (evil-leader/set-leader "<SPC>")
-  ;; global
-  (evil-leader/set-key
-    "i"  #'counsel-semantic-or-imenu
-    "j"  #'jump-to-register
-    "h"  #'help
-    "a"  #'wpc/toggle-terminal
-    "="  #'align
-    "p"  #'flycheck-previous-error
-    "P"  #'counsel-git-grep
-    "f"  #'wpc/find-file
-    "n"  #'flycheck-next-error
-    "N"  #'smerge-next
-    "P"  #'smerge-prev
-    "b"  #'ivy-switch-buffer
-    "gs" #'magit-status
-
-    "es" #'wpc/create-snippet
-    "ev" (lambda () (interactive) (wpc/find-file-split "~/.config/nvim/init.vim"))
-    "ee" (lambda () (interactive) (wpc/find-file-split "~/.emacs.d/init.el"))
-    "ez" (lambda () (interactive) (wpc/find-file-split "~/.zshrc"))
-    "ea" (lambda () (interactive) (wpc/find-file-split "~/aliases.zsh"))
-    "ef" (lambda () (interactive) (wpc/find-file-split "~/functions.zsh"))
-    "el" (lambda () (interactive) (wpc/find-file-split "~/variables.zsh"))
-    "ex" (lambda () (interactive) (wpc/find-file-split "~/.Xresources"))
-    "ei" (lambda () (interactive) (wpc/find-file-split "~/.config/i3/config.shared"))
-    "em" (lambda () (interactive) (wpc/find-file-split "~/.tmux.conf"))
-
-    "B"  #'magit-blame
-    "w"  #'save-buffer
-    "x"  #'evil-save-and-close
-    "W"  #'save-all-buffers
-    "r"  #'wpc/evil-replace-under-point
-    ))
-
-;; create comments easily
-(use-package evil-commentary
-  :after (evil)
-  :config
-  (evil-commentary-mode))
-
-;; evil surround
-(use-package evil-surround
-  :after (evil)
-  :config
-  (global-evil-surround-mode 1))
-
-(defun wpc/ensure-kbds (_ignore)
-  "Try to ensure that my keybindings retain priority over other minor modes."
-  (unless (eq (caar minor-mode-map-alist) 'wpc/kbds-minor-mode)
-    (let ((mykbds (assq 'wpc/kbds-minor-mode minor-mode-map-alist)))
-      (assq-delete-all 'wpc/kbds-minor-mode minor-mode-map-alist)
-      (add-to-list 'minor-mode-map-alist mykbds))))
-
-;; Custom minor mode that ensures that my kbds are available no matter which
-;; major or minor modes are active.
-(add-hook 'after-load-functions #'wpc/ensure-kbds)
-
-(defvar wpc/kbds
-  (let ((map (make-sparse-keymap)))
-    (bind-keys :map map
-               ("M-q" . delete-window)
-               ("C-x C-;" . comment-or-uncomment-region)
-               ("C-x h" . help)
-               ("<s-return>" . toggle-frame-fullscreen)
-               ("<down-mouse-1>" . ffap-other-window)
-               ("M-h"  . wpc/tmux-emacs-windmove-left)
-               ("M-l"  . wpc/tmux-emacs-windmove-right)
-               ("M-k"  . wpc/tmux-emacs-windmove-up)
-               ("M-j"  . wpc/tmux-emacs-windmove-down)
-               ("M--"  . wpc/evil-window-split-down)
-               ("M-\\" . wpc/evil-window-vsplit-right)
-               ("M-q"  . delete-window))
-    map)
-  "William Carroll's keybindings that should have the highest precedence.")
-
-(define-minor-mode wpc/kbds-minor-mode
-  "A minor mode so that my key settings override annoying major modes."
-  :init-value t
-  :lighter " wpc/kbds"
-  :keymap wpc/kbds)
-
-;; allow jk to escape
-(use-package key-chord
-  :after (evil)
-  :config
-  (key-chord-mode 1)
-  (key-chord-define evil-insert-state-map "jk" 'evil-normal-state))
-
-(provide 'wpc-keybindings)
-;;; wpc-keybindings.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el
deleted file mode 100644
index cebe7b265761..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el
+++ /dev/null
@@ -1,48 +0,0 @@
-;;; lisp.el --- Generic LISP preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This hosts things like Paredit settings
-;;
-;; Here is some of the thinking behind some of the keybindings:
-;;
-;; slurp    s
-;; barf     S
-;; forward  )
-;; backward (
-;;
-;; Known concession: s and S eclipse Vim bindings.  There is a precedent already
-;; for eclipsing the s binding for window splitting.  Shift-s feel appropriate
-;; for barfing, since eclisping the b KBD feels less acceptable than eclisping
-;; the s KBD.
-
-;;; Code:
-
-(defconst wpc/lisp-mode-hooks
-  '(emacs-lisp-mode-hook
-    clojure-mode-hook
-    clojurescript-mode-hook))
-
-;; Elisp
-(use-package elisp-slime-nav
-  :config
-  (general-add-hook 'emacs-lisp-mode #'ielm-mode))
-
-;; paredit LISP editing
-(use-package paredit
-  :config
-  (general-unbind
-    :keymaps 'paredit-mode-map
-    "C-j"
-    "M-q")
-  (general-nmap
-    :keymaps 'paredit-mode-map
-     "s)" #'paredit-forward-slurp-sexp
-     "s(" #'paredit-backward-slurp-sexp
-     "S)" #'paredit-forward-barf-sexp
-     "S(" #'paredit-backward-barf-sexp
-     "gr" #'paredit-raise-sexp)
-  (general-add-hook wpc/lisp-mode-hooks #'enable-paredit-mode))
-
-(provide 'wpc-lisp)
-;;; wpc-lisp.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el
deleted file mode 100644
index e60b97323307..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el
+++ /dev/null
@@ -1,205 +0,0 @@
-;;; misc.el --- Hosting miscellaneous configuration -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This is the home of any configuration that couldn't find a better home.
-
-;;; Code:
-
-;; disable custom variable entries from being written to ~/.emacs.d/init.el
-(setq custom-file "~/.emacs.d/custom.el")
-(load custom-file 'noerror)
-
-;; integrate Emacs with X11 clipboard
-(setq x-select-enable-primary t)
-(setq x-select-enable-clipboard t)
-(general-def 'insert
-  "s-v" #'x-clipboard-yank
-  "C-S-v" #'x-clipboard-yank)
-
-;; transparently edit compressed files
-(auto-compression-mode t)
-
-;; autowrap when over the fill-column
-(add-hook 'fundamental-mode-hook 'turn-on-auto-fill)
-
-;; link to Emacs source code
-(setq find-function-C-source-directory "~/programming/emacs/src")
-
-;; change emacs prompts from "yes or no" -> "y or n"
-(fset 'yes-or-no-p 'y-or-n-p)
-
-;; open photos in Emacs
-(auto-image-file-mode 1)
-
-;; disable line-wrapping
-(setq-default truncate-lines 1)
-
-;; shell file indentation
-(setq sh-basic-offset 2)
-(setq sh-indentation 2)
-
-;; disable company mode when editing markdown
-;; TODO: move this out of wpc-misc.el and into a later file to call
-;; `(disable company-mode)'
-(add-hook 'markdown-mode-hook (company-mode -1))
-
-;; create file bookmarks
-(set-register ?e '(file . "~/.emacs.d/wpc/packages"))
-(set-register ?n '(file . "~/programming/nixify/configuration.nix"))
-(set-register ?d '(file . "~/Dropbox/dotfiles"))
-(set-register ?s '(file . "~/.slate.js"))
-(set-register ?D '(file . "~/Dropbox"))
-(set-register ?o '(file . "~/Dropbox/org/")) ;; TODO: change this to `(getenv "ORG_DIRECTORY")'
-
-(set-register ?v '(file . "~/.config/nvim/init.vim"))
-(set-register ?e '(file . "~/.emacs.d/init.el"))
-(set-register ?z '(file . "~/.zshrc"))
-(set-register ?a '(file . "~/aliases.zsh"))
-(set-register ?f '(file . "~/functions.zsh"))
-(set-register ?l '(file . "~/variables.zsh"))
-(set-register ?x '(file . "~/.Xresources"))
-(set-register ?i '(file . "~/.config/i3/config.shared"))
-(set-register ?m '(file . "~/.tmux.conf"))
-
-(set-register ?p `(file . ,wpc/current-project))
-
-;; persist history etc b/w Emacs sessions
-(setq desktop-save 'if-exists)
-(desktop-save-mode 1)
-(setq desktop-globals-to-save
-      (append '((extended-command-history . 30)
-                (file-name-history        . 100)
-                (grep-history             . 30)
-                (compile-history          . 30)
-                (minibuffer-history       . 50)
-                (query-replace-history    . 60)
-                (read-expression-history  . 60)
-                (regexp-history           . 60)
-                (regexp-search-ring       . 20)
-                (search-ring              . 20)
-                (shell-command-history    . 50)
-                tags-file-name
-                register-alist)))
-
-;; config Emacs to use $PATH values
-(use-package exec-path-from-shell
-  :if (memq window-system '(mac ns))
-  :config
-  (exec-path-from-shell-initialize))
-
-;; Emacs autosave, backup, interlocking files
-(setq auto-save-default nil
-      make-backup-files nil
-      create-lockfiles nil)
-
-;; ensure code wraps at 80 characters by default
-(setq-default fill-column wpc/fill-column)
-
-(put 'narrow-to-region 'disabled nil)
-
-;; trim whitespace on save
-(add-hook 'before-save-hook #'delete-trailing-whitespace)
-
-;; use tabs instead of spaces
-(setq-default indent-tabs-mode nil)
-
-;; automatically follow symlinks
-(setq vc-follow-symlinks t)
-
-;; fullscreen settings
-(setq ns-use-native-fullscreen nil)
-
-;; auto-close parens, brackets, quotes
-(electric-pair-mode 1)
-
-(use-package oauth2
-  :init
-  ;; necessary to remove warnings: https://emacs.stackexchange.com/questions/37036/where-are-these-variables-defined-bytecomp-warnings
-  (defvar url-http-extra-headers ())
-  (defvar oauth--token-data ())
-  (defvar url-callback-function ())
-  (defvar url-callback-arguments ()))
-
-; (use-package smex
-;   :config
-;   (general-define-key "M-x" #'smex)
-;   (general-add-hook 'ido-setup-hook #'wpc/bind-ido-keys)
-;   (smex-initialize))
-
-(use-package flx-ido
-  :after (smex)
-  :config
-  (flx-ido-mode 1)
-  (setq ido-enable-flex-matching t
-        ido-use-faces nil))
-
-(use-package swiper
-  :config
-  (general-define-key
-    "C-s" #'swiper
-    "C-r" #'swiper))
-
-(use-package yasnippet
-  :config
-  (yas-global-mode 1))
-
-(use-package ace-window
-  :config
-  (general-define-key "C-x o" #'ace-window)
-  (setq aw-keys '(?a ?s ?d ?f ?j ?k ?k ?\;)))
-
-(use-package projectile
-  :config
-  (projectile-mode t))
-
-(use-package counsel
-  :config
-  (defun wpc/counsel-git-grep ()
-    (interactive)
-    (let ((maybe-symbol (wpc/string-symbol-at-point)))
-      (if (string= maybe-symbol "nil")
-          (counsel-git-grep)
-        (counsel-git-grep nil maybe-symbol)))))
-
-;; search Google, Stackoverflow from within Emacs
-(use-package engine-mode
-  :config
-  (defengine google
-    "http://www.google.com/search?ie=utf-8&oe=utf-8&q=%s"
-    :keybinding "g")
-  (defengine stack-overflow
-    "https://stackoverflow.com/search?q=%s"
-    :keybinding "s"))
-
-;; Microsoft's Language Server Protocol (LSP)
-(use-package lsp-ui
-  :config
-  (add-hook 'lsp-mode-hook #'lsp-ui-mode))
-(use-package company-lsp
-  :config
-  (push 'company-lsp company-backends))
-
-(defun wpc/frame-name ()
-  "Return the name of the current frame."
-  (frame-parameter nil 'name))
-
-;; Having difficulty starting the server using systemd or calling
-;; `emacs --daemon' in ~/.profile, ~/.xsessionrc, and similar files.
-
-;; systemd has issues syncing the socket-name, so it becomes messy. I also
-;; experienced strange initialization where things like wpc-org and other
-;; modules wouldn't get loaded.
-;;
-;; Even if I resolved the socket-name resolution issue, I couldn't find an
-;; elegant way to reuse GUI frames. GUIs for me have the advantage of supporting
-;; True Color, support additional keys for KBDs (i.e. super), and aren't limited
-;; by the terminal for rendering certain things.
-;;
-;; For these reasons, it seems preferable to start the server from here. I'm
-;; considering starting emacs in my ~/.xsessionrc so that the server will be
-;; running after X initializes.
-(server-start)
-
-(provide 'wpc-misc)
-;;; wpc-misc.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el
deleted file mode 100644
index af439c442d63..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el
+++ /dev/null
@@ -1,12 +0,0 @@
-;;; wpc-nix.el --- Nix support -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Configuration to support working with Nix.
-
-;;; Code:
-(use-package nix-mode
-  :mode "\\.nix\\'")
-
-(provide 'wpc-nix)
-;;; wpc-nix.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el
deleted file mode 100644
index 03b52ba27247..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el
+++ /dev/null
@@ -1,76 +0,0 @@
-;;; org.el --- My org preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my org mode preferences
-
-;;; Code:
-
-;; TODO: figure out how to nest this in (use-package org ...)
-(setq org-capture-templates
-      `(
-
-        ("w" "work" entry (file+headline
-                           ,(f-join (getenv "ORG_DIRECTORY") "work.org")
-                           "Tasks")
-         "* TODO %?")
-
-        ("p" "personal" entry (file+headline
-                               ,(f-join (getenv "ORG_DIRECTORY") "personal.org")
-                               "Tasks")
-         "* TODO %? ")
-
-        ("i" "ideas" entry (file+headline
-                            ,(f-join (getenv "ORG_DIRECTORY") "ideas.org")
-                            "Tasks")
-         "* %? ")
-
-        ("s" "shopping list" entry (file+headline
-                            ,(f-join (getenv "ORG_DIRECTORY") "shopping.org")
-                            "Items")
-         "* TODO %? ")
-
-        ))
-(evil-set-initial-state 'org-mode 'insert)
-
-(use-package org
-  :config
-  (general-add-hook 'org-mode-hook
-                    ;; TODO: consider supporting `(disable (list linum-mode company-mode))'
-                    (list (disable linum-mode)
-                          (disable company-mode)))
-  (general-define-key :prefix "C-c"
-           "l" #'org-store-link
-           "a" #'org-agenda
-           "c" #'org-capture)
-  (setq org-todo-keywords
-        '((sequence "TODO" "BLOCKED" "DONE")))
-  (setq org-default-notes-file (f-join (getenv "ORG_DIRECTORY") "notes.org"))
-  (setq org-agenda-files (list (f-join (getenv "ORG_DIRECTORY") "work.org")
-                               (f-join (getenv "ORG_DIRECTORY") "personal.org")))
-  ;; TODO: troubleshoot why `wpc/kbds-minor-mode', `wpc/ensure-kbds' aren't
-  ;; enough to override the following KBDs. See this discussion for more context
-  ;; on where the idea came from:
-  ;; https://stackoverflow.com/questions/683425/globally-override-key-binding-in-emacs
-  (general-unbind 'normal org-mode-map "M-h" "M-j" "M-k" "M-l"))
-
-(use-package org-bullets
-  :after (org)
-  :config
-  (general-add-hook 'org-mode-hook (enable org-bullets-mode)))
-
-;; i3, `org-mode' integration
-;; Heavily influenced by: https://somethingsomething.us/post/i3_and_orgmode/
-(defadvice org-switch-to-buffer-other-window
-    (after supress-window-splitting activate)
-  "Delete the extra window if we're in a capture frame."
-  (if (equal "org-protocol-capture" (wpc/frame-name))
-      (delete-other-windows)))
-
-(add-hook 'org-capture-after-finalize-hook
-          (lambda ()
-            (when (equal "org-protocol-capture" (wpc/frame-name))
-                (delete-frame))))
-
-(provide 'wpc-org)
-;;; wpc-org.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el
deleted file mode 100644
index 6f43330ecb1a..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el
+++ /dev/null
@@ -1,27 +0,0 @@
-;;; package.el --- My package configuration -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This module hosts all of the settings required to work with ELPA,
-;; MELPA, QUELPA, and co.
-
-;;; Code:
-
-(require 'package)
-(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
-(package-initialize)
-
-(unless (package-installed-p 'use-package)
-  (package-refresh-contents)
-  (package-install 'use-package))
-(eval-when-compile
-  (require 'use-package))
-(setq use-package-always-ensure t)
-(use-package general)
-
-(add-to-list 'load-path "~/.emacs.d/vendor/")
-(add-to-list 'load-path "~/.emacs.d/wpc/")
-(add-to-list 'load-path "~/.emacs.d/wpc/packages")
-
-(provide 'wpc-package)
-;;; wpc-package.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el
deleted file mode 100644
index aa76fde6a16b..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el
+++ /dev/null
@@ -1,22 +0,0 @@
-;;; terminal.el --- My cobbled together terminal -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; My attempts at creating a sane Emacs terminal
-;;
-;; This module previously contained more logic, which has since been stripped.
-;;
-;; If the variable `explicit-shell-file-name' is `nil', Emacs will use the value
-;; for the $SHELL environment variable.  When running on NixOS, since binaries
-;; like `zsh' won't be available at `/bin/zsh' or other common places, we need
-;; to ensure that `explicit-shell-file-name' remain `nil'.
-;;
-;; Wish List:
-;; - prevent Emacs from asking: "Run program: /run/current-system/sw/bin/zsh"
-
-;;; Code:
-
-(setq wpc/terminal-name "wpc/terminal")
-
-(provide 'wpc-terminal)
-;;; wpc-terminal.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el
deleted file mode 100644
index 8cbcf3248f71..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el
+++ /dev/null
@@ -1,162 +0,0 @@
-;;; wpc-ui.el --- Any related to the UI/UX goes here -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts font settings, scrolling, color schemes.
-
-;;; Code:
-
-;; increase line height
-(setq-default line-spacing 4)
-
-;; change font
-(add-to-list 'default-frame-alist '(font . "Operator Mono Book-9"))
-
-(defconst wpc/font-size-step 10
-  "The amount (%) by which to increase or decrease a font.")
-
-(defun wpc/increase-font ()
-  "Increase font size."
-  (interactive)
-  (->> (face-attribute 'default :height)
-       (+ wpc/font-size-step)
-       (set-face-attribute 'default (selected-frame) :height)))
-
-(defun wpc/decrease-font ()
-  "Decrease font size."
-  (interactive)
-  (->> (face-attribute 'default :height)
-       (+ (- wpc/font-size-step))
-       (set-face-attribute 'default (selected-frame) :height)))
-
-(general-define-key "s-j" #'wpc/decrease-font)
-(general-define-key "s-k" #'wpc/increase-font)
-
-;; smooth scrolling settings
-(setq scroll-step 1
-      scroll-conservatively 10000)
-
-;; theme mgt
-(use-package cycle-themes
-  :after (doom-themes)
-  :config
-  ;; NOTE: may want to use `defconst' here
-  (setq wpc/doom-themes
-        (->> (custom-available-themes)
-             (-map #'symbol-name)
-             (-filter (-partial #'s-starts-with? "doom-"))
-             (-map #'intern)))
-  (setq cycle-themes-theme-list wpc/doom-themes))
-
-;; clean up modeline
-(use-package diminish
-  :after (yasnippet ivy which-key)
-  :config
-  (diminish 'evil-commentary-mode)
-  (diminish 'flycheck-mode "Flycheck")
-  (diminish 'company-mode "Company")
-  (diminish 'auto-revert-mode)
-  (diminish 'which-key-mode)
-  (diminish 'yas-minor-mode)
-  (diminish 'ivy-mode))
-
-;; disable startup screen
-(setq inhibit-startup-screen t)
-
-;; disable toolbar
-(tool-bar-mode -1)
-
-;; enable line numbers
-(general-add-hook '(prog-mode-hook
-                    text-mode-hook
-                    conf-mode-hook)
-                  (enable linum-mode))
-;;(add-hook 'after-init-hook (lambda () (set-face-foreground 'linum "#da5468")))
-
-;; set default buffer for Emacs
-(setq initial-buffer-choice wpc/current-project)
-
-;; transparent Emacs
-(set-frame-parameter (selected-frame) 'alpha '(90 . 90))
-(setq frame-transparent? t)
-
-(defun wpc/toggle-transparency ()
-  "Toggle the frame transparency."
-  (interactive)
-  (set-frame-parameter (selected-frame) 'alpha '(90 . 90))
-  (let ((alpha (if frame-transparent? 100 90)))
-    (set-frame-parameter (selected-frame) 'alpha `(,alpha . ,alpha)))
-  (setq frame-transparent? (not frame-transparent?)))
-
-(general-define-key "s-u" #'wpc/toggle-transparency)
-
-;; premium Emacs themes
-(use-package doom-themes
-  :config
-  (setq doom-themes-enable-bold t
-        doom-themes-enable-italic t)
-  (load-theme 'doom-one t)
-  (doom-themes-visual-bell-config)
-  (doom-themes-org-config))
-
-;; kbd discovery
-(use-package which-key
-  :config
-  (setq which-key-idle-delay 0.25)
-  (which-key-mode))
-
-;; completion framework
-(use-package ivy
-  :config
-  (ivy-mode t))
-
-;; icons for Ivy
-(use-package all-the-icons-ivy
-  :after (ivy)
-  :config
-  (all-the-icons-ivy-setup))
-
-;; disable menubar
-(menu-bar-mode -1)
-(when (string-equal system-type "darwin")
-  (setq ns-auto-hide-menu-bar t))
-
-;; reduce noisiness of auto-revert-mode
-(setq auto-revert-verbose nil)
-
-;; highlight lines that are over 100 characters long
-(use-package whitespace
-  :config
-  (setq whitespace-line-column wpc/fill-column)
-  (setq whitespace-style '(face lines-tail))
-  (add-hook 'prog-mode-hook #'whitespace-mode))
-
-
-
-;; rebalance emacs windows after splits are created
-(defadvice split-window-below (after rebalance-windows activate)
-  (balance-windows))
-
-(defadvice split-window-right (after rebalance-windows activate)
-  (balance-windows))
-
-(defadvice delete-window (after rebalance-window activate)
-  (balance-windows))
-
-;; dirname/filename instead of filename<dirname>
-(setq uniquify-buffer-name-style 'forward)
-
-;; highlight matching parens, brackets, etc
-(show-paren-mode 1)
-
-;; hide the scroll-bars in the GUI
-(scroll-bar-mode -1)
-
-;; GUI alerts in emacs
-(use-package alert
-  :commands (alert)
-  :config
-  (setq alert-default-style 'notifier))
-
-(provide 'wpc-ui)
-;;; wpc-ui.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/string-functions.el b/configs/shared/emacs/.emacs.d/wpc/string-functions.el
deleted file mode 100644
index 2ddd22b223c4..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/string-functions.el
+++ /dev/null
@@ -1,48 +0,0 @@
-;; functions.el --- String helper functions for my Emacs development -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; String & Symbol helpers!
-
-;;; Code:
-
-;; Strings
-(defun string/hookify (x)
-  "Append \"-hook\" to X."
-  (s-append "-hook" x))
-
-(defun symbol->string (symbol)
-  "Alias for `symbol-name' with SYMBOL, since I can never remember that
-function's name."
-  (symbol-name symbol))
-
-(defun string->symbol (string)
-  "Alias for `intern' for STRING since I can never remember that function's
-  name."
-  (intern string))
-
-(defun string/ensure-hookified (x)
-  "Ensure that X has \"-hook\" appended to it."
-  (if (s-ends-with? "-hook" x)
-      x
-    (string/hookify x)))
-
-;; Symbols
-(defun symbol/as-string (callback x)
-  "Treat the symbol, X, as a string while applying CALLBACK to it.
-Coerce back to a symbol on the way out."
-  (->> x
-       symbol-name
-       callback
-       intern))
-
-(defun symbol/hookify (x)
-  "Append \"-hook\" to X when X is a symbol."
-  (symbol/as-string #'string/hookify x))
-
-(defun symbol/ensure-hookified (x)
-  "Ensure that X has \"-hook\" appended to it when X is a symbol."
-  (symbol/as-string #'string/ensure-hookified x))
-
-(provide 'string-functions)
-;;; string-functions.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/variables.el b/configs/shared/emacs/.emacs.d/wpc/variables.el
deleted file mode 100644
index 39007a6493fb..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/variables.el
+++ /dev/null
@@ -1,26 +0,0 @@
-;;; variables.el --- Helpful variables for making my ELisp life more enjoyable -*- lexical-binding: t -*-
-;; Authpr: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This file contains helpful variables that I use in my ELisp development.
-
-;;; Code:
-
-(defconst wpc/current-project
-  "~/programming"
-  "Variable holding the directory for my currently active project.")
-
-(defvar wpc/mouse-kbds
-  '([mouse-1] [down-mouse-1] [drag-mouse-1] [double-mouse-1] [triple-mouse-1]
-    [mouse-2] [down-mouse-2] [drag-mouse-2] [double-mouse-2] [triple-mouse-2]
-    [mouse-3] [down-mouse-3] [drag-mouse-3] [double-mouse-3] [triple-mouse-3]
-    [mouse-4] [down-mouse-4] [drag-mouse-4] [double-mouse-4] [triple-mouse-4]
-    [mouse-5] [down-mouse-5] [drag-mouse-5] [double-mouse-5] [triple-mouse-5])
-  "This variable stores all of the mouse-related keybindings that Emacs recognizes.")
-
-(defconst wpc/fill-column
-  80
-  "Variable used to set the defaults for wrapping, highlighting, etc.")
-
-(provide 'variables)
-;;; variables.el ends here