summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2024-01-30 09:35:15 -0500
committerKjetil Orbekk <kj@orbekk.com>2024-01-30 09:35:15 -0500
commit308ab86c18112ae122540afe3790c371b623cc83 (patch)
tree06d3442f1a46a3ff4d123ec30f507da80be417cd
parentf2428476368b38b2af86a70343aefd72f4eb001e (diff)
move emacs config
-rw-r--r--emacs/.config/chemacs/profiles.el5
-rw-r--r--emacs/.config/doom-staging/config.el365
-rw-r--r--emacs/.config/doom-staging/init.el184
-rw-r--r--emacs/.config/doom-staging/packages.el61
-rw-r--r--emacs/.config/doom/config.el365
-rw-r--r--emacs/.config/doom/init.el185
-rw-r--r--emacs/.config/doom/packages.el59
-rw-r--r--emacs/.config/emacs-kj/early-init.el21
-rw-r--r--emacs/.config/emacs-kj/init.el911
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-bindings.el34
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-defaults.el49
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-development.el93
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-email.el97
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-eshell.el83
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-history.el65
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-popup.el95
-rw-r--r--emacs/.config/emacs-v2/lisp/kj-lib.el11
-rw-r--r--emacs/.config/emacs-v2/lisp/kj-multiple-cursors.el20
-rw-r--r--emacs/.config/emacs-v2/lisp/kj-org.el251
-rw-r--r--emacs/.config/emacs/early-init.el (renamed from emacs/.config/emacs-v2/early-init.el)0
-rw-r--r--emacs/.config/emacs/elpaca-installer.el (renamed from emacs/.config/emacs-v2/elpaca-installer.el)0
-rw-r--r--emacs/.config/emacs/emacs-custom.el (renamed from emacs/.config/emacs-v2/emacs-custom.el)0
-rw-r--r--emacs/.config/emacs/init.el (renamed from emacs/.config/emacs-v2/init.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-bindings.el (renamed from emacs/.config/emacs-v2/lisp/kj-bindings.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-defaults.el (renamed from emacs/.config/emacs-v2/lisp/kj-defaults.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-development.el (renamed from emacs/.config/emacs-v2/lisp/kj-development.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-email.el (renamed from emacs/.config/emacs-v2/lisp/kj-email.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-eshell.el (renamed from emacs/.config/emacs-v2/lisp/kj-eshell.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-history.el (renamed from emacs/.config/emacs-v2/lisp/kj-history.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-init.el (renamed from emacs/.config/emacs-v2/lisp/kj-init.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-lib.el (renamed from emacs/.config/emacs-kj/lisp/kj-lib.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-multiple-cursors.el (renamed from emacs/.config/emacs-kj/lisp/kj-multiple-cursors.el)0
-rw-r--r--emacs/.config/emacs/lisp/kj-org.el (renamed from emacs/.config/emacs-kj/lisp/kj-org.el)0
-rw-r--r--emacs/.config/emacs/templates (renamed from emacs/.config/emacs-v2/templates)0
34 files changed, 0 insertions, 2954 deletions
diff --git a/emacs/.config/chemacs/profiles.el b/emacs/.config/chemacs/profiles.el
deleted file mode 100644
index 473c2b5..0000000
--- a/emacs/.config/chemacs/profiles.el
+++ /dev/null
@@ -1,5 +0,0 @@
-(("default" . ((user-emacs-directory . "~/.config/emacs-v2")))
- ("doom" . ((user-emacs-directory . "~/build/doom-emacs")
- (env . (("DOOMDIR" . "~/.config/doom")))))
- ("kj" . ((user-emacs-directory . "~/.config/emacs-kj")))
- ("v2" . ((user-emacs-directory . "~/.config/emacs-v2"))))
diff --git a/emacs/.config/doom-staging/config.el b/emacs/.config/doom-staging/config.el
deleted file mode 100644
index 34e66b5..0000000
--- a/emacs/.config/doom-staging/config.el
+++ /dev/null
@@ -1,365 +0,0 @@
-;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
-
-;; Place your private configuration here! Remember, you do not need to run 'doom
-;; sync' after modifying this file!
-
-;; Some functionality uses this to identify you, e.g. GPG configuration, email
-;; clients, file templates and snippets.
-(setq user-full-name "KJ Orbekk"
- user-mail-address "kj@orbekk.com")
-
-(defmacro system-specific-config (system-regex &rest code)
- "Run CODE on systems that match SYSTEM-REGEX."
- `(when (string-match ,system-regex (system-name))
- ,@code))
-
-(setq kj/font-size 16)
-(setq doom-theme 'modus-operandi)
-(after! modus-themes
- (modus-themes-load-themes))
-
-;; Completion gets in the way more often than being useful.
-(setq company-idle-delay nil)
-(setq lsp-ui-doc-enable nil)
-
-(setq display-line-numbers-type nil)
-
-;; Scratch buffers are often for lisp stuff.
-(setq doom-scratch-initial-major-mode 'lisp-interaction-mode)
-
-(setq math-additional-units
- '((ZiB "1024 * EiB" "Zebibyte")
- (EiB "1024 * PiB" "Exbibyte")
- (PiB "1024 * TiB" "Pebibyte")
- (TiB "1024 * GiB" "Tebibyte")
- (GiB "1024 * MiB" "Gibibyte")
- (MiB "1024 * KiB" "Mebibyte")
- (KiB "1024 * B" "Kibibyte")
- (B nil "Byte")
- (Zib "1024 * ZiB" "Zebibit")
- (Eib "1024 * PiB" "Exbibit")
- (Pib "1024 * TiB" "Pebibit")
- (Tib "1024 * GiB" "Tebibit")
- (Gib "1024 * Mib" "Gibibit")
- (Mib "1024 * Kib" "Mebibit")
- (Kib "1024 * b" "Kibibit")
- (b "B / 8" "Bit")))
-
-(system-specific-config
- "pincer"
- (setq kj/font-size 18)
- (setq doom-theme 'doom-one))
-
-(system-specific-config
- "orbekk"
- (setq doom-theme 'doom-solarized-light))
-
-(system-specific-config
- "^siofra\."
- (setq kj/font-size 20)
- (setq doom-theme 'doom-one-light))
-
-(setq doom-font (font-spec :family "iosevka" :size kj/font-size))
-(setq doom-variable-pitch-font (font-spec :family "Noto Serif" :size kj/font-size))
-
-;; If you use `org' and don't want your org files in the default location below,
-;; change `org-directory'. It must be set before org loads!
-(setq org-directory "~/org/")
-(setq org-todo-keywords
- '((sequence
- "TODO(t)" "ACTIVE(a!)" "WAIT(w@/!)" "|" "DONE(d!)" "CANCELED(c@)")))
-(setq org-refile-use-outline-path nil)
-(setq org-refile-targets '((nil . (:maxlevel . 2))))
-(setq org-log-into-drawer t)
-(setq org-agenda-log-mode-items '(closed clock state))
-(setq org-agenda-start-day nil)
-(setq org-agenda-block-separator nil)
-(setq org-agenda-compact-blocks t)
-(setq org-agenda-start-with-log-mode nil)
-(setq org-habit-show-all-today t)
-(setq org-agenda-time-grid '((daily today require-timed) (800 1600) "......" "----------------------"))
-(setq org-roam-directory (concat org-directory "roam/"))
-(setq-default org-agenda-files '())
-(dolist (file '("tasks.org"
- "running-2022.org"))
- (add-to-list 'org-agenda-files (concat org-roam-directory file)))
-(setq org-roam-db-location (concat org-roam-directory "/org-roam.db"))
-(setq org-export-with-toc nil)
-(setq deft-directory org-directory)
-(setq deft-recursive t)
-;; Org html export
-(setq org-html-htmlize-output-type 'css)
-;; Website publish settings.
-(defvar kj/publish-tag "publish")
-(defvar kj/publish-directory "/ssh:orbekk@dragon.orbekk.com:/storage/srv/kj.orbekk.com")
-(add-to-list 'org-modules 'org-habit)
-
-; (setq org-appear-autolinks t)
-; (use-package! org-appear
-; :hook (org-mode . org-appear-mode))
-
-(setq org-log-done 'time)
-(setq org-todo-keywords
- '((sequence
- "TODO(t)" ; A task that needs doing & is ready to do
- "PROJ(p)" ; A project, which usually contains other tasks
- "LOOP(r)" ; A recurring task
- "STRT(s)" ; A task that is in progress
- "WAIT(w)" ; Something external is holding up this task
- "HOLD(h)" ; This task is paused/on hold because of me
- "IDEA(i)" ; An unconfirmed and unapproved task or notion
- "|"
- "DONE(d!)" ; Task successfully completed
- "KILL(k)") ; Task was cancelled, aborted or is no longer applicable
- (sequence
- "[ ](T)" ; A task that needs doing
- "[-](S)" ; Task is in progress
- "[?](W)" ; Task is being held up or paused
- "|"
- "[X](D)") ; Task was completed
- (sequence
- "|"
- "OKAY(o)"
- "YES(y)"
- "NO(n)")))
-
-;;(use-package! org-super-agenda
-;; :after org-agenda
-;; :init
-;;
-;; (setq org-agenda-custom-commands
-;; '(("d" "Daily KJ agenda"
-;; ((agenda "" ((org-agenda-span 'day)
-;; (org-agenda-start-day nil)
-;; (org-super-agenda-groups
-;; '((:name "Habits"
-;; :habit t
-;; :order 2)
-;; (:name "Past & Overdue"
-;; :scheduled past
-;; :deadline past)
-;; (:name "Today"
-;; :time-grid t
-;; :date today)
-;; (:name "Due Soon"
-;; :scheduled future
-;; :deadline future)))))
-;; (alltodo "" ((org-agenda-overriding-header "")
-;; (org-super-agenda-groups
-;; '((:name "Important"
-;; :priority "A"
-;; :priority "B")
-;; (:discard (:habit t))))))))))
-;;
-;; :config
-;; (org-super-agenda-mode 1))
-
-(setq org-journal-file-type 'weekly)
-(setq org-journal-dir org-roam-directory)
-(setq org-journal-file-format "journal-%Y-%m-%d.org")
-(setq org-journal-enable-agenda-integration t)
-(defun kj/org-journal-init ()
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (org-id-get-create)
- (org-set-property "category" "journal")))
-
-(defun kj/org-journal-file-header (time)
- (format-time-string "#+title: Week of %F (%W)\n"
- (org-journal--convert-time-to-file-type-time time)))
-(setq org-journal-file-header #'kj/org-journal-file-header)
-(add-hook 'org-journal-after-header-create-hook 'kj/org-journal-init)
-
-;; Allow more keys when navigating with avy.
-(setq avy-keys '(?a ?o ?e ?u ?d ?h ?n ?s ?l ?, ?. ?p ?r))
-(setq avy-timeout-seconds 0.4)
-
-;; Low menu delay.
-(setq which-key-idle-delay .5)
-
-;; Allow longer output in compilation buffer.
-(setq comint-buffer-maximum-size 10000)
-
-;; Replace values in an alist from a list of replacements.
-;;
-;; Example:
-;; (kj/assq-replace '((:a . 1)) '((:a . 2)))
-(defun kj/assq-replace (replacements alist)
- (let ((replace1 (lambda (aelem alist)
- (cons aelem (assq-delete-all (car aelem) alist)))))
- (if replacements
- (kj/assq-replace (cdr replacements)
- (funcall replace1 (car replacements) alist))
- alist)))
-
-(server-start)
-(remove-hook 'doom-first-buffer-hook #'smartparens-global-mode)
-(add-to-list 'auto-mode-alist '("\\.journal\\'" . ledger-mode))
-
-;; Make ace window more visible
-(custom-set-faces!
- '(aw-leading-char-face
- :foreground "white" :background "red"
- :weight bold :height 2.5 :box (:line-width 10 :color "red")))
-
-(after! racket-mode
- (remove-hook! 'racket-mode #'racket-smart-open-bracket-mode))
-
-(after! org
- (add-hook 'org-mode-hook 'mixed-pitch-mode)
- (setq org-roam-mode-section-functions
- (list #'org-roam-backlinks-section
- #'org-roam-reflinks-section
- #'org-roam-unlinked-references-section))
-
- (add-to-list 'org-structure-template-alist
- '("se" . "src emacs-lisp"))
-
- (setq org-babel-default-header-args
- (kj/assq-replace '((:exports . "both")
- (:eval . "never-export")
- (:output-dir . "static/data/"))
- org-babel-default-header-args))
-
- (defun kj/org-journal-find-location ()
- ;; Open today's journal, but specify a non-nil prefix argument in order to
- ;; inhibit inserting the heading; org-capture will insert the heading.
- (org-journal-new-entry t))
- ;; (unless (eq org-journal-file-type 'daily)
- ;; (org-narrow-to-subtree))
- ;; (goto-char (point-max)))
-
- (defun kj/org-journal-narrowed-location ()
- ;; Open today's journal, but specify a non-nil prefix argument in order to
- ;; inhibit inserting the heading; org-capture will insert the heading.
- (org-journal-new-entry t)
- (unless (eq org-journal-file-type 'daily)
- (org-narrow-to-subtree))
- (goto-char (point-max)))
-
- (setq org-capture-templates
- `(("g" "Go to current journal entry" plain (function kj/org-journal-find-location)
- "%i%?" :jump-to-captured t :immediate-finish t)
- ("t" "Create a TODO" entry (file+headline "~/org/roam/tasks.org" "Inbox")
- "** TODO %?\n%i\n%a")
- ("w" "Log bodyweight" table-line
- (file+headline ,(concat org-roam-directory "bodyweight.org")
- "Body weight log")
- "| %t | %^{Weight} | |"
- :prepend t :immediate-finish t)))
-
- (defun kj/find-agenda-files-containing-tag (tag)
- (setq org-agenda-archives-mode nil)
- (let* ((org-agenda-archives-mode nil)
- (candidates (org-agenda-files nil 'ifmode))
- (matcher (cdr (org-make-tags-matcher tag)))
- (files))
- ;; (message "Results:")
- (dolist (file candidates files)
- (org-check-agenda-file file)
- (with-current-buffer (org-get-agenda-file-buffer file)
- ;; (message "%S" (org-scan-tags 'agenda matcher nil))
- (when (org-scan-tags 'agenda matcher nil)
- (push file files))))))
-
- (setq kj/inbox-path "/ssh:dragon.orbekk.com:/storage/srv/kj.orbekk.com/dav/Inbox.org")
-
- (defun kj/fetch-inbox ()
- (interactive)
- (let ((content (with-current-buffer (find-file-noselect kj/inbox-path)
- (buffer-string))))
- (kj/org-journal-find-location)
- (when (not (string-empty-p content))
- (org-paste-subtree nil content)))
- (with-current-buffer (find-file-noselect kj/inbox-path)
- (erase-buffer)
- (save-buffer)
- (kill-buffer)))
-
- (defvar org-publish-project-alist)
- (defun kj/org-publish (&optional project force)
- (interactive)
- (setq project (or project "all"))
- (setq force (or force current-prefix-arg))
- (setq org-agenda-files (list org-roam-directory))
- (let* ((static-files-re (string-join '("css" "txt" "jpg" "png" "gif" "svg") "\\|"))
- (files-to-include (kj/find-agenda-files-containing-tag kj/publish-tag))
- ;; Disable org babel exports during publish entirely to speed up publish.
- ;; This messes up babel output handling.
- ;; (org-export-use-babel nil)
- (org-babel-default-header-args
- (kj/assq-replace '((:exports . "both")
- (:eval . "never-export"))
- org-babel-default-header-args))
- (org-publish-project-alist
- `(
- ("static"
- :base-directory ,(concat org-roam-directory "/static")
- :base-extension ,static-files-re
- :recursive t
- :publishing-directory ,(concat kj/publish-directory "/static")
- :publishing-function org-publish-attachment)
- ("source"
- :base-directory ,org-roam-directory
- :base-extension "org"
- :exclude ".*"
- :include ,files-to-include
- :recursive t
- :publishing-directory ,kj/publish-directory
- :publishing-function org-publish-attachment)
- ("html"
- :base-directory ,org-roam-directory
- :base-extension "org"
- :recursive t
- :exclude ".*"
- :include ,files-to-include
- :publishing-directory ,kj/publish-directory
- :publishing-function org-html-publish-to-html
-
- :with-broken-links t
- :with-toc nil
- :with-latex t
- :with-drawers t
- :with-title t
- :section-numbers nil
-
- ;; HTML options
- :html-toplevel-hlevel 2
- :html-preamble ""
- :html-postamble ""
- :html-html5-fancy t
- :html-doctype "html5"
- :html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"static/org.css\"/>"
- :html-head-include-scripts nil
- :html-head-include-default-style nil
- :html-container article)
-
- ("all" :components ("static" "source" "html")))))
-
- (org-publish project force))))
-
-(setq aw-dispatch-always t)
-
-;;; Keybindings
-(map! (:after evil-org
- :leader "n P" #'kj/org-publish)
-
- (:leader
- :desc "window" "e" evil-window-map)
-
- (:map evil-window-map
- "e" #'ace-window))
-
-(add-hook 'eshell-mode-hook
- (lambda ()
- (setenv "PAGER" "cat"))
- (setenv "EDITOR" "emacsclient"))
-
-(after! evil-embrace
- (evil-embrace-enable-evil-surround-integration)
- (setq evil-embrace-show-help-p t))
-
-(let ((local-config "~/.doom.d/config.local.el"))
- (when (file-exists-p local-config)
- (load-file local-config)))
diff --git a/emacs/.config/doom-staging/init.el b/emacs/.config/doom-staging/init.el
deleted file mode 100644
index 0e8a2ef..0000000
--- a/emacs/.config/doom-staging/init.el
+++ /dev/null
@@ -1,184 +0,0 @@
-;;; init.el -*- lexical-binding: t; -*-
-
-;; This file controls what Doom modules are enabled and what order they load
-;; in. Remember to run 'doom sync' after modifying it!
-
-;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
-;; documentation. There you'll find information about all of Doom's
-;; modules and what flags they support.
-
-;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
-;; 'C-c g k' for non-vim users) to view its documentation. This works on
-;; flags as well (those symbols that start with a plus).
-;;
-;; Alternatively, press 'gd' (or 'C-c g d') on a module to browse its
-;; directory (for easy access to its source code).
-(let ((local-config "~/.doom.d/init.local.el"))
- (when (file-exists-p local-config)
- (load-file local-config)))
-
-(doom! :input
- ;;chinese
- ;;japanese
-
- :completion
- company ; the ultimate code completion backend
- ;;helm ; the *other* search engine for love and life
- ;;ido ; the other *other* search engine...
- ;;ivy ; a search engine for love and life
- vertico ; the search engine of the future
-
- :ui
- ;;deft ; notational velocity for Emacs
- doom ; what makes DOOM look the way it does
- doom-dashboard ; a nifty splash screen for Emacs
- ;;doom-quit ; DOOM quit-message prompts when you quit Emacs
- ;;fill-column ; a `fill-column' indicator
- hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
- ;;hydra
- ;;indent-guides ; highlighted indent columns
- ;;minimap ; show a map of the code on the side
- (modeline +light) ; snazzy, Atom-inspired modeline, plus API
- ;;nav-flash ; blink cursor line after big motions
- ;;neotree ; a project drawer, like NERDTree for vim
- ophints ; highlight the region an operation acts on
- (popup +defaults) ; tame sudden yet inevitable temporary windows
- ;;pretty-code ; ligatures or substitute text with pretty symbols
- ;;tabs ; an tab bar for Emacs
- treemacs ; a project drawer, like neotree but cooler
- ;;unicode ; extended unicode support for various languages
- vc-gutter ; vcs diff in the fringe
- vi-tilde-fringe ; fringe tildes to mark beyond EOB
- (window-select +numbers) ; visually switch windows
- ;;workspaces ; tab emulation, persistence & separate workspaces
- zen ; distraction-free coding or writing
- ;; (emoji +unicode) ; 😇
-
- :editor
- ;;(evil +everywhere); come to the dark side, we have cookies
- file-templates ; auto-snippets for empty files
- fold ; (nigh) universal code folding
- format ; automated prettiness
- ;;god ; run Emacs commands without modifier keys
- ;;lispy ; vim for lisp, for people who don't like vim
- multiple-cursors ; editing in many places at once
- ;;objed ; text object editing for the innocent
- ;;parinfer ; turn lisp into python, sort of
- ;;rotate-text ; cycle region at point between text candidates
- snippets ; my elves. They type so I don't have to
- ;;word-wrap ; soft wrapping with language-aware indent
-
- :emacs
- dired ; making dired pretty [functional]
- electric ; smarter, keyword-based electric-indent
- ;;ibuffer ; interactive buffer management
- undo ; persistent, smarter undo for your inevitable mistakes
- vc ; version-control and Emacs, sitting in a tree
-
- :term
- eshell ; the elisp shell that works everywhere
- shell ; simple shell REPL for Emacs
- ;;term ; basic terminal emulator for Emacs
- ;;vterm ; the best terminal emulation in Emacs
-
- :checkers
- ;;syntax ; tasing you for every semicolon you forget
- ;;spell ; tasing you for misspelling mispelling
- ;;grammar ; tasing grammar mistake every you make
-
- :tools
- ;;ansible
- ;;debugger ; FIXME stepping through code, to help you add bugs
- direnv
- ;;docker
- editorconfig ; let someone else argue about tabs vs spaces
- ;;ein ; tame Jupyter notebooks with emacs
- (eval +overlay) ; run code, run (also, repls)
- ;;gist ; interacting with github gists
- lookup ; navigate your code and its documentation
- lsp
- ;;macos ; MacOS-specific commands
- magit ; a git porcelain for Emacs
- ;;make ; run make tasks from Emacs
- pass ; password manager for nerds
- ;;pdf ; pdf enhancements
- ;;prodigy ; FIXME managing external services & code builders
- rgb ; creating color strings
- ;;taskrunner ; taskrunner for all your projects
- ;;terraform ; infrastructure as code
- ;;tmux ; an API for interacting with tmux
- ;;upload ; map local to remote projects via ssh/ftp
-
- :lang
- ;;agda ; types of types of types of types...
- (cc +lsp) ; C/C++/Obj-C madness
- clojure ; java with a lisp
- ;;common-lisp ; if you've seen one lisp, you've seen them all
- ;;coq ; proofs-as-programs
- ;;crystal ; ruby at the speed of c
- ;;csharp ; unity, .NET, and mono shenanigans
- data ; config/data formats
- ;;(dart +flutter) ; paint ui and not much else
- ;;elixir ; erlang done right
- ;;elm ; care for a cup of TEA?
- emacs-lisp ; drown in parentheses
- ;;erlang ; an elegant language for a more civilized age
- (ess +lsp) ; emacs speaks statistics
- ;;faust ; dsp, but you get to keep your soul
- ;;fsharp ; ML stands for Microsoft's Language
- ;;fstar ; (dependent) types and (monadic) effects and Z3
- ;;(go +lsp) ; the hipster dialect
- (haskell +dante) ; a language that's lazier than I am
- ;;hy ; readability of scheme w/ speed of python
- ;;idris ;
- ;;json ; At least it ain't XML
- ;;(java +meghanada) ; the poster child for carpal tunnel syndrome
- ;;javascript ; all(hope(abandon(ye(who(enter(here))))))
- ;;julia ; a better, faster MATLAB
- ;;kotlin ; a better, slicker Java(Script)
- ;;latex ; writing papers in Emacs has never been so fun
- ;;lean
- ;;factor
- ledger ; an accounting system in Emacs
- ;;lua ; one-based indices? one-based indices
- markdown ; writing docs for people to ignore
- ;;nim ; python + lisp at the speed of c
- nix ; I hereby declare "nix geht mehr!"
- ;;ocaml ; an objective camel
- (org +journal +roam2) ; organize your plain life in plain text
- ;;perl ; write code no one else can comprehend
- ;;php ; perl's insecure younger brother
- ;;plantuml ; diagrams for confusing people more
- ;;purescript ; javascript, but functional
- python ; beautiful is better than ugly
- ;;qt ; the 'cutest' gui framework ever
- racket ; a DSL for DSLs
- ;;rest ; Emacs as a REST client
- ;;rst ; ReST in peace
- ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
- (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
- ;;scala ; java, but good
- ;;scheme ; a fully conniving family of lisps
- sh ; she sells {ba,z,fi}sh shells on the C xor
- ;;sml
- ;;solidity ; do you need a blockchain? No.
- ;;swift ; who asked for emoji variables?
- ;;terra ; Earth and Moon in alignment for performance.
- web ; the tubes
- ;;yaml ; JSON, but readable
-
- :email
- ;;mu4e
- ;;notmuch
- ;;(wanderlust +gmail)
-
- :app
- everywhere
- ;;calendar
- ;;irc ; how neckbeards socialize
- ;;(rss +org) ; emacs as an RSS reader
- ;;twitter ; twitter client https://twitter.com/vnought
-
- :config
- ;;literate
- (default +bindings))
diff --git a/emacs/.config/doom-staging/packages.el b/emacs/.config/doom-staging/packages.el
deleted file mode 100644
index 477cf1a..0000000
--- a/emacs/.config/doom-staging/packages.el
+++ /dev/null
@@ -1,61 +0,0 @@
-;; -*- no-byte-compile: t; -*-
-;;; $DOOMDIR/packages.el
-
-;; To install a package with Doom you must declare them here, run 'doom sync' on
-;; the command line, then restart Emacs for the changes to take effect.
-;; Alternatively, use M-x doom/reload.
-
-
-;; Doom's packages are pinned to a specific commit and updated from release to
-;; release. The `unpin!' macro allows you to unpin single packages...
-;(unpin! pinned-package)
-;; ...or multiple packages
-;(unpin! pinned-package another-pinned-package)
-;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
-;(unpin! t)
-
-
-;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
-;(package! some-package)
-
-;; To install a package directly from a particular repo, you'll need to specify
-;; a `:recipe'. You'll find documentation on what `:recipe' accepts here:
-;; https://github.com/raxod502/straight.el#the-recipe-format
-;(package! another-package
-; :recipe (:host github :repo "username/repo"))
-
-;; If the package you are trying to install does not contain a PACKAGENAME.el
-;; file, or is located in a subdirectory of the repo, you'll need to specify
-;; `:files' in the `:recipe':
-;(package! this-package
-; :recipe (:host github :repo "username/repo"
-; :files ("some-file.el" "src/lisp/*.el")))
-
-;; If you'd like to disable a package included with Doom, for whatever reason,
-;; you can do so here with the `:disable' property:
-;(package! builtin-package :disable t)
-
-;; You can override the recipe of a built in package without having to specify
-;; all the properties for `:recipe'. These will inherit the rest of its recipe
-;; from Doom or MELPA/ELPA/Emacsmirror:
-;(package! builtin-package :recipe (:nonrecursive t))
-;(package! builtin-package-2 :recipe (:repo "myfork/package"))
-
-;; Specify a `:branch' to install a package from a particular branch or tag.
-;; This is required for some packages whose default branch isn't 'master' (which
-;; our package manager can't deal with; see raxod502/straight.el#279)
-;(package! builtin-package :recipe (:branch "develop"))
-
-;; (package! hledger-mode)
-
-;; Enabled for AoC 2021.
-(package! heap)
-
-(package! modus-themes)
-
-; (package! org-appear)
-; (package! org-super-agenda)
-
-(let ((local-config "~/.doom.d/packages.local.el"))
- (when (file-exists-p local-config)
- (load-file local-config)))
diff --git a/emacs/.config/doom/config.el b/emacs/.config/doom/config.el
deleted file mode 100644
index 25a762a..0000000
--- a/emacs/.config/doom/config.el
+++ /dev/null
@@ -1,365 +0,0 @@
-;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
-
-;; Place your private configuration here! Remember, you do not need to run 'doom
-;; sync' after modifying this file!
-
-;; Some functionality uses this to identify you, e.g. GPG configuration, email
-;; clients, file templates and snippets.
-(setq user-full-name "KJ Orbekk"
- user-mail-address "kj@orbekk.com")
-
-(defmacro system-specific-config (system-regex &rest code)
- "Run CODE on systems that match SYSTEM-REGEX."
- `(when (string-match ,system-regex (system-name))
- ,@code))
-
-(setq kj/font-size 16)
-(setq doom-theme 'modus-operandi)
-(after! modus-themes
- (modus-themes-load-themes))
-
-;; Completion gets in the way more often than being useful.
-(setq company-idle-delay nil)
-(setq lsp-ui-doc-enable nil)
-
-(setq display-line-numbers-type nil)
-
-;; Scratch buffers are often for lisp stuff.
-(setq doom-scratch-initial-major-mode 'lisp-interaction-mode)
-
-(setq math-additional-units
- '((ZiB "1024 * EiB" "Zebibyte")
- (EiB "1024 * PiB" "Exbibyte")
- (PiB "1024 * TiB" "Pebibyte")
- (TiB "1024 * GiB" "Tebibyte")
- (GiB "1024 * MiB" "Gibibyte")
- (MiB "1024 * KiB" "Mebibyte")
- (KiB "1024 * B" "Kibibyte")
- (B nil "Byte")
- (Zib "1024 * ZiB" "Zebibit")
- (Eib "1024 * PiB" "Exbibit")
- (Pib "1024 * TiB" "Pebibit")
- (Tib "1024 * GiB" "Tebibit")
- (Gib "1024 * Mib" "Gibibit")
- (Mib "1024 * Kib" "Mebibit")
- (Kib "1024 * b" "Kibibit")
- (b "B / 8" "Bit")))
-
-(system-specific-config
- "pincer"
- (setq kj/font-size 18)
- (setq doom-theme 'doom-one))
-
-(system-specific-config
- "orbekk"
- (setq doom-theme 'doom-solarized-light))
-
-(system-specific-config
- "^siofra\."
- (setq kj/font-size 20)
- (setq doom-theme 'doom-one-light))
-
-(setq doom-font (font-spec :family "iosevka" :size kj/font-size))
-(setq doom-variable-pitch-font (font-spec :family "Noto Serif" :size kj/font-size))
-
-;; If you use `org' and don't want your org files in the default location below,
-;; change `org-directory'. It must be set before org loads!
-(setq org-directory "~/org/")
-(setq org-todo-keywords
- '((sequence
- "TODO(t)" "ACTIVE(a!)" "WAIT(w@/!)" "|" "DONE(d!)" "CANCELED(c@)")))
-(setq org-refile-use-outline-path nil)
-(setq org-refile-targets '((nil . (:maxlevel . 2))))
-(setq org-log-into-drawer t)
-(setq org-agenda-log-mode-items '(closed clock state))
-(setq org-agenda-start-day nil)
-(setq org-agenda-block-separator nil)
-(setq org-agenda-compact-blocks t)
-(setq org-agenda-start-with-log-mode nil)
-(setq org-habit-show-all-today t)
-(setq org-agenda-time-grid '((daily today require-timed) (800 1600) "......" "----------------------"))
-(setq org-roam-directory (concat org-directory "roam/"))
-(setq-default org-agenda-files '())
-(dolist (file '("tasks.org"
- "running-2022.org"))
- (add-to-list 'org-agenda-files (concat org-roam-directory file)))
-(setq org-roam-db-location (concat org-roam-directory "/org-roam.db"))
-(setq org-export-with-toc nil)
-(setq deft-directory org-directory)
-(setq deft-recursive t)
-;; Org html export
-(setq org-html-htmlize-output-type 'css)
-;; Website publish settings.
-(defvar kj/publish-tag "publish")
-(defvar kj/publish-directory "/ssh:orbekk@dragon.orbekk.com:/storage/srv/kj.orbekk.com")
-(add-to-list 'org-modules 'org-habit)
-
-; (setq org-appear-autolinks t)
-; (use-package! org-appear
-; :hook (org-mode . org-appear-mode))
-
-(setq org-log-done 'time)
-(setq org-todo-keywords
- '((sequence
- "TODO(t)" ; A task that needs doing & is ready to do
- "PROJ(p)" ; A project, which usually contains other tasks
- "LOOP(r)" ; A recurring task
- "STRT(s)" ; A task that is in progress
- "WAIT(w)" ; Something external is holding up this task
- "HOLD(h)" ; This task is paused/on hold because of me
- "IDEA(i)" ; An unconfirmed and unapproved task or notion
- "|"
- "DONE(d!)" ; Task successfully completed
- "KILL(k)") ; Task was cancelled, aborted or is no longer applicable
- (sequence
- "[ ](T)" ; A task that needs doing
- "[-](S)" ; Task is in progress
- "[?](W)" ; Task is being held up or paused
- "|"
- "[X](D)") ; Task was completed
- (sequence
- "|"
- "OKAY(o)"
- "YES(y)"
- "NO(n)")))
-
-;;(use-package! org-super-agenda
-;; :after org-agenda
-;; :init
-;;
-;; (setq org-agenda-custom-commands
-;; '(("d" "Daily KJ agenda"
-;; ((agenda "" ((org-agenda-span 'day)
-;; (org-agenda-start-day nil)
-;; (org-super-agenda-groups
-;; '((:name "Habits"
-;; :habit t
-;; :order 2)
-;; (:name "Past & Overdue"
-;; :scheduled past
-;; :deadline past)
-;; (:name "Today"
-;; :time-grid t
-;; :date today)
-;; (:name "Due Soon"
-;; :scheduled future
-;; :deadline future)))))
-;; (alltodo "" ((org-agenda-overriding-header "")
-;; (org-super-agenda-groups
-;; '((:name "Important"
-;; :priority "A"
-;; :priority "B")
-;; (:discard (:habit t))))))))))
-;;
-;; :config
-;; (org-super-agenda-mode 1))
-
-(setq org-journal-file-type 'weekly)
-(setq org-journal-dir org-roam-directory)
-(setq org-journal-file-format "journal-%Y-%m-%d.org")
-(setq org-journal-enable-agenda-integration t)
-(defun kj/org-journal-init ()
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (org-id-get-create)
- (org-set-property "category" "journal")))
-
-(defun kj/org-journal-file-header (time)
- (format-time-string "#+title: Week of %F (%W)\n"
- (org-journal--convert-time-to-file-type-time time)))
-(setq org-journal-file-header #'kj/org-journal-file-header)
-(add-hook 'org-journal-after-header-create-hook 'kj/org-journal-init)
-
-;; Allow more keys when navigating with avy.
-(setq avy-keys '(?a ?o ?e ?u ?d ?h ?n ?s ?l ?, ?. ?p ?r))
-(setq avy-timeout-seconds 0.4)
-
-;; Low menu delay.
-(setq which-key-idle-delay .5)
-
-;; Allow longer output in compilation buffer.
-(setq comint-buffer-maximum-size 10000)
-
-;; Replace values in an alist from a list of replacements.
-;;
-;; Example:
-;; (kj/assq-replace '((:a . 1)) '((:a . 2)))
-(defun kj/assq-replace (replacements alist)
- (let ((replace1 (lambda (aelem alist)
- (cons aelem (assq-delete-all (car aelem) alist)))))
- (if replacements
- (kj/assq-replace (cdr replacements)
- (funcall replace1 (car replacements) alist))
- alist)))
-
-(server-start)
-(remove-hook 'doom-first-buffer-hook #'smartparens-global-mode)
-(add-to-list 'auto-mode-alist '("\\.journal\\'" . ledger-mode))
-
-;; Make ace window more visible
-(custom-set-faces!
- '(aw-leading-char-face
- :foreground "white" :background "red"
- :weight bold :height 2.5 :box (:line-width 10 :color "red")))
-
-(after! racket-mode
- (remove-hook! 'racket-mode #'racket-smart-open-bracket-mode))
-
-(after! org
- (add-hook 'org-mode-hook 'mixed-pitch-mode)
- (setq org-roam-mode-section-functions
- (list #'org-roam-backlinks-section
- #'org-roam-reflinks-section
- #'org-roam-unlinked-references-section))
-
- (add-to-list 'org-structure-template-alist
- '("se" . "src emacs-lisp"))
-
- (setq org-babel-default-header-args
- (kj/assq-replace '((:exports . "both")
- (:eval . "never-export")
- (:output-dir . "static/data/"))
- org-babel-default-header-args))
-
- (defun kj/org-journal-find-location ()
- ;; Open today's journal, but specify a non-nil prefix argument in order to
- ;; inhibit inserting the heading; org-capture will insert the heading.
- (org-journal-new-entry t))
- ;; (unless (eq org-journal-file-type 'daily)
- ;; (org-narrow-to-subtree))
- ;; (goto-char (point-max)))
-
- (defun kj/org-journal-narrowed-location ()
- ;; Open today's journal, but specify a non-nil prefix argument in order to
- ;; inhibit inserting the heading; org-capture will insert the heading.
- (org-journal-new-entry t)
- (unless (eq org-journal-file-type 'daily)
- (org-narrow-to-subtree))
- (goto-char (point-max)))
-
- (setq org-capture-templates
- `(("g" "Go to current journal entry" plain (function kj/org-journal-find-location)
- "%i%?" :jump-to-captured t :immediate-finish t)
- ("t" "Create a TODO" entry (file+headline "~/org/roam/tasks.org" "Inbox")
- "** TODO %?\n%i\n%a")
- ("w" "Log bodyweight" table-line
- (file+headline ,(concat org-roam-directory "bodyweight.org")
- "Body weight log")
- "| %t | %^{Weight} | |"
- :prepend t :immediate-finish t)))
-
- (defun kj/find-agenda-files-containing-tag (tag)
- (setq org-agenda-archives-mode nil)
- (let* ((org-agenda-archives-mode nil)
- (candidates (org-agenda-files nil 'ifmode))
- (matcher (cdr (org-make-tags-matcher tag)))
- (files))
- ;; (message "Results:")
- (dolist (file candidates files)
- (org-check-agenda-file file)
- (with-current-buffer (org-get-agenda-file-buffer file)
- ;; (message "%S" (org-scan-tags 'agenda matcher nil))
- (when (org-scan-tags 'agenda matcher nil)
- (push file files))))))
-
- (setq kj/inbox-path "/ssh:dragon.orbekk.com:/storage/srv/kj.orbekk.com/dav/Inbox.org")
-
- (defun kj/fetch-inbox ()
- (interactive)
- (let ((content (with-current-buffer (find-file-noselect kj/inbox-path)
- (buffer-string))))
- (kj/org-journal-find-location)
- (when (not (string-empty-p content))
- (org-paste-subtree nil content)))
- (with-current-buffer (find-file-noselect kj/inbox-path)
- (erase-buffer)
- (save-buffer)
- (kill-buffer)))
-
- (defvar org-publish-project-alist)
- (defun kj/org-publish (&optional project force)
- (interactive)
- (setq project (or project "all"))
- (setq force (or force current-prefix-arg))
- (setq org-agenda-files (list org-roam-directory))
- (let* ((static-files-re (string-join '("css" "txt" "jpg" "png" "gif" "svg") "\\|"))
- (files-to-include (kj/find-agenda-files-containing-tag kj/publish-tag))
- ;; Disable org babel exports during publish entirely to speed up publish.
- ;; This messes up babel output handling.
- ;; (org-export-use-babel nil)
- (org-babel-default-header-args
- (kj/assq-replace '((:exports . "both")
- (:eval . "never-export"))
- org-babel-default-header-args))
- (org-publish-project-alist
- `(
- ("static"
- :base-directory ,(concat org-roam-directory "/static")
- :base-extension ,static-files-re
- :recursive t
- :publishing-directory ,(concat kj/publish-directory "/static")
- :publishing-function org-publish-attachment)
- ("source"
- :base-directory ,org-roam-directory
- :base-extension "org"
- :exclude ".*"
- :include ,files-to-include
- :recursive t
- :publishing-directory ,kj/publish-directory
- :publishing-function org-publish-attachment)
- ("html"
- :base-directory ,org-roam-directory
- :base-extension "org"
- :recursive t
- :exclude ".*"
- :include ,files-to-include
- :publishing-directory ,kj/publish-directory
- :publishing-function org-html-publish-to-html
-
- :with-broken-links t
- :with-toc nil
- :with-latex t
- :with-drawers t
- :with-title t
- :section-numbers nil
-
- ;; HTML options
- :html-toplevel-hlevel 2
- :html-preamble ""
- :html-postamble ""
- :html-html5-fancy t
- :html-doctype "html5"
- :html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"static/org.css\"/>"
- :html-head-include-scripts nil
- :html-head-include-default-style nil
- :html-container article)
-
- ("all" :components ("static" "source" "html")))))
-
- (org-publish project force))))
-
-(setq aw-dispatch-always t)
-
-;;; Keybindings
-(map! (:after evil-org
- :leader "n P" #'kj/org-publish)
-
- (:leader
- :desc "window" "e" evil-window-map)
-
- (:map evil-window-map
- "e" #'ace-window))
-
-(add-hook 'eshell-mode-hook
- (lambda ()
- (setenv "PAGER" "cat"))
- (setenv "EDITOR" "emacsclient"))
-
-(after! evil-embrace
- (evil-embrace-enable-evil-surround-integration)
- (setq evil-embrace-show-help-p t))
-
-(let ((local-config "~/.config/doom/config.local.el"))
- (when (file-exists-p local-config)
- (load-file local-config)))
diff --git a/emacs/.config/doom/init.el b/emacs/.config/doom/init.el
deleted file mode 100644
index ff2768b..0000000
--- a/emacs/.config/doom/init.el
+++ /dev/null
@@ -1,185 +0,0 @@
-;;; init.el -*- lexical-binding: t; -*-
-
-;; This file controls what Doom modules are enabled and what order they load
-;; in. Remember to run 'doom sync' after modifying it!
-
-;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
-;; documentation. There you'll find information about all of Doom's
-;; modules and what flags they support.
-
-;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
-;; 'C-c g k' for non-vim users) to view its documentation. This works on
-;; flags as well (those symbols that start with a plus).
-;;
-;; Alternatively, press 'gd' (or 'C-c g d') on a module to browse its
-;; directory (for easy access to its source code).
-(let ((local-config "~/.config/doom/init.local.el"))
- (when (file-exists-p local-config)
- (load-file local-config)))
-
-(doom! :input
- ;;chinese
- ;;japanese
-
- :completion
- company ; the ultimate code completion backend
- ;;helm ; the *other* search engine for love and life
- ;;ido ; the other *other* search engine...
- ;;ivy ; a search engine for love and life
- vertico ; the search engine of the future
-
- :ui
- ;;deft ; notational velocity for Emacs
- doom ; what makes DOOM look the way it does
- doom-dashboard ; a nifty splash screen for Emacs
- ;;doom-quit ; DOOM quit-message prompts when you quit Emacs
- ;;fill-column ; a `fill-column' indicator
- hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
- ;;hydra
- ;;indent-guides ; highlighted indent columns
- ;;minimap ; show a map of the code on the side
- (modeline +light) ; snazzy, Atom-inspired modeline, plus API
- ;;nav-flash ; blink cursor line after big motions
- ;;neotree ; a project drawer, like NERDTree for vim
- ophints ; highlight the region an operation acts on
- (popup +defaults) ; tame sudden yet inevitable temporary windows
- ;;pretty-code ; ligatures or substitute text with pretty symbols
- ;;tabs ; an tab bar for Emacs
- treemacs ; a project drawer, like neotree but cooler
- ;;unicode ; extended unicode support for various languages
- vc-gutter ; vcs diff in the fringe
- vi-tilde-fringe ; fringe tildes to mark beyond EOB
- (window-select +numbers) ; visually switch windows
- ;;workspaces ; tab emulation, persistence & separate workspaces
- zen ; distraction-free coding or writing
- ;; (emoji +unicode) ; 😇
-
- :editor
- ;(meow +dvorak +override +keypad)
- (evil +everywhere); come to the dark side, we have cookies
- file-templates ; auto-snippets for empty files
- fold ; (nigh) universal code folding
- format ; automated prettiness
- ;;god ; run Emacs commands without modifier keys
- ;;lispy ; vim for lisp, for people who don't like vim
- multiple-cursors ; editing in many places at once
- ;;objed ; text object editing for the innocent
- ;;parinfer ; turn lisp into python, sort of
- ;;rotate-text ; cycle region at point between text candidates
- snippets ; my elves. They type so I don't have to
- ;;word-wrap ; soft wrapping with language-aware indent
-
- :emacs
- dired ; making dired pretty [functional]
- electric ; smarter, keyword-based electric-indent
- ;;ibuffer ; interactive buffer management
- undo ; persistent, smarter undo for your inevitable mistakes
- vc ; version-control and Emacs, sitting in a tree
-
- :term
- eshell ; the elisp shell that works everywhere
- shell ; simple shell REPL for Emacs
- ;;term ; basic terminal emulator for Emacs
- ;;vterm ; the best terminal emulation in Emacs
-
- :checkers
- ;;syntax ; tasing you for every semicolon you forget
- ;;spell ; tasing you for misspelling mispelling
- ;;grammar ; tasing grammar mistake every you make
-
- :tools
- ;;ansible
- ;;debugger ; FIXME stepping through code, to help you add bugs
- direnv
- ;;docker
- editorconfig ; let someone else argue about tabs vs spaces
- ;;ein ; tame Jupyter notebooks with emacs
- (eval +overlay) ; run code, run (also, repls)
- ;;gist ; interacting with github gists
- lookup ; navigate your code and its documentation
- lsp
- ;;macos ; MacOS-specific commands
- magit ; a git porcelain for Emacs
- ;;make ; run make tasks from Emacs
- pass ; password manager for nerds
- ;;pdf ; pdf enhancements
- ;;prodigy ; FIXME managing external services & code builders
- rgb ; creating color strings
- ;;taskrunner ; taskrunner for all your projects
- ;;terraform ; infrastructure as code
- ;;tmux ; an API for interacting with tmux
- ;;upload ; map local to remote projects via ssh/ftp
-
- :lang
- ;;agda ; types of types of types of types...
- (cc +lsp) ; C/C++/Obj-C madness
- clojure ; java with a lisp
- ;;common-lisp ; if you've seen one lisp, you've seen them all
- ;;coq ; proofs-as-programs
- ;;crystal ; ruby at the speed of c
- ;;csharp ; unity, .NET, and mono shenanigans
- data ; config/data formats
- ;;(dart +flutter) ; paint ui and not much else
- ;;elixir ; erlang done right
- ;;elm ; care for a cup of TEA?
- emacs-lisp ; drown in parentheses
- ;;erlang ; an elegant language for a more civilized age
- ;;(ess +lsp) ; emacs speaks statistics
- ;;faust ; dsp, but you get to keep your soul
- ;;fsharp ; ML stands for Microsoft's Language
- ;;fstar ; (dependent) types and (monadic) effects and Z3
- ;;(go +lsp) ; the hipster dialect
- (haskell +dante) ; a language that's lazier than I am
- ;;hy ; readability of scheme w/ speed of python
- ;;idris ;
- ;;json ; At least it ain't XML
- ;;(java +meghanada) ; the poster child for carpal tunnel syndrome
- ;;javascript ; all(hope(abandon(ye(who(enter(here))))))
- ;;julia ; a better, faster MATLAB
- ;;kotlin ; a better, slicker Java(Script)
- ;;latex ; writing papers in Emacs has never been so fun
- ;;lean
- ;;factor
- ledger ; an accounting system in Emacs
- ;;lua ; one-based indices? one-based indices
- markdown ; writing docs for people to ignore
- ;;nim ; python + lisp at the speed of c
- nix ; I hereby declare "nix geht mehr!"
- ;;ocaml ; an objective camel
- (org +journal +roam2) ; organize your plain life in plain text
- ;;perl ; write code no one else can comprehend
- ;;php ; perl's insecure younger brother
- ;;plantuml ; diagrams for confusing people more
- ;;purescript ; javascript, but functional
- python ; beautiful is better than ugly
- ;;qt ; the 'cutest' gui framework ever
- racket ; a DSL for DSLs
- ;;rest ; Emacs as a REST client
- ;;rst ; ReST in peace
- ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
- (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
- ;;scala ; java, but good
- ;;scheme ; a fully conniving family of lisps
- sh ; she sells {ba,z,fi}sh shells on the C xor
- ;;sml
- ;;solidity ; do you need a blockchain? No.
- ;;swift ; who asked for emoji variables?
- ;;terra ; Earth and Moon in alignment for performance.
- web ; the tubes
- ;;yaml ; JSON, but readable
-
- :email
- ;;mu4e
- ;;notmuch
- ;;(wanderlust +gmail)
-
- :app
- everywhere
- ;;calendar
- ;;irc ; how neckbeards socialize
- ;;(rss +org) ; emacs as an RSS reader
- ;;twitter ; twitter client https://twitter.com/vnought
-
- :config
- ;;literate
- (default +bindings))
diff --git a/emacs/.config/doom/packages.el b/emacs/.config/doom/packages.el
deleted file mode 100644
index 136308b..0000000
--- a/emacs/.config/doom/packages.el
+++ /dev/null
@@ -1,59 +0,0 @@
-;; -*- no-byte-compile: t; -*-
-;;; $DOOMDIR/packages.el
-
-;; To install a package with Doom you must declare them here, run 'doom sync' on
-;; the command line, then restart Emacs for the changes to take effect.
-;; Alternatively, use M-x doom/reload.
-
-
-;; Doom's packages are pinned to a specific commit and updated from release to
-;; release. The `unpin!' macro allows you to unpin single packages...
-;(unpin! pinned-package)
-;; ...or multiple packages
-;(unpin! pinned-package another-pinned-package)
-;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
-;(unpin! t)
-
-
-;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
-;(package! some-package)
-
-;; To install a package directly from a particular repo, you'll need to specify
-;; a `:recipe'. You'll find documentation on what `:recipe' accepts here:
-;; https://github.com/raxod502/straight.el#the-recipe-format
-;(package! another-package
-; :recipe (:host github :repo "username/repo"))
-
-;; If the package you are trying to install does not contain a PACKAGENAME.el
-;; file, or is located in a subdirectory of the repo, you'll need to specify
-;; `:files' in the `:recipe':
-;(package! this-package
-; :recipe (:host github :repo "username/repo"
-; :files ("some-file.el" "src/lisp/*.el")))
-
-;; If you'd like to disable a package included with Doom, for whatever reason,
-;; you can do so here with the `:disable' property:
-;(package! builtin-package :disable t)
-
-;; You can override the recipe of a built in package without having to specify
-;; all the properties for `:recipe'. These will inherit the rest of its recipe
-;; from Doom or MELPA/ELPA/Emacsmirror:
-;(package! builtin-package :recipe (:nonrecursive t))
-;(package! builtin-package-2 :recipe (:repo "myfork/package"))
-
-;; Specify a `:branch' to install a package from a particular branch or tag.
-;; This is required for some packages whose default branch isn't 'master' (which
-;; our package manager can't deal with; see raxod502/straight.el#279)
-;(package! builtin-package :recipe (:branch "develop"))
-
-;; (package! hledger-mode)
-
-(package! modus-themes)
-(package! meow)
-
-; (package! org-appear)
-; (package! org-super-agenda)
-
-(let ((local-config "~/.config/doom/packages.local.el"))
- (when (file-exists-p local-config)
- (load-file local-config)))
diff --git a/emacs/.config/emacs-kj/early-init.el b/emacs/.config/emacs-kj/early-init.el
deleted file mode 100644
index fde5f3e..0000000
--- a/emacs/.config/emacs-kj/early-init.el
+++ /dev/null
@@ -1,21 +0,0 @@
-;;; early-init.el -*- lexical-binding: t; -*-
-
-;; Defer garbage collection further back in the startup process
-(setq gc-cons-threshold most-positive-fixnum)
-(setq-default inhibit-redisplay t
- inhibit-message t)
-;; These log messages are too annoying.
-(setq native-comp-async-report-warnings-errors 'silent)
-(add-hook 'window-setup-hook
- (lambda ()
- (setq-default inhibit-redisplay nil
- inhibit-message nil)
- (redisplay)))
-
-(setq package-enable-at-startup nil)
-
-(setq default-frame-alist '((undecorated . t)))
-(tool-bar-mode -1)
-(scroll-bar-mode -1)
-(tooltip-mode -1)
-(menu-bar-mode -1)
diff --git a/emacs/.config/emacs-kj/init.el b/emacs/.config/emacs-kj/init.el
deleted file mode 100644
index 83a9353..0000000
--- a/emacs/.config/emacs-kj/init.el
+++ /dev/null
@@ -1,911 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-(setq package-enable-at-startup nil)
-(defvar bootstrap-version)
-(let ((bootstrap-file
- (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
- (bootstrap-version 6))
- (unless (file-exists-p bootstrap-file)
- (with-current-buffer
- (url-retrieve-synchronously
- "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
- 'silent 'inhibit-cookies)
- (goto-char (point-max))
- (eval-print-last-sexp)))
- (load bootstrap-file nil 'nomessage))
-
-(push (expand-file-name "lisp" user-emacs-directory) load-path)
-(require 'kj-lib)
-
-(setq user-full-name "KJ Orbekk"
- user-mail-address "kj@orbekk.com")
-
-(setq startup-time (current-time))
-(setq initial-scratch-message
- (format ";; Emacs startup %s.\n\n"
- (format-time-string "%F %T %z" startup-time)))
-(setq inhibit-startup-message t)
-
-(setq custom-file (expand-file-name "emacs-custom.el" user-emacs-directory))
-(load custom-file :noerror t)
-
-(defalias 'yes-or-no-p 'y-or-n-p)
-
-(straight-use-package 'use-package)
-(use-package straight
- :custom (straight-use-package-by-default t))
-
-(global-hl-line-mode 1)
-(global-auto-revert-mode 1)
-
-(setq visible-bell t
- ring-bell-function 'ignore)
-
-(use-package modus-themes)
-(use-package doom-themes)
-
-(load-theme 'modus-vivendi-tinted)
-(setq alert-default-style 'libnotify)
-
-(custom-theme-set-faces
- 'modus-vivendi-tinted
- '(avy-lead-face ((t :inherit (bold modus-themes-subtle-blue))))
- '(avy-lead-face-0 ((t :inherit (bold modus-themes-subtle-cyan))))
- '(avy-lead-face-1 ((t :inherit (bold modus-themes-subtle-green))))
- '(avy-lead-face-2 ((t :inherit (bold modus-themes-subtle-magenta)))))
-
-(use-package all-the-icons
- :if (display-graphic-p))
-(setq inhibit-compacting-font-caches t)
-(setq use-dialog-box nil)
-(setq display-time-24hr-format t)
-
-(display-battery-mode 1)
-(display-time-mode 1)
-
-(use-package doom-modeline
- :ensure t
- :init (doom-modeline-mode 1)
- :config
- (setq doom-modeline-buffer-encoding 'nondefault))
-
-(use-package emojify
- :bind
- (("C-c C-i C-e" . emojify-insert-emoji))
- :hook (after-init . global-emojify-mode)
- :config
- (emojify-set-emoji-styles '(unicode)))
-
-(setq-default show-trailing-whitespace t)
-(dolist (mode '(calendar-mode-hook
- eshell-mode-hook
- term-mode-hook
- comint-mode-hook
- completion-list-mode))
- (add-hook mode
- (defun kj/disable-trailing-whitespace ()
- (setq show-trailing-whitespace nil))))
-
-;; Deletes trailing whitespace on changed lines only.
-(use-package ws-butler
- :diminish ws-butler-mode
- :hook (prog-mode . ws-butler-mode))
-
-;; `M-x shell` settings
-(setq shell-prompt-pattern "^[^#$%>\n]*[#$%>❯] *"
- explicit-shell-file-name "zsh"
- explicit-zsh-args '("--login" "--interactive"))
-(defun kj/shell-buffer-name ()
- (concat "*shell:" default-directory "*"))
-
-(defun kj/shell-here ()
- (interactive)
- (let ((buffer
- (shell (kj/shell-buffer-name))))
- (with-current-buffer buffer
- (let* ((proc (get-buffer-process (current-buffer)))
- (sentinel (process-sentinel proc)))
- (set-process-sentinel
- proc
- `(lambda (proc signal)
- (funcall ',sentinel proc signal)
- (and (memq (process-status proc) '(exit signal))
- (buffer-live-p (process-buffer proc))
- (message "Shell died, killing buffer %s"
- (process-buffer proc))
- (kill-buffer (process-buffer proc)))))))))
-
-(use-package coterm
- :config
- (coterm-mode 1))
-
-;; Update buffer name to reflect directory.
-(advice-add 'cd :after
- (defun kj/maybe-rename-shell (&rest args)
- (and (derived-mode-p 'shell-mode)
- (rename-buffer
- (kj/shell-buffer-name)))))
-
-(use-package rainbow-delimiters
- :defer t
- :hook (prog-mode . rainbow-delimiters-mode)
- )
-
-(column-number-mode)
-(set-fringe-mode 10)
-(setq next-screen-context-lines 10)
-
-(use-package avy
- :bind
- (("C-c l" . avy-goto-char)
- ("C-c n" . avy-goto-line))
- :config
- (setq avy-keys '(?a ?o ?e ?u ?i ?d ?h ?t ?n ?s))
- (defun avy-action-embark (pt)
- (unwind-protect
- (save-excursion
- (goto-char pt)
- (embark-act))
- (select-window
- (cdr (ring-ref avy-ring 0))))
- t)
-
-(setf (alist-get ?. avy-dispatch-alist) 'avy-action-embark))
-(define-key isearch-mode-map (kbd "M-j") 'avy-isearch)
-
-(winner-mode +1)
-
-(use-package ace-window
- :bind
- (("C-c e" . ace-window))
- :config
- (setq aw-dispatch-always t)
- (setq aw-keys '(?a ?o ?e ?u ?i ?d ?h ?t ?n ?s))
- ;; Make ace window more visible
- ;; (custom-set-faces!
- ;; '(aw-leading-char-face
- ;; :foreground "white" :background "red"
- ;; :weight bold :height 2.5 :box (:line-width 10 :color "red")))
- )
-
-(defun kj/balance-main-window ()
- (balance-windows (window-main-window)))
-
-;; Prefer horizontal splits.
-(setq split-height-threshold 100)
-
-(defun kj/split-window-below ()
- (interactive)
- (split-window-below)
- (kj/balance-main-window)
- (other-window 1))
-
-(defun kj/split-window-right ()
- (interactive)
- (split-window-right)
- (kj/balance-main-window)
- (other-window 1))
-
-(global-set-key (kbd "C-x 3") #'kj/split-window-right)
-(global-set-key (kbd "C-x 2") #'kj/split-window-below)
-
-(use-package vertico
- :init
- (vertico-mode))
-
-;; Rebind C-x?
-(global-set-key (kbd "C-t") 'ctrl-x-map)
-(define-key global-map (kbd "C-t") ctl-x-map)
-;; (define-key key-translation-map "\C-t" "\C-t")
-;; (define-key key-translation-map "\C-x" "\C-t")
-
-(use-package marginalia
- :bind
- (:map minibuffer-local-map
- ("M-n" . marginalia-cycle))
- :init
- (marginalia-mode))
-
-(use-package embark
- :ensure t
-
- :bind
- (("C-." . embark-act)
- ("C-;" . embark-dwim)
- ("C-h C-b" . embark-bindings))
-
- :init
- (setq prefix-help-command #'embark-prefix-help-command)
-
- :config
-
- ;; Hide the mode line of the Embark live/completions buffers
- (add-to-list 'display-buffer-alist
- '("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*"
- .
- (window-parameters (mode-line-format . none)))))
-
-(use-package embark-consult
- :ensure t
- :after (embark consult)
- :demand t
- :hook (embark-mode . consult-preview-at-point-mode))
-
-;; For editing grep buffers.
-(use-package wgrep)
-(use-package deadgrep
- :bind ("M-s g" . deadgrep))
-
-;; For recent files.
-(setq recentf-max-saved-items 1000)
-(setq recentf-auto-cleanup 'never)
-(defun kj/recentf-keep (file)
- (cond
- ((file-remote-p file) t)
- ((file-readable-p file))))
-(setq recentf-keep '(kj/recentf-keep))
-(setq recentf-save-file "~/.cache/emacs-recentf")
-(recentf-mode 1)
-(run-at-time nil (* 5 60) 'recentf-save-list)
-
-(setq global-mark-ring-max 500
- mark-ring-max 16)
-
-;; Example configuration for Consult
-(use-package consult
- ;; Replace bindings. Lazily loaded due by `use-package'.
- :bind (;; C-c bindings (mode-specific-map)
- ("C-c h" . kj/consult-history)
- ;;("C-c m" . consult-mode-command)
- ("C-c k" . consult-kmacro)
- ;; C-x bindings (ctl-x-map)
- ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command
- ("C-x b" . consult-buffer) ;; orig. switch-to-buffer
- ("C-x C-b" . consult-buffer) ;; orig. switch-to-buffer
- ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window
- ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame
- ("C-x r b" . consult-bookmark) ;; orig. bookmark-jump
- ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer
- ("C-c f r" . consult-recent-file)
- ;; Custom M-# bindings for fast register access
- ("M-#" . consult-register-load)
- ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated)
- ("C-M-#" . consult-register)
- ;; Other custom bindings
- ("M-y" . consult-yank-pop) ;; orig. yank-pop
- ("<help> a" . consult-apropos) ;; orig. apropos-command
- ;; M-g bindings (goto-map)
- ("M-g e" . consult-compile-error)
- ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck
- ("M-g g" . consult-goto-line) ;; orig. goto-line
- ("M-g M-g" . consult-goto-line) ;; orig. goto-line
- ("M-g o" . consult-outline) ;; Alternative: consult-org-heading
- ("M-g m" . consult-mark)
- ("M-g k" . consult-global-mark)
- ("M-g i" . consult-imenu)
- ("M-g I" . consult-imenu-multi)
- ;; M-s bindings (search-map)
- ("M-s d" . consult-find)
- ("M-s D" . consult-locate)
- ;; ("M-s g" . consult-grep)
- ("M-s G" . consult-git-grep)
- ("M-s r" . consult-ripgrep)
- ("M-s l" . consult-line)
- ("M-s L" . consult-line-multi)
- ("M-s m" . consult-multi-occur)
- ("M-s k" . consult-keep-lines)
- ("M-s u" . consult-focus-lines)
- ;; Isearch integration
- ("M-s e" . consult-isearch-history)
- :map isearch-mode-map
- ("M-e" . consult-isearch-history) ;; orig. isearch-edit-string
- ("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string
- ("M-s l" . consult-line) ;; needed by consult-line to detect isearch
- ("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch
- ;; Minibuffer history
- :map minibuffer-local-map
- ("M-s" . kj/consult-history) ;; orig. next-matching-history-element
- ("M-r" . kj/consult-history)) ;; orig. previous-matching-history-element
-
- ;; Enable automatic preview at point in the *Completions* buffer. This is
- ;; relevant when you use the default completion UI.
- ;; :hook (completion-list-mode . consult-preview-at-point-mode)
-
- ;; The :init configuration is always executed (Not lazy)
- :init
-
- ;; Optionally configure the register formatting. This improves the register
- ;; preview for `consult-register', `consult-register-load',
- ;; `consult-register-store' and the Emacs built-ins.
- (setq register-preview-delay 0.5
- register-preview-function #'consult-register-format)
-
- ;; Optionally tweak the register preview window.
- ;; This adds thin lines, sorting and hides the mode line of the window.
- (advice-add #'register-preview :override #'consult-register-window)
-
- ;; Use Consult to select xref locations with preview
- (setq xref-show-xrefs-function #'consult-xref
- xref-show-definitions-function #'consult-xref)
-
- ;; Configure other variables and modes in the :config section,
- ;; after lazily loading the package.
- :config
-
- ;; Use consult for completion.
- (setq completion-in-region-function #'consult-completion-in-region)
-
- ;; Optionally configure preview. The default value
- ;; is 'any, such that any key triggers the preview.
- (setq consult-preview-key '(:debounce 0.3 any))
- ;; (setq consult-preview-key (kbd "M-."))
- ;; (setq consult-preview-key (list (kbd "<S-down>") (kbd "<S-up>")))
- ;; For some commands and buffer sources it is useful to configure the
- ;; :preview-key on a per-command basis using the `consult-customize' macro.
- ;; (consult-customize
- ;; consult-theme
- ;; :preview-key '(:debounce 0.2 any)
- ;; consult-ripgrep consult-git-grep consult-grep
- ;; consult-bookmark consult-recent-file consult-xref
- ;; consult--source-bookmark consult--source-recent-file
- ;; consult--source-project-recent-file
- ;; :preview-key (kbd "M-."))
-
- ;; Optionally configure the narrowing key.
- ;; Both < and C-+ work reasonably well.
- (setq consult-narrow-key "<") ;; (kbd "C-+")
-
- (setq consult-ripgrep-args
- "rg --null --line-buffered --color=never --max-columns=1000 --path-separator / --smart-case --no-heading --with-filename --line-number --search-zip --hidden")
-
- ;; Optionally make narrowing help available in the minibuffer.
- ;; You may want to use `embark-prefix-help-command' or which-key instead.
- ;; (define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help)
-
- ;; By default `consult-project-function' uses `project-root' from project.el.
- ;; Optionally configure a different project root function.
- ;; There are multiple reasonable alternatives to chose from.
- ;;;; 1. project.el (the default)
- ;;(setq consult-project-function #'consult--default-project-function)
- ;;;; 2. projectile.el (projectile-project-root)
- (autoload 'projectile-project-root "projectile")
- (setq consult-project-function (lambda (_) (projectile-project-root)))
- ;;;; 3. vc.el (vc-root-dir)
- ;; (setq consult-project-function (lambda (_) (vc-root-dir)))
- ;;;; 4. locate-dominating-file
- ;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git")))
- )
-
-(use-package orderless
- :init
- (setq completion-styles '(orderless basic)
- completion-category-defaults nil
- completion-category-overrides '((file (styles partial-completion)))))
-
-(use-package which-key
- :init
- (which-key-mode))
-
-;; This is needed to fix an issue with magit transient dependencies.
-(use-package transient)
-(use-package magit)
-
-(use-package mixed-pitch
- :hook
- (text-mode . mixed-pitch-mode)
- (org-mode . mixed-pitch-mode)
- )
-
-(when (string= (system-name) "fedora")
- (setenv "SSH_AUTH_SOCK" (s-trim (shell-command-to-string "gpgconf --list-dirs agent-ssh-socket"))))
-
-(setq kj/font-height
- (cond ((string= (system-name) "fedora") 100)
- (t 150)))
-
-(custom-set-faces
- `(variable-pitch ((t (:family "Noto Serif" :height ,kj/font-height))))
- `(default ((t (:family "Iosevka" :height ,kj/font-height)))))
-
-;; (unless (equal system-name "minideck")
-;; (set-face-attribute 'fixed-pitch nil :font "Iosevka" :height 150)
-;; (set-face-attribute 'variable-pitch nil :font "Noto Serif"))
-
-;;; Compilation settings
-(setq compilation-ask-about-save nil)
-(setq compilation-scroll-output 'first-error)
-;; Allow longer output in compilation buffer.
-(add-to-list 'compilation-filter-hook #'comint-truncate-buffer)
-(setq comint-buffer-maximum-size 10000)
-
-(use-package ob-async)
-
-(use-package direnv
- :config
- (setq direnv-always-show-summary nil)
- (direnv-mode))
-
-(use-package projectile
- :ensure t
- :init
- (projectile-mode +1)
- :bind (:map projectile-mode-map
- ("C-x p" . projectile-command-map)))
-
-(use-package emacs
- :init
- (setq ediff-diff-options "-w" ; turn off whitespace checking
- ediff-split-window-function #'split-window-horizontally
- ediff-window-setup-function #'ediff-setup-windows-plain))
-
-(use-package anzu
- :config
- (global-anzu-mode +1)
- (global-set-key [remap query-replace] 'anzu-query-replace)
- (global-set-key [remap query-replace-regexp] 'anzu-query-replace-regexp))
-
-(defun meow-setup ()
- (setq meow-replace-state-name-list
- '((normal . "N")
- (motion . "M")
- (keypad . "🖩")
- (insert . "I")
- (beacon . "📻")))
- (setq meow-cheatsheet-layout meow-cheatsheet-layout-dvorak)
- (meow-leader-define-key
- '("1" . meow-digit-argument)
- '("2" . meow-digit-argument)
- '("3" . meow-digit-argument)
- '("4" . meow-digit-argument)
- '("5" . meow-digit-argument)
- '("6" . meow-digit-argument)
- '("7" . meow-digit-argument)
- '("8" . meow-digit-argument)
- '("9" . meow-digit-argument)
- '("0" . meow-digit-argument)
- '("/" . meow-keypad-describe-key)
- '("?" . meow-cheatsheet)
- '("b" . consult-buffer)
- ;;'("p" . projectile-command-map)
- )
- (meow-motion-overwrite-define-key
- ;; custom keybinding for motion state
- '("<escape>" . ignore))
- (meow-normal-define-key
- '("0" . meow-expand-0)
- '("9" . meow-expand-9)
- '("8" . meow-expand-8)
- '("7" . meow-expand-7)
- '("6" . meow-expand-6)
- '("5" . meow-expand-5)
- '("4" . meow-expand-4)
- '("3" . meow-expand-3)
- '("2" . meow-expand-2)
- '("1" . meow-expand-1)
- '("-" . negative-argument)
- '(";" . meow-reverse)
- '("," . meow-inner-of-thing)
- '("." . meow-bounds-of-thing)
- '("@" . er/expand-region)
- '("<" . meow-beginning-of-thing)
- '(">" . meow-end-of-thing)
- '("a" . meow-append)
- '("A" . meow-open-below)
- '("b" . meow-back-word)
- '("B" . meow-back-symbol)
- '("c" . meow-change)
- '("d" . meow-delete)
- '("D" . meow-backward-delete)
- '("e" . meow-line)
- '("E" . meow-goto-line)
- '("f" . meow-find)
- '("g" . meow-cancel-selection)
- '("G" . meow-grab)
- '("h" . meow-left)
- '("H" . meow-left-expand)
- '("i" . meow-insert)
- '("I" . meow-open-above)
- '("j" . meow-join)
- '("k" . meow-kill)
- '("l" . meow-till)
- '("m" . meow-mark-word)
- '("M" . meow-mark-symbol)
- '("n" . meow-next)
- '("N" . meow-next-expand)
- '("o" . meow-block)
- '("O" . meow-to-block)
- '("p" . meow-prev)
- '("P" . meow-prev-expand)
- '("q" . meow-quit)
- '("Q" . meow-goto-line)
- '("r" . meow-replace)
- '("R" . meow-swap-grab)
- '("s" . meow-search)
- '("/" . isearch-forward)
- '("?" . isearch-backward)
- '("t" . meow-right)
- '("T" . meow-right-expand)
- '("u" . meow-undo)
- '("U" . meow-undo-in-selection)
- '("v" . meow-visit)
- '("w" . meow-next-word)
- '("W" . meow-next-symbol)
- '("x" . meow-save)
- '("X" . meow-sync-grab)
- '("y" . meow-yank)
- '("z" . meow-pop-selection)
- '("P" . (lambda () (interactive) (forward-line -10)))
- '("N" . (lambda () (interactive) (forward-line 10)))
- '("'" . repeat)
- '("<escape>" . ignore))
-
- (add-hook 'git-commit-mode-hook #'meow-insert))
-
-;; (use-package meow
-;; :bind
-;; :config
-;; (meow-setup)
-;; (meow-global-mode 1)
-;; ;; (meow-setup-indicator) ; Not needed with doom-modeline.
-;; (setq meow-use-clipboard t)
-;; ;; (add-to-list 'meow-keypad-start-keys '(?t . ?x))
-;; ;; (add-to-list 'meow-keypad-start-keys '(?x . ?t))
-;; (define-key meow-insert-state-keymap "\C-[" #'meow-insert-exit)
-;; )
-
-(use-package emacs
- :hook (dired-mode . dired-omit-mode)
- :init
- (setq dired-dwim-target t ; suggest a target for moving/copying intelligently
- dired-hide-details-hide-symlink-targets nil
- ;; don't prompt to revert, just do it
- dired-auto-revert-buffer #'dired-buffer-stale-p
- ;; Always copy/delete recursively
- dired-recursive-copies 'always
- dired-recursive-deletes 'top
- ;; Ask whether destination dirs should get created when copying/removing files.
- dired-create-destination-dirs 'ask))
-
-;; (use-package dirvish
-;; :init
-;; (setq dirvish-hide-details nil)
-;; (dirvish-override-dired-mode))
-
-(use-package diredfl
- :hook (dired-mode . diredfl-mode))
-
-;; Tramp settings
-(setq tramp-use-ssh-controlmaster-options nil
- tramp-default-method "ssh")
-;; Need 'eval-after-load' of 'tramp-sh' here because nixos has a
-;; startup file that messes with this variable.
-(with-eval-after-load 'tramp-sh
- (add-to-list 'tramp-remote-path 'tramp-own-remote-path))
-
-(setq math-additional-units
- '((ZiB "1024 * EiB" "Zebibyte")
- (EiB "1024 * PiB" "Exbibyte")
- (PiB "1024 * TiB" "Pebibyte")
- (TiB "1024 * GiB" "Tebibyte")
- (GiB "1024 * MiB" "Gibibyte")
- (MiB "1024 * KiB" "Mebibyte")
- (KiB "1024 * B" "Kibibyte")
- (B nil "Byte")
- (Zib "1024 * ZiB" "Zebibit")
- (Eib "1024 * PiB" "Exbibit")
- (Pib "1024 * TiB" "Pebibit")
- (Tib "1024 * GiB" "Tebibit")
- (Gib "1024 * Mib" "Gibibit")
- (Mib "1024 * Kib" "Mebibit")
- (Kib "1024 * b" "Kibibit")
- (b "B / 8" "Bit")))
-
-
-;; Low menu delay.
-(setq which-key-idle-delay .5)
-
-;; Replace values in an alist from a list of replacements.
-;;
-;; Example:
-;; (kj/assq-replace '((:a . 1)) '((:a . 2)))
-(defun kj/assq-replace (replacements alist)
- (let ((replace1 (lambda (aelem alist)
- (cons aelem (assq-delete-all (car aelem) alist)))))
- (if replacements
- (kj/assq-replace (cdr replacements)
- (funcall replace1 (car replacements) alist))
- alist)))
-
-
-(use-package idle-highlight-mode
- :config
- (setq idle-highlight-idle-time 0.2)
- (set-face-attribute 'idle-highlight nil :inherit 'underline)
- :hook ((prog-mode text-mode) . idle-highlight-mode))
-
-(defun kj/smartparens-config ()
- (require 'smartparens-config)
- (bind-keys :map smartparens-mode-map
- ("C-M-a" . sp-beginning-of-sexp)
- ("C-M-e" . sp-end-of-sexp)
-
- ("C-<down>" . sp-down-sexp)
- ("C-<up>" . sp-up-sexp)
- ("M-<down>" . sp-backward-down-sexp)
- ("M-<up>" . sp-backward-up-sexp)
-
- ("C-M-f" . sp-forward-sexp)
- ("C-M-b" . sp-backward-sexp)
-
- ("C-M-n" . sp-next-sexp)
- ("C-M-p" . sp-previous-sexp)
-
- ("C-S-f" . sp-forward-symbol)
- ("C-S-b" . sp-backward-symbol)
-
- ("C-<right>" . sp-forward-slurp-sexp)
- ("M-<right>" . sp-forward-barf-sexp)
- ("C-<left>" . sp-backward-slurp-sexp)
- ("M-<left>" . sp-backward-barf-sexp)
-
- ("C-M-t" . sp-transpose-sexp)
- ("C-M-k" . sp-kill-sexp)
- ("C-k" . sp-kill-hybrid-sexp)
- ("C-M-w" . sp-copy-sexp)
- ("C-M-d" . delete-sexp)
-
- ("M-<backspace>" . backward-kill-word)
- ("C-<backspace>" . sp-backward-kill-word)
- ([remap sp-backward-kill-word] . backward-kill-word)
-
- ("M-[" . sp-backward-unwrap-sexp)
- ("M-]" . sp-unwrap-sexp)
-
- ("C-x C-t" . sp-transpose-hybrid-sexp)
-
- ("C-c (" . wrap-with-parens)
- ("C-c [" . wrap-with-brackets)
- ("C-c {" . wrap-with-braces)
- ("C-c '" . wrap-with-single-quotes)
- ("C-c \"" . wrap-with-double-quotes)
- ("C-c _" . wrap-with-underscores)
- ("C-c `" . wrap-with-back-quotes)
-
- ("M-k" . sp-raise-sexp)
- ("M-S" . sp-split-sexp)
- ("M-I" . sp-splice-sexp))
- )
-
-(use-package smartparens
- :init
- (kj/smartparens-config)
- :hook ((prog-mode lisp-mode) . smartparens-strict-mode)
- )
-
-;; (use-package paredit
-;; :hook ((lisp-mode emacs-lisp-mode) . paredit-mode)
-;; :bind (:map paredit-mode-map
-;; ("M-k" . paredit-raise-sexp)
-;; ("M-I" . paredit-splice-sexp))
-;; :hook (paredit-mode
-;; . (lambda ()
-;; (unbind-key "M-r" paredit-mode-map)
-;; (unbind-key "M-s" paredit-mode-map))))
-
-(define-key isearch-mode-map (kbd "C-RET")
- #'isearch-exit-other-end)
-;; Why does C-RET not always work?
-(define-key isearch-mode-map (kbd "C-<return>")
- #'isearch-exit-other-end)
-(defun isearch-exit-other-end ()
- "Exit isearch, at the opposite end of the string."
- (interactive)
- (isearch-exit)
- (goto-char isearch-other-end))
-(define-key isearch-mode-map (kbd "M-z")
- #'kj/isearch-zap)
-(defun kj/isearch-zap ()
- "Zap to beginning of search"
- (interactive)
- (isearch-exit)
- (goto-char isearch-other-end)
- (kill-region (region-beginning) (region-end)))
-
-(setq case-fold-search t)
-(setq case-replace t)
-
-(use-package expand-region
- :bind (("C-@" . #'er/expand-region)))
-
-(use-package multiple-cursors)
-
-(use-package ace-mc
- :bind (:map kj/leader-map
- ("h" . ace-mc-add-multiple-cursors)
- ("M-h" . ace-mc-add-single-cursor)))
-
-;; Disable VC over tramp.
-;;(setq-default vc-handled-backends nil)
-(defun kj/vc-off-if-remote ()
- (if (file-remote-p (buffer-file-name))
- (setq-local vc-handled-backends nil)))
-(add-hook 'find-file-hook 'kj/vc-off-if-remote)
-
-(use-package selected
- :demand t
- :diminish selected-minor-mode
- :bind (:map selected-keymap
- ("[" . align-code)
- ("f" . fill-region)
- ("U" . unfill-region)
- ("d" . downcase-region)
- ("r" . reverse-region)
- ("S" . sort-lines))
- :config
- (selected-global-mode 1))
-
-(setq kj/some-lines 6)
-(defun kj/forward-some-lines ()
- (interactive)
- (forward-line kj/some-lines))
-(defun kj/previous-some-lines ()
- (interactive)
- (previous-line kj/some-lines))
-
-;; Repeat commands (e.g., C-x o o o)
-(repeat-mode 1)
-
-;; Disable the built-in repeat-mode hinting
-;;(setq repeat-echo-function #'ignore)
-
-;; Spawn or hide a which-key popup
-;; (advice-add 'repeat-post-hook :after
-;; (defun repeat-help--which-key-popup ()
-;; (if-let ((cmd (or this-command real-this-command))
-;; (keymap (or repeat-map
-;; (repeat--command-property 'repeat-map))))
-;; (run-at-time
-;; 0 nil
-;; (lambda ()
-;; (which-key--create-buffer-and-show
-;; nil (symbol-value keymap))))
-;; (which-key--hide-popup))))
-
-;; Calendar settings.
-(setq calendar-week-start-day 1)
-;; Show calendar week numbers.
-(copy-face font-lock-constant-face 'calendar-iso-week-face)
-(set-face-attribute 'calendar-iso-week-face nil
- :height 0.7)
-(setq calendar-intermonth-text
- '(propertize
- (format "%2d"
- (car
- (calendar-iso-from-absolute
- (calendar-absolute-from-gregorian (list month day year)))))
- 'font-lock-face 'calendar-iso-week-face))
-
-;; (setq ispell-local-dictionary "en_US")
-;; (add-hook 'text-mode-hook flyspell-mode)
-;; (add-hook 'prog-mode-hook flyspell-prog-mode)
-
-;; Enabled commands
-(put 'narrow-to-region 'disabled nil)
-(put 'downcase-region 'disabled nil)
-(put 'upcase-region 'disabled nil)
-
-(defun kj/modules (module-directory)
- (cl-loop for path in (f-files module-directory)
- if (string-match "\\([^/]*\\).el" path)
- collect (intern (match-string 1 path))))
-
-(dolist (module (kj/modules
- (expand-file-name "lisp" user-emacs-directory)))
- (require module))
-
-(use-package embark
- :config
-
- ;; Experimental
- (defun find-file-keeping-default-directory (filename)
- (let ((dir default-directory))
- (with-current-buffer (find-file filename)
- (setq default-directory dir))))
- (define-key embark-file-map "@" 'find-file-keeping-default-directory))
-
-;; Restore gc.
-(setq gc-cons-threshold (* 16 1024 1024))
-
-;; (use-package devil
-;; :config
-;; (global-devil-mode))
-
-;;; Email settings
-(setq message-kill-buffer-on-exit t) ;; After sending a message.
-
-(let ((google-config-file
- (expand-file-name "google.el" user-emacs-directory)))
- (when (file-exists-p google-config-file)
- (load-file google-config-file)))
-
-;; Special symbols
-(use-package emacs
- :defer 1
- :config
- (defvar kj/iso-transl-char-map
- '(
- ;; fractions that emacs doesn't include
- ("1/3" . [?⅓])
- ("1/5" . [?⅕])
- ("1/6" . [?⅙])
- ("1/7" . [?⅐])
- ("1/8" . [?⅛])
- ("1/9" . [?⅑])
- ("1/10" . [?⅒])
- ("2/3" . [?⅔])
- ("2/5" . [?⅖])
- ("3/5" . [?⅗])
- ("3/8" . [?⅜])
- ("4/5" . [?⅘])
- ("5/6" . [?⅚])
- ("5/8" . [?⅝])
- ("7/8" . [?⅞])
- ;; add the emojis I commonly use
- (":c" . [?✅])
- (":u" . [?👍])
- (":d" . [?👎])
- (":w" . [?🖐])
- ;; card suits
- ("c" . [?♣])
- ("h" . [?♥])
- ("d" . [?♦])
- ("s" . [?♠])))
- (require 'iso-transl)
- (iso-transl-define-keys kj/iso-transl-char-map)
- :init
- (require 'iso-transl))
-
-(use-package pcre2el)
-(use-package pdf-tools)
-
-(defvar kj/help-modes '(helpful-mode
- help-mode
- shortdoc-mode
- Man-mode
- woman-mode
- Info-mode))
-
-(defun kj/buffer-help-p (buf act)
- "BUF is a help buffer, ignore ACT."
- (member (buffer-local-value 'major-mode (get-buffer buf)) kj/help-modes))
-
-(add-to-list 'display-buffer-alist
- `(kj/help-modes ;predicate
- (display-buffer-reuse-window
- display-buffer-reuse-mode-window) ;functions to try
- (mode . ,kj/help-modes)
- (inhibit-same-window . nil)))
-
-(use-package helpful
- :bind
- (([remap describe-key] . 'helpful-key)
- ([remap describe-variable] . 'helpful-variable)
- ([remap describe-symbol] . 'helpful-symbol)
- ([remap describe-command] . 'helpful-command)
- ([remap describe-function] . 'helpful-callable)))
-
-;;; Picking a specific eglot action.
-;; (defun my-replace-with-deduced-type (beg)
-;; (interactive "*d")
-;; (eglot-server-capable-or-lose :codeActionProvider)
-;; (let* ((server (eglot--current-server-or-lose))
-;; (action-title "Replace with deduced type")
-;; (available-actions (eglot-code-actions beg))
-;; (action (seq-find (lambda (a)
-;; (equal (plist-get a :title) action-title))
-;; available-actions)))
-;; (unless action
-;; (error "Could not find '%s': %s" action-title available-actions))
-;; (eglot-execute server action)))
-
-;;(transient-insert-suffix 'magit-dispatch "J"
-;; `("k" "KJ" kj/my-test))
diff --git a/emacs/.config/emacs-kj/lisp/kj-bindings.el b/emacs/.config/emacs-kj/lisp/kj-bindings.el
deleted file mode 100644
index d82706f..0000000
--- a/emacs/.config/emacs-kj/lisp/kj-bindings.el
+++ /dev/null
@@ -1,34 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-
-(use-package emacs
- :bind
- (("C-w" . kj/kill-word-or-region)
- ("C-c s" . kj/shell-here)
- ("C-c t" . eshell)
- ("C-c ." . kj/eshell-here)
- ("C-c c" . org-capture)
- ("M-o" . other-window)
- ("C-c a m" . notmuch)
- ("C-c M" . smerge-ediff)
- ("C-c b r" . revert-buffer)
- ("C-c r l" . consult-flymake)
- ("C-c r f" . eglot-format)
- ("C-c r g" . recompile)
- ("C-c r a" . eglot-code-actions)
- ("C-c r r" . eglot-rename)
- ("C-c r n" . flymake-goto-next-error)
- ("C-c r p" . flymake-goto-prev-error)
- ("C-c w u" . winner-undo)
- ("C-c w U" . winner-redo)
- ("C-<tab>" . completion-at-point)
- ;; Replace downcase-word binding.
- ("M-l" . iso-transl-ctl-x-8-map))
-
- :config
- (defvar kj/flymake-repeat-map (make-sparse-keymap "flymake"))
- (define-repeating-key kj/flymake-repeat-map "n" flymake-goto-next-error "next error")
- (define-repeating-key kj/flymake-repeat-map "p" flymake-goto-prev-error "prev error")
- (define-key kj/flymake-repeat-map (kbd "C-g") '("quit" . ignore))
- )
-
-(provide 'kj-bindings)
diff --git a/emacs/.config/emacs-kj/lisp/kj-defaults.el b/emacs/.config/emacs-kj/lisp/kj-defaults.el
deleted file mode 100644
index a5ced96..0000000
--- a/emacs/.config/emacs-kj/lisp/kj-defaults.el
+++ /dev/null
@@ -1,49 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-
-;; Backups
-(make-directory "~/.cache/emacs_backups/" t)
-(make-directory "~/.cache/emacs_autosave/" t)
-(setq backup-directory-alist '(("." . "~/.cache/emacs_backups/")))
-(setq auto-save-file-name-transforms '((".*" "~/.cache/emacs_autosave/" t)))
-
-;; Keep backups, but avoid same directory since it can be slow on tramp.
-(setq version-control t
- delete-old-versions -1
- vc-make-backup-files t
- create-lockfiles nil
- backup-by-copying t)
-
-(setq-default indent-tabs-mode nil)
-(setq sentence-end-double-space nil)
-(setq save-interprogram-paste-before-kill t)
-(setq mouse-yank-at-point t)
-(setq enable-recursive-minibuffers t)
-(set-language-environment "utf-8")
-(setq require-final-newline t)
-;; Save bookmark list every time a bookmark is added.
-(setq bookmark-save-flag 1)
-(delete-selection-mode 1)
-
-(savehist-mode 1)
-
-;; Resize settings
-(setq frame-inhibit-implied-resize t)
-(setq pixel-scroll-precision-mode t)
-
-(setq kill-whole-line t)
-
-(defun kj/kill-word-or-region (arg)
- (interactive "p")
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (backward-kill-word (or arg 1))))
-(global-set-key (kbd "C-w") 'kj/kill-word-or-region)
-
-(defun kj/open-line (n)
- (interactive "*p")
- (beginning-of-line)
- (open-line n)
- (indent-according-to-mode))
-(global-set-key (kbd "C-o") 'kj/open-line)
-
-(provide 'kj-defaults)
diff --git a/emacs/.config/emacs-kj/lisp/kj-development.el b/emacs/.config/emacs-kj/lisp/kj-development.el
deleted file mode 100644
index 397f0cc..0000000
--- a/emacs/.config/emacs-kj/lisp/kj-development.el
+++ /dev/null
@@ -1,93 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-(setq tab-stop-list (number-sequence 4 200 4))
-
-(use-package eglot
- :config
- (setq eglot-events-buffer-size 0))
-
-(add-hook 'prog-mode-hook 'subword-mode)
-
-;; Only used to get better eglot snippets.
-(use-package yasnippet
- :config
- (add-to-list 'yas-snippet-dirs (expand-file-name "yasnippets" user-emacs-directory))
- (yas-global-mode))
-
-(use-package rustic
- :after eglot
- :bind (("C-c C-r C-s" . rustic-popup)
- ("C-c C-r C-n" . kj/rustic-nextest-all))
- :config
- (defun kj/rustic-nextest-all ()
- (interactive)
- (setq rustic-cargo-nextest-exec-command "nextest run --run-ignored all")
- (rustic-cargo-run-nextest))
- (setq
- ;; eglot seems to be the best option right now.
- rustic-lsp-client 'eglot
- rustic-format-on-save nil
- ;; Prevent automatic syntax checking, which was causing lags and stutters.
- ;; eglot-send-changes-idle-time (* 60 60)
- )
- :hook
- (rustic-mode . eglot-ensure)
- ;; Disable the annoying doc popups in the minibuffer.
- ;; (add-hook 'eglot-managed-mode-hook (lambda () (eldoc-mode -1)))
- )
-
-(use-package markdown-mode
- :ensure t
- :mode ("README\\.md\\'" . gfm-mode)
- :init (setq markdown-command "multimarkdown"))
-
-(straight-use-package
- '(nix-mode :type git :host github :repo "NixOS/nix-mode"))
-(use-package nix-mode
- :mode "\\.nix\\'")
-
-(use-package ledger-mode
- :mode "\\.journal")
-(use-package unobtrusive-magit-theme)
-
-(use-package editorconfig
- :ensure t
- :config
- (editorconfig-mode 1))
-
-(use-package tree-sitter
- :config
- (global-tree-sitter-mode)
- (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode))
-
-(use-package tree-sitter-langs
- :after tree-sitter)
-
-(use-package clojure-mode)
-
-;; Devicetree mode for keyboard configs.
-(use-package dts-mode
- :mode "\\.keymap\\'")
-
-(use-package yaml-mode
- :mode "\\.\(yml|yaml\)\\'")
-
-(use-package ansi-color
- :hook (compilation-filter . ansi-color-compilation-filter))
-
-(use-package diff-hl
- :config
- (add-hook 'magit-pre-refresh-hook 'diff-hl-magit-pre-refresh)
- (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh)
- (global-diff-hl-mode))
-
-(use-package graphviz-dot-mode
- :ensure t)
-
-(use-package haskell-mode)
-(use-package tidal
- :config
- (setq tidal-boot-script-path "~/projects/audio/BootTidal.hs"))
-
-(use-package ess)
-
-(provide 'kj-development)
diff --git a/emacs/.config/emacs-kj/lisp/kj-email.el b/emacs/.config/emacs-kj/lisp/kj-email.el
deleted file mode 100644
index 6cfba74..0000000
--- a/emacs/.config/emacs-kj/lisp/kj-email.el
+++ /dev/null
@@ -1,97 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-
-(setq kj/fastmail-maildir (expand-file-name "~/Maildir/fastmail"))
-
-(when (file-exists-p (expand-file-name "~/Maildir"))
- (with-eval-after-load 'message
- (setq message-mail-user-agent 'notmuch-user-agent
- message-cite-style 'message-cite-style-gmail
- message-citation-line-function 'message-insert-formatted-citation-line
- message-kill-buffer-on-exit t)
- (add-hook 'message-mode-hook 'turn-off-auto-fill)
- (add-hook 'message-mode-hook 'visual-line-mode))
- (use-package notmuch
- :config
-
- (setq notmuch-show-all-tags-list t
- notmuch-show-relative-dates t
- notmuch-hello-tag-list-make-query "tag:unread"
- notmuch-archive-tags '("-inbox" "-unread")
- notmuch-fcc-dirs nil
- notmuch-show-logo nil
- notmuch-mua-cite-function 'message-cite-original-without-signature
- notmuch-wash-citation-lines-prefix most-positive-fixnum
- notmuch-wash-citation-lines-suffix most-positive-fixnum
- notmuch-show-indent-messages-width 0)
- (add-hook 'notmuch-show-hook 'kj/disable-trailing-whitespace)
-
- (defun kj/confirm-empty-subject ()
- "Allow user to quit when current message subject is empty."
- (or (message-field-value "Subject")
- (yes-or-no-p "Really send without Subject? ")
- (keyboard-quit)))
- (add-hook 'message-send-hook #'kj/confirm-empty-subject)
- (advice-add
- 'message-send :before (defun kj/notmuch-switch-to-local (&args)
- (when (file-remote-p default-directory)
- (cd (expand-file-name "~")))))
- (setq notmuch-saved-searches
- '((:name "inbox" :query "tag:inbox -tag:_gz" :key "i" :search-type tree)
- (:name "unread" :query "tag:unread" :key "u" :search-type tree)
- (:name "flagged" :query "tag:flagged" :key "f" :search-type tree)
- (:name "sent" :query "tag:sent" :key "t" :search-type tree)
- (:name "drafts" :query "tag:draft" :key "d" :search-type tree)
- (:name "all mail" :query "*" :key "a" :search-type tree)
- )))
-
- (setq kj/notmuch-wash-citation-regexp "^\\(\\(>\\|[[:space:]]\\)+\\).*\n")
-
- ;;; XXX consider upstreaming this.
- (defun kj/notmuch-wash-citations-by-depth (_msg _depth)
- (goto-char (point-min))
- (beginning-of-line)
- (let ((maxlevel 1))
- (while (intern-soft (format "message-cited-text-%d" maxlevel))
- (setq maxlevel (1+ maxlevel)))
- (setq maxlevel (1- maxlevel))
-
- (while (and (< (point) (point-max))
- (re-search-forward kj/notmuch-wash-citation-regexp nil t))
- (let* ((cite-start (match-beginning 0))
- (cite-end (match-end 0))
- (cite-level (seq-count (lambda (c) (eql c ?>)) (match-string 1)))
- (face-level (1+ (% (1- cite-level) maxlevel)))
- (cited-text-face (intern (format "message-cited-text-%d" face-level))))
- (overlay-put (make-overlay cite-start cite-end)
- 'face cited-text-face)))))
- ;; This doesn't seem to work that well... :(
- ;;(add-hook 'notmuch-show-insert-text/plain-hook #'kj/notmuch-wash-citations-by-depth 90)
-
- (defun kj/notmuch-tree-by-tag (tag)
- (interactive
- (list (notmuch-select-tag-with-completion "Notmuch search tag: ")))
- (notmuch-tree (concat "tag:" tag)))
-
- (define-key notmuch-hello-mode-map "T"
- 'kj/notmuch-tree-by-tag)
-
- (define-key notmuch-show-mode-map "!"
- (lambda ()
- "mark message as spam"
- (interactive)
- (notmuch-show-tag (list "+_gz" "-inbox"))))
-
- (define-key notmuch-search-mode-map "!"
- (lambda (&optional beg end)
- "mark thread as spam"
- (interactive (notmuch-interactive-region))
- (notmuch-search-tag (list "+_gz" "-inbox") beg end)))
- )
-
-(when (file-exists-p kj/fastmail-maildir)
- (setq sendmail-program "mujmap"
- message-send-mail-function 'message-send-mail-with-sendmail
- message-signature "Kjetil"
- message-sendmail-extra-arguments (list "-C" kj/fastmail-maildir "send")))
-
-(provide 'kj-email)
diff --git a/emacs/.config/emacs-kj/lisp/kj-eshell.el b/emacs/.config/emacs-kj/lisp/kj-eshell.el
deleted file mode 100644
index 7004b1d..0000000
--- a/emacs/.config/emacs-kj/lisp/kj-eshell.el
+++ /dev/null
@@ -1,83 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-(use-package eshell
- :bind
- (:map eshell-mode-map
- ("M-r" . consult-history))
- :hook ((eshell-first-time-mode . kj/eshell-on-load))
- :config
- (add-hook 'eshell-mode-hook
- (lambda ()
- (setenv "PAGER" "cat"))
- (setenv "EDITOR" "emacsclient"))
- (setq eshell-prefer-lisp-functions nil
- eshell-scroll-to-bottom-on-input 'all
- eshell-hist-ignoredups t
- eshell-destroy-buffer-when-process-dies t
- eshell-error-if-no-glob t)
- (setq tramp-remote-path '(tramp-own-remote-path))
-
- (defun kj/eshell-on-load ()
- (dolist (command '("htop" "tmux" "vim" "nvim" "watch"))
- (add-to-list 'eshell-visual-commands
- command))
-
- ;; (define-key eshell-prompt-mode-map (kbd "C-d") 'eshell-life-is-too-much)
- )
-
- (add-to-list 'eshell-complex-commands "ssh")
-
- (add-to-list 'eshell-modules-list 'eshell-tramp)
- (add-hook 'eshell-mode-hook 'visual-line-mode))
-
-(use-package pcmpl-args)
-
-(use-package esh-help
- :init
- (setup-esh-help-eldoc))
-
-(use-package eshell-syntax-highlighting
- :hook (eshell-mode . eshell-syntax-highlighting-mode))
-
-(defun eshell/ssh (&rest args)
- (if (= 1 (length args))
- (throw 'eshell-replace-command
- (eshell/cd
- (format "/ssh:%s:" (car args))))
- (throw 'eshell-replace-command
- (eshell-parse-command "*ssh"
- (eshell-stringify-list (flatten-tree args))))))
-
-(defvar kj/eshell-here-directory)
-
-(defun kj/eshell-buffer-name ()
- (let ((base (concat "*eshell:" default-directory)))
- (cond
- ((not (get-buffer base)) base)
- (t (cl-loop for n from 2
- for name = (format "%s<%d>" base n)
- until (not (get-buffer name))
- finally return name)))))
-
-(defun kj/eshell-update-buffer-name ()
- (interactive)
- (rename-buffer (kj/eshell-buffer-name)))
-(add-hook 'eshell-directory-change-hook 'kj/eshell-update-buffer-name)
-
-(defun kj/new-eshell-here ()
- (let ((default-directory kj/eshell-here-directory))
- (eshell t)))
-
-(defun kj/eshell-here ()
- (interactive)
- (unless (eq last-command 'kj/eshell-here)
- (setq kj/eshell-here-directory
- (if (derived-mode-p 'eshell-mode)
- (with-current-buffer (other-buffer (current-buffer) t)
- default-directory)
- default-directory)))
- (if (derived-mode-p 'eshell-mode)
- (kj/new-eshell-here)
- (eshell))
- (kj/eshell-update-buffer-name))
-
-(provide 'kj-eshell)
diff --git a/emacs/.config/emacs-kj/lisp/kj-history.el b/emacs/.config/emacs-kj/lisp/kj-history.el
deleted file mode 100644
index 31cd8c1..0000000
--- a/emacs/.config/emacs-kj/lisp/kj-history.el
+++ /dev/null
@@ -1,65 +0,0 @@
-;; -*- lexical-binding: t; -*-
-
-(defvar kj/history-command "fc -R $HISTFILE && fc -l 1"
- "History command used to get shell history.")
-
-(defvar kj/history-regexp
- (rx bol (* " ")
- ;; Index
- (* digit)
- (* " ")
- ;; Command
- (group (1+ (not "\n")))))
-
-(use-package consult
- :config
- (defun kj/get-shell-history ()
- (with-temp-buffer
- (unless (process-file
- "zsh"
- nil
- (current-buffer)
- nil
- "-c"
- kj/history-command)
- (error "Getting history failed: %s" (buffer-string)))
- (goto-char (point-min))
- (let ((result))
- (save-match-data
- (while (re-search-forward kj/history-regexp nil t)
- (let ((command
- ;; Fix up multi-line commands.
- (string-replace "\\\\n" "\\\n" (match-string-no-properties 1))))
- (push command result))))
- result)))
-
- (defun kj/consult-history ()
- (interactive)
- (if (not
- (or (and (minibufferp)
- (eq minibuffer-history-variable 'shell-command-history))
- (derived-mode-p 'term-mode 'shell-mode)
- ))
- (call-interactively 'consult-history)
- (pcase-let* ((bol
- (cond ((derived-mode-p 'eshell-mode) 'eshell-bol)
- ((derived-mode-p 'term-mode) 'term-bol)
- ((derived-mode-p 'comint-mode) 'comint-bol)))
- (`(,beg . ,end)
- (cond ((minibufferp)
- (cons (minibuffer-prompt-end) (point-max)))
- (bol (save-excursion
- (funcall bol)
- (cons (point) (pos-eol))))
- (t (cons (point) (point)))))
- (str (consult--read
- (kj/get-shell-history)
- :prompt "Shell history: "
- :history t
- :sort nil
- :initial (buffer-substring-no-properties beg end)
- :state (consult--insertion-preview beg end))))
- (delete-region beg end)
- (insert (substring-no-properties str))))))
-
-(provide 'kj-history)
diff --git a/emacs/.config/emacs-kj/lisp/kj-popup.el b/emacs/.config/emacs-kj/lisp/kj-popup.el
deleted file mode 100644
index 0ac99a5..0000000
--- a/emacs/.config/emacs-kj/lisp/kj-popup.el
+++ /dev/null
@@ -1,95 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-;;; Window placement
-;;; TODO: Test popper.el.
-;; (global-set-key (kbd "C-`") #'window-toggle-side-windows)
-;; (global-set-key (kbd "M-`") #'kj/popup-toggle-override)
-;; (setq window-sides-slots '(0 0 2 2)) ; 2 right side windows
-(setq switch-to-buffer-obey-display-actions t)
-(setq switch-to-buffer-in-dedicated-window 'pop)
-(setq even-window-sizes 'width-only)
-(defvar kj/popup-override nil)
-
-(defun kj/popup-clear-overrides ()
- (interactive)
- (dolist (buffer (buffer-list))
- (with-current-buffer buffer
- (kill-local-variable 'kj/popup-override))))
-
-(defun kj/popup-toggle-override ()
- (interactive)
- (if (local-variable-p 'kj/popup-override)
- (kill-local-variable 'kj/popup-override)
- (setq-local kj/popup-override
- (not (kj/popup-buffer-base (buffer-name)))))
- (let ((buffer (buffer-name)))
- (switch-to-prev-buffer)
- (switch-to-buffer buffer)))
-
-(defun kj/popup-buffer-base (buffer &optional condition)
- (or
- (s-matches-p
- (rx (| "*Help*"
- "*info*"
- (seq "*Messages*")
- (seq "*Warnings*")
- (seq "*Backtrace*")
- (seq "*eldoc " (* anything) "*")
- (seq "*WoMan " (* anything) "*")
- (seq "*man " (* anything) "*")
- (seq "fig: " (* anything))
- (seq "*htop*" (* anything))
- (seq "*Proced*" (* anything))
- (seq "*eshell" (* anything))
- (seq "*shell" (* anything))
- "*Occur*")) buffer)
- (with-current-buffer buffer
- (apply #'derived-mode-p
- '(magit-mode
- compilation-mode
- shell-mode
- comint-mode
- Custom-mode ; For customization
- fig-commit-mode)))))
-
-(defun kj/popup-buffer (buffer &optional condition)
- (with-current-buffer buffer
- (if (local-variable-p 'kj/popup-override)
- kj/popup-override
- (kj/popup-buffer-base buffer condition))))
-
-;; (setq transient-display-buffer-action
-;; '(display-buffer-in-best-side
-;; (slot . -1)
-;; (inhibit-same-window . t)
-;; (window-parameters
-;; (no-other-window . t))))
-
-(defun kj/display-new-popup (buffer alist)
- (let ((popup-window
- (display-buffer-in-direction
- buffer
- (append (if (> (frame-width) 160)
- '((direction . rightmost)
- (window-width . 80))
- '((direction . bottom)))))))
- (set-window-parameter popup-window 'kj/popup t)
- popup-window))
-
-(defun kj/find-popup-window ()
- (seq-find
- (lambda (w)
- (window-parameter w 'kj/popup))
- (window-list)))
-
-(defun display-popup-buffer (buffer alist)
- (let ((window (kj/find-popup-window)))
- (if window
- (window--display-buffer buffer window 'reuse alist)
- (kj/display-new-popup buffer alist))))
-
-;; (add-to-list 'display-buffer-alist
-;; `(kj/popup-buffer
-;; (display-popup-buffer)
-;; (slot . 0)))
-
-(provide 'kj-popup)
diff --git a/emacs/.config/emacs-v2/lisp/kj-lib.el b/emacs/.config/emacs-v2/lisp/kj-lib.el
deleted file mode 100644
index 5df1822..0000000
--- a/emacs/.config/emacs-v2/lisp/kj-lib.el
+++ /dev/null
@@ -1,11 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-
-(defmacro define-repeating-key (keymap key cmd &optional desc)
- `(let ((def
- ,(if desc
- `'(,desc . ,cmd)
- `',cmd)))
- (define-key ,keymap ,key def)
- (put ',cmd 'repeat-map ',keymap)))
-
-(provide 'kj-lib)
diff --git a/emacs/.config/emacs-v2/lisp/kj-multiple-cursors.el b/emacs/.config/emacs-v2/lisp/kj-multiple-cursors.el
deleted file mode 100644
index 962193d..0000000
--- a/emacs/.config/emacs-v2/lisp/kj-multiple-cursors.el
+++ /dev/null
@@ -1,20 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-
-(use-package multiple-cursors
- :config
- (defvar kj/multiple-cursors-map (make-sparse-keymap "cursors"))
- (define-repeating-key kj/multiple-cursors-map "." mc/mark-next-like-this "→ this")
- (define-repeating-key kj/multiple-cursors-map "," mc/mark-previous-like-this "← this")
- (define-repeating-key kj/multiple-cursors-map ">" mc/skip-to-next-like-this "⇥ this")
- (define-repeating-key kj/multiple-cursors-map "<" mc/skip-to-previous-like-this "⇤ this")
- (define-repeating-key kj/multiple-cursors-map "<" mc/skip-to-previous-like-this "⇤ this")
- (define-repeating-key kj/multiple-cursors-map "*" mc/mark-all-like-this "all like this")
- (define-repeating-key kj/multiple-cursors-map "w" mc/mark-next-like-this-word "word")
- (define-repeating-key kj/multiple-cursors-map "s" mc/mark-next-like-this-symbol "symbol")
- (define-repeating-key kj/multiple-cursors-map "(" mc/mark-all-symbols-like-this-in-defun "symbol defun")
- (define-repeating-key kj/multiple-cursors-map (kbd "DEL") mc/unmark-next-like-this "DEL last")
- (define-repeating-key kj/multiple-cursors-map (kbd "<delete>") mc/unmark-previous-like-this "DEL first")
- (define-key kj/multiple-cursors-map (kbd "C-g") '("quit" . ignore))
- (global-set-key (kbd "C-c m") (cons "cursors" kj/multiple-cursors-map)))
-
-(provide 'kj-multiple-cursors)
diff --git a/emacs/.config/emacs-v2/lisp/kj-org.el b/emacs/.config/emacs-v2/lisp/kj-org.el
deleted file mode 100644
index b6fda9c..0000000
--- a/emacs/.config/emacs-v2/lisp/kj-org.el
+++ /dev/null
@@ -1,251 +0,0 @@
-;;; -*- lexical-binding: t; -*-
-
-(use-package org
- :config
- (org-babel-do-load-languages 'org-babel-load-languages
- '((emacs-lisp . t)
- (sql . t)
- (shell . t)))
- (setq org-confirm-babel-evaluate nil
- org-return-follows-link t
- )
-
- ;; Install the link type
- (org-add-link-type "notmuch" 'org-notmuch-open)
- (add-hook 'org-store-link-functions 'org-notmuch-store-link)
-
- (defun org-notmuch-store-link ()
- "Store a link to a notmuch search or message."
- (when (eq major-mode 'notmuch-show-mode)
- (let* ((message-id (notmuch-show-get-prop :id))
- (subject (notmuch-show-get-subject))
- (to (notmuch-show-get-to))
- (from (notmuch-show-get-from))
- desc link)
- (org-store-link-props :type "notmuch" :from from :to to
- :subject subject :message-id message-id)
- (setq desc (org-email-link-description))
- (setq link (concat "notmuch:" "id:" message-id))
- (org-add-link-props :link link :description desc)
- link)))
-
- (defun org-notmuch-open (path)
- "Follow a notmuch message link specified by PATH."
- (org-notmuch-follow-link path))
-
- (defun org-notmuch-follow-link (search)
- "Follow a notmuch link to SEARCH.
-
-Can link to more than one message, if so all matching messages are shown."
- (require 'notmuch)
- (notmuch-show (org-link-unescape search)))
-
- (org-add-link-type "notmuch-search" 'org-notmuch-search-open)
- (add-hook 'org-store-link-functions 'org-notmuch-search-store-link)
-
- (defun org-notmuch-search-store-link ()
- "Store a link to a notmuch search or message."
- (when (eq major-mode 'notmuch-search-mode)
- (let ((link (concat "notmuch-search:"
- (org-link-escape notmuch-search-query-string)))
- (desc (concat "Notmuch search: " notmuch-search-query-string)))
- (org-store-link-props :type "notmuch-search"
- :link link
- :description desc)
- link)))
-
- (defun org-notmuch-search-open (path)
- "Follow a notmuch message link specified by PATH."
- (message path)
- (org-notmuch-search-follow-link path))
-
- (defun org-notmuch-search-follow-link (search)
- "Follow a notmuch link by displaying SEARCH in notmuch-search mode."
- (require 'notmuch)
- (notmuch-search (org-link-unescape search)))
-
- ;; If you use `org' and don't want your org files in the default location below,
- ;; change `org-directory'. It must be set before org loads!
- (setq org-directory "~/org/")
- (setq org-todo-keywords
- '((sequence
- "TODO(t)" "ACTIVE(a!)" "WAIT(w@/!)" "|" "DONE(d!)" "CANCELED(c@)")))
- (setq org-refile-use-outline-path nil)
- (setq org-refile-targets '((nil . (:maxlevel . 2))))
- (setq org-log-into-drawer t)
- (setq org-agenda-log-mode-items '(closed clock state))
- (setq org-agenda-start-day nil)
- (setq org-agenda-block-separator nil)
- (setq org-agenda-compact-blocks t)
- (setq org-agenda-start-with-log-mode nil)
- (setq org-habit-show-all-today t)
- (setq org-agenda-time-grid '((daily today require-timed) (800 1600) "......" "----------------------"))
- (setq org-roam-directory (concat org-directory "roam/"))
- (setq-default org-agenda-files '())
- (dolist (file '("tasks.org"
- "running-2022.org"))
- (add-to-list 'org-agenda-files (concat org-roam-directory file)))
- (setq org-roam-db-location (concat org-roam-directory "/org-roam.db"))
- (setq org-export-with-toc nil)
- (setq deft-directory org-directory)
- (setq deft-recursive t)
- ;; Org html export
- (setq org-html-htmlize-output-type 'css)
- ;; Website publish settings.
- (defvar kj/publish-tag "publish")
- (defvar kj/publish-directory "/ssh:orbekk@dragon.orbekk.com:/storage/srv/kj.orbekk.com")
- (add-to-list 'org-modules 'org-habit)
-
- (defvar org-publish-project-alist)
- (defun kj/find-agenda-files-containing-tag (tag)
- (setq org-agenda-archives-mode nil)
- (let* ((org-agenda-archives-mode nil)
- (candidates (org-agenda-files nil 'ifmode))
- (matcher (cdr (org-make-tags-matcher tag)))
- (files))
- ;; (message "Results:")
- (dolist (file candidates files)
- (org-check-agenda-file file)
- (with-current-buffer (org-get-agenda-file-buffer file)
- ;; (message "%S" (org-scan-tags 'agenda matcher nil))
- (when (org-scan-tags 'agenda matcher nil)
- (push file files))))))
-
- (defun kj/org-publish (&optional project force)
- (interactive)
- (setq project (or project "all"))
- (setq force (or force current-prefix-arg))
- (setq org-agenda-files (list org-roam-directory))
- (let* ((static-files-re (string-join '("css" "txt" "jpg" "png" "gif" "svg") "\\|"))
- (files-to-include (kj/find-agenda-files-containing-tag kj/publish-tag))
- ;; Disable org babel exports during publish entirely to speed up publish.
- ;; This messes up babel output handling.
- ;; (org-export-use-babel nil)
- (org-babel-default-header-args
- (kj/assq-replace '((:exports . "both")
- (:eval . "never-export"))
- org-babel-default-header-args))
- (org-publish-project-alist
- `(
- ("static"
- :base-directory ,(concat org-roam-directory "/static")
- :base-extension ,static-files-re
- :recursive t
- :publishing-directory ,(concat kj/publish-directory "/static")
- :publishing-function org-publish-attachment)
- ("source"
- :base-directory ,org-roam-directory
- :base-extension "org"
- :exclude ".*"
- :include ,files-to-include
- :recursive t
- :publishing-directory ,kj/publish-directory
- :publishing-function org-publish-attachment)
- ("html"
- :base-directory ,org-roam-directory
- :base-extension "org"
- :recursive t
- :exclude ".*"
- :include ,files-to-include
- :publishing-directory ,kj/publish-directory
- :publishing-function org-html-publish-to-html
-
- :with-broken-links t
- :with-toc nil
- :with-latex t
- :with-drawers t
- :with-title t
- :section-numbers nil
-
- ;; HTML options
- :html-toplevel-hlevel 2
- :html-preamble ""
- :html-postamble ""
- :html-html5-fancy t
- :html-doctype "html5"
- :html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"static/org.css\"/>"
- :html-head-include-scripts nil
- :html-head-include-default-style nil
- :html-container article)
-
- ("all" :components ("static" "source" "html")))))
-
- (org-publish project force)))
- ; (setq org-appear-autolinks t)
- ; (use-package! org-appear
- ; :hook (org-mode . org-appear-mode))
-
- (setq org-log-done 'time)
- (setq org-todo-keywords
- '((sequence
- "TODO(t)" ; A task that needs doing & is ready to do
- "PROJ(p)" ; A project, which usually contains other tasks
- "LOOP(r)" ; A recurring task
- "STRT(s)" ; A task that is in progress
- "WAIT(w)" ; Something external is holding up this task
- "HOLD(h)" ; This task is paused/on hold because of me
- "IDEA(i)" ; An unconfirmed and unapproved task or notion
- "|"
- "DONE(d!)" ; Task successfully completed
- "KILL(k)") ; Task was cancelled, aborted or is no longer applicable
- (sequence
- "[ ](T)" ; A task that needs doing
- "[-](S)" ; Task is in progress
- "[?](W)" ; Task is being held up or paused
- "|"
- "[X](D)") ; Task was completed
- (sequence
- "|"
- "OKAY(o)"
- "YES(y)"
- "NO(n)")))
-
- (setq org-journal-file-type 'weekly)
- (setq org-journal-dir org-roam-directory)
- (setq org-journal-file-format "journal-%Y-%m-%d.org")
- (setq org-journal-enable-agenda-integration t)
- (defun kj/org-journal-init ()
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (org-id-get-create)
- (org-set-property "category" "journal")))
-
- (defun kj/org-journal-file-header (time)
- (format-time-string "#+title: Week of %F (%W)\n"
- (org-journal--convert-time-to-file-type-time time)))
- (setq org-journal-file-header #'kj/org-journal-file-header)
- (add-hook 'org-journal-after-header-create-hook 'kj/org-journal-init)
-
- ;; Org
- (add-to-list 'org-export-backends 'md)
-
- (require 'org-tempo))
-
-(defun org-archive-done-tasks ()
- (interactive)
- (org-map-entries
- (lambda ()
- (org-archive-subtree)
- (setq org-map-continue-from (org-element-property :begin (org-element-at-point))))
- "/DONE" 'file))
-
-(use-package org-pomodoro
- :ensure t
- :after org
- :commands (org-pomodoro)
- :config
- (setq
- org-pomodoro-manual-break t
- org-pomodoro-time-format "%m"
- org-pomodoro-format "🍅%s"
- org-pomodoro-play-sounds nil
- alert-user-configuration (quote ((((:category . "org-pomodoro")) notifications nil))))
- :bind
- (("C-c o p" . org-pomodoro)))
-
-(use-package org-tidy
- :after org
- :hook (org-mode . org-tidy-mode))
-
-(provide 'kj-org)
diff --git a/emacs/.config/emacs-v2/early-init.el b/emacs/.config/emacs/early-init.el
index 8184bbb..8184bbb 100644
--- a/emacs/.config/emacs-v2/early-init.el
+++ b/emacs/.config/emacs/early-init.el
diff --git a/emacs/.config/emacs-v2/elpaca-installer.el b/emacs/.config/emacs/elpaca-installer.el
index 5a10886..5a10886 100644
--- a/emacs/.config/emacs-v2/elpaca-installer.el
+++ b/emacs/.config/emacs/elpaca-installer.el
diff --git a/emacs/.config/emacs-v2/emacs-custom.el b/emacs/.config/emacs/emacs-custom.el
index 819655f..819655f 100644
--- a/emacs/.config/emacs-v2/emacs-custom.el
+++ b/emacs/.config/emacs/emacs-custom.el
diff --git a/emacs/.config/emacs-v2/init.el b/emacs/.config/emacs/init.el
index ddc40f1..ddc40f1 100644
--- a/emacs/.config/emacs-v2/init.el
+++ b/emacs/.config/emacs/init.el
diff --git a/emacs/.config/emacs-v2/lisp/kj-bindings.el b/emacs/.config/emacs/lisp/kj-bindings.el
index e01b659..e01b659 100644
--- a/emacs/.config/emacs-v2/lisp/kj-bindings.el
+++ b/emacs/.config/emacs/lisp/kj-bindings.el
diff --git a/emacs/.config/emacs-v2/lisp/kj-defaults.el b/emacs/.config/emacs/lisp/kj-defaults.el
index c2cf6fd..c2cf6fd 100644
--- a/emacs/.config/emacs-v2/lisp/kj-defaults.el
+++ b/emacs/.config/emacs/lisp/kj-defaults.el
diff --git a/emacs/.config/emacs-v2/lisp/kj-development.el b/emacs/.config/emacs/lisp/kj-development.el
index 6eee3dd..6eee3dd 100644
--- a/emacs/.config/emacs-v2/lisp/kj-development.el
+++ b/emacs/.config/emacs/lisp/kj-development.el
diff --git a/emacs/.config/emacs-v2/lisp/kj-email.el b/emacs/.config/emacs/lisp/kj-email.el
index 721050b..721050b 100644
--- a/emacs/.config/emacs-v2/lisp/kj-email.el
+++ b/emacs/.config/emacs/lisp/kj-email.el
diff --git a/emacs/.config/emacs-v2/lisp/kj-eshell.el b/emacs/.config/emacs/lisp/kj-eshell.el
index 5617658..5617658 100644
--- a/emacs/.config/emacs-v2/lisp/kj-eshell.el
+++ b/emacs/.config/emacs/lisp/kj-eshell.el
diff --git a/emacs/.config/emacs-v2/lisp/kj-history.el b/emacs/.config/emacs/lisp/kj-history.el
index 9805aa1..9805aa1 100644
--- a/emacs/.config/emacs-v2/lisp/kj-history.el
+++ b/emacs/.config/emacs/lisp/kj-history.el
diff --git a/emacs/.config/emacs-v2/lisp/kj-init.el b/emacs/.config/emacs/lisp/kj-init.el
index 298040a..298040a 100644
--- a/emacs/.config/emacs-v2/lisp/kj-init.el
+++ b/emacs/.config/emacs/lisp/kj-init.el
diff --git a/emacs/.config/emacs-kj/lisp/kj-lib.el b/emacs/.config/emacs/lisp/kj-lib.el
index 5df1822..5df1822 100644
--- a/emacs/.config/emacs-kj/lisp/kj-lib.el
+++ b/emacs/.config/emacs/lisp/kj-lib.el
diff --git a/emacs/.config/emacs-kj/lisp/kj-multiple-cursors.el b/emacs/.config/emacs/lisp/kj-multiple-cursors.el
index 962193d..962193d 100644
--- a/emacs/.config/emacs-kj/lisp/kj-multiple-cursors.el
+++ b/emacs/.config/emacs/lisp/kj-multiple-cursors.el
diff --git a/emacs/.config/emacs-kj/lisp/kj-org.el b/emacs/.config/emacs/lisp/kj-org.el
index b6fda9c..b6fda9c 100644
--- a/emacs/.config/emacs-kj/lisp/kj-org.el
+++ b/emacs/.config/emacs/lisp/kj-org.el
diff --git a/emacs/.config/emacs-v2/templates b/emacs/.config/emacs/templates
index cb4219c..cb4219c 100644
--- a/emacs/.config/emacs-v2/templates
+++ b/emacs/.config/emacs/templates