diff options
Diffstat (limited to 'configs/shared/emacs/.emacs.d/wpc')
22 files changed, 0 insertions, 1359 deletions
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 |