From: James Bunton Date: Tue, 30 Jan 2024 13:18:51 +0000 (+1100) Subject: Massive update! X-Git-Url: https://code.delx.au/dotemacs/commitdiff_plain/1e6aea58aa155b613de2008b1489bedc49ab9231 Massive update! - Update all the packages! - Reorganise things to group packages with their configuration - Switch from Ivy/Counsel/Swiper to Vertico/Orderless/Consult - Removed a bunch of modules - Use eglot for LSP mode - Use flymake instead of flycheck --- diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 4faf7a8..0000000 --- a/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/auto-save-list -/games -/.mc-lists.el -/places -/recentf -/session.* -/tramp -/transient diff --git a/.gitmodules b/.gitmodules index 5976073..5205d94 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,135 +1,75 @@ [submodule "pkgbuild-mode"] - path = packages/pkgbuild-mode + path = file-modes/pkgbuild-mode url = https://github.com/juergenhoetzel/pkgbuild-mode.git [submodule "yaml-mode"] - path = packages/yaml-mode + path = file-modes/yaml-mode url = https://github.com/yoshiki/yaml-mode.git -[submodule "dockerfile-model"] - path = packages/dockerfile-mode - url = https://github.com/spotify/dockerfile-mode.git [submodule "editorconfig"] - path = packages/editorconfig + path = file-modes/editorconfig url = https://github.com/editorconfig/editorconfig-emacs.git -[submodule "coffee-mode"] - path = packages/coffee-mode - url = https://github.com/defunkt/coffee-mode -[submodule "slime"] - path = packages/slime - url = https://github.com/slime/slime.git -[submodule "flycheck"] - path = packages/flycheck - url = https://github.com/flycheck/flycheck -[submodule "multiple-cursors"] - path = packages/multiple-cursors - url = https://github.com/magnars/multiple-cursors.el.git [submodule "yasnippet"] - path = packages/yasnippet + path = text-edit/yasnippet url = https://github.com/joaotavora/yasnippet.git [submodule "expand-region"] - path = packages/expand-region - url = https://github.com/magnars/expand-region.el.git + path = text-edit/expand-region + url = https://github.com/magnars/expand-region.el.git [submodule "change-inner"] - path = packages/change-inner + path = text-edit/change-inner url = https://github.com/magnars/change-inner.el.git -[submodule "js2-mode"] - path = packages/js2-mode - url = https://github.com/mooz/js2-mode.git [submodule "dash"] - path = packages/dash + path = utils/dash url = https://github.com/magnars/dash.el.git -[submodule "diminish"] - path = packages/diminish - url = https://github.com/myrjola/diminish.el.git [submodule "git-modes"] - path = packages/git-modes + path = file-modes/git-modes url = https://github.com/magit/git-modes.git -[submodule "json-mode"] - path = packages/json-mode - url = https://github.com/joshwnj/json-mode.git -[submodule "json-snatcher"] - path = packages/json-snatcher - url = https://github.com/Sterlingg/json-snatcher.git -[submodule "json-reformat"] - path = packages/json-reformat - url = https://github.com/gongo/json-reformat.git -[submodule "swiper"] - path = packages/swiper - url = https://github.com/abo-abo/swiper.git -[submodule "haskell-mode"] - path = packages/haskell-mode - url = https://github.com/haskell/haskell-mode.git -[submodule "scala-mode"] - path = packages/scala-mode - url = https://github.com/ensime/emacs-scala-mode.git -[submodule "groovy-modes"] - path = packages/groovy-modes - url = https://github.com/Groovy-Emacs-Modes/groovy-emacs-modes.git -[submodule "dockerfile-mode"] - path = packages/dockerfile-mode - url = https://github.com/spotify/dockerfile-mode.git [submodule "markdown-mode"] - path = packages/markdown-mode + path = file-modes/markdown-mode url = https://github.com/jrblevin/markdown-mode.git -[submodule "direx"] - path = packages/direx - url = https://github.com/m2ym/direx-el.git -[submodule "git-gutter"] - path = packages/git-gutter - url = https://github.com/syohex/emacs-git-gutter.git -[submodule "shackle"] - path = packages/shackle - url = https://depp.brause.cc/shackle.git [submodule "magit"] - path = packages/magit + path = vc/magit url = https://github.com/magit/magit.git -[submodule "async"] - path = packages/async - url = https://github.com/jwiegley/emacs-async.git [submodule "with-editor"] - path = packages/with-editor + path = vc/with-editor url = https://github.com/magit/with-editor.git -[submodule "elisp-slime-nav"] - path = packages/elisp-slime-nav - url = https://github.com/purcell/elisp-slime-nav.git [submodule "ssh-file-modes"] - path = packages/ssh-file-modes + path = file-modes/ssh-file-modes url = https://github.com/petere/emacs-ssh-file-modes.git [submodule "jump-char"] - path = packages/jump-char + path = text-edit/jump-char url = https://github.com/lewang/jump-char.git [submodule "highlight-symbol"] - path = packages/highlight-symbol - url = https://github.com/nschum/highlight-symbol.el.git + path = text-edit/highlight-symbol + url = https://github.com/nschum/highlight-symbol.el.git [submodule "s"] - path = packages/s + path = utils/s url = https://github.com/magnars/s.el.git -[submodule "js2-refactor"] - path = packages/js2-refactor - url = https://github.com/magnars/js2-refactor.el.git -[submodule "wgrep"] - path = packages/wgrep - url = https://github.com/mhayashi1120/Emacs-wgrep.git -[submodule "cl-closure-template"] - path = packages/cl-closure-template - url = https://github.com/archimag/cl-closure-template.git [submodule "ledger-mode"] - path = packages/ledger-mode + path = file-modes/ledger-mode url = https://github.com/ledger/ledger-mode.git [submodule "magit-popup"] - path = packages/magit-popup + path = vc/magit-popup url = https://github.com/magit/magit-popup.git -[submodule "highlight-indent-guides"] - path = packages/highlight-indent-guides - url = https://github.com/DarthFennec/highlight-indent-guides.git -[submodule "graphql"] - path = packages/graphql - url = https://github.com/vermiculus/graphql.el.git -[submodule "treepy"] - path = packages/treepy - url = https://github.com/volrath/treepy.el [submodule "magit-transient"] - path = packages/magit-transient + path = vc/magit-transient url = https://github.com/magit/transient.git -[submodule "kotlin-mode"] - path = packages/kotlin-mode - url = https://github.com/Emacs-Kotlin-Mode-Maintainers/kotlin-mode +[submodule "compat"] + path = utils/compat + url = https://github.com/emacs-compat/compat +[submodule "vertico"] + path = completion/vertico + url = https://github.com/minad/vertico +[submodule "orderless"] + path = completion/orderless + url = https://github.com/oantolin/orderless +[submodule "marginalia"] + path = completion/marginalia + url = https://github.com/minad/marginalia +[submodule "consult"] + path = completion/consult + url = https://github.com/minad/consult +[submodule "diff-hl"] + path = vc/diff-hl + url = https://github.com/dgutov/diff-hl +[submodule "dockerfile-mode"] + path = file-modes/dockerfile-mode + url = https://github.com/spotify/dockerfile-mode.git diff --git a/.ignore b/.ignore index 3309a4d..8ebe76f 100644 --- a/.ignore +++ b/.ignore @@ -1,2 +1,25 @@ -# ripgrep ignore file -packages +/completion/consult +/completion/marginalia +/completion/orderless +/completion/vertico +/file-modes/dockerfile-mode +/file-modes/editorconfig +/file-modes/git-modes +/file-modes/ledger-mode +/file-modes/markdown-mode +/file-modes/pkgbuild-mode +/file-modes/ssh-file-modes +/file-modes/yaml-mode +/text-edit/change-inner +/text-edit/expand-region +/text-edit/highlight-symbol +/text-edit/jump-char +/text-edit/yasnippet +/utils/compat +/utils/dash +/utils/s +/vc/diff-hl +/vc/magit +/vc/magit-popup +/vc/magit-transient +/vc/with-editor diff --git a/README_KEYBINDINGS.md b/README-keys.md similarity index 75% rename from README_KEYBINDINGS.md rename to README-keys.md index 97d98fc..352481c 100644 --- a/README_KEYBINDINGS.md +++ b/README-keys.md @@ -20,6 +20,7 @@ C-x C-- Decrease font size # Help ``` +C-h . Help at point (Eldoc) C-h C-h Help C-h k Help about key binding C-h v Describe variable @@ -32,19 +33,11 @@ q Quit window and bury buffer # Search ``` -C-s Search forward (ivy/swiper mode) -C-r Resume ivy search -C-7 Start a cursor for each result (while searching) -C-' Switch to avy jump mode -M-i Insert selected item (while searching) -M-q Replace searched item (while searching) -M-p Search for previous item (while searching) -M-n Search for symbol at point (while searching) -C-M-A Read Ivy action -C-c C-o Dump all results into a buffer (ivy-occur) -C-c C-p Switch to wgrep mode +C-s Search forward (consult-line) +C-r Resume vertico search M-. Find thing at point M-, Pop tag mark +M-? Find references at point ``` # Files/buffers @@ -53,19 +46,15 @@ C-x C-s Save current buffer C-x s Save some buffers C-x C-w Write buffer to file C-x C-f Find file -C-x C-v Find file and kill current buffer -C-x f Find files in git repository -C-x g Grep in git repository -M-q Replace in git repository (while in git grep) -M-x find-file-at-point Find (open) filename at point -M-x browse-url-at-point Browse URL at point +C-x f Find files in project +C-x g Grep in project C-x k Kill buffer C-x c Clean up all buffers that are not visible -C-x b Select named buffer -C-x C-b Show all buffers +C-x b Switch to previous buffer +C-x t Switch between matching prod/test file +C-x C-b Show buffers C-x C-r Show recent files M-x scratch-buffer Create new scratch buffer -//,~ Go to {root,home} directory in find-file ``` # Windows/frames @@ -88,16 +77,19 @@ C-x 5 2 New frame (X11 window) M-m Jump back to start of indentation M-r Jump to window top/bottom/middle M-g Tab Jump to column -M-g f Jump to charactor, ;/, to go forward/back +M-g c Jump to character location +M-g f Jump to character, ;/, to go forward/back +M-g i Show imenu overview of file M-g g Jump to visible line or any line -M-g j Jump to word by first character -M-g M-g Jump to visible line or any line +M-g p Previous error +M-g n Next error +M-g l Show all errors C-a Beginning of line C-e End of line C-p Back one line C-n Forward one line C-b Back one character -C-n Forward one character +C-f Forward one character M-b Back a word M-f Forward a word M-a Backward sentence @@ -120,6 +112,7 @@ C-M-u Move up one level of parentheses Tab Indent current line correctly C-x Tab Indent region with left/right M-/ Expand at point +C-M-i Complete at point M-Tab Auto-complete at point M-; Comment line or region M-i Change inner region @@ -150,20 +143,9 @@ C-x C-space Pop global mark C-x C-x Exchange point and mark C-M-h Highlight expression M-@ Set mark at end of next word -C-= Expand region -M-= Display info about region -C-. Go to last edit -C-, Go to last edit reverse +M-= Expand region ``` -# Multiple cursors -``` -C-c m a Insert cursor at all matching points -C-c m l Insert extra cursor on all lines in region -C-c m m Ask to insert extra cursor at locations matching selected region -C-c m p Add cursor at previous text like region -C-c m n Add cursor at next text like region -``` # Highlighting ``` @@ -184,11 +166,10 @@ M-z Kill until C-k Kill to end of line M-0 C-k Kill to beginning of line C-c k Kill whole line -C-c s Copy line +C-c s Replace line C-d Delete next character M-d Delete next word M-Backspace Delete previous word -M-Space Collpase to one space around point M-\ Delete spaces around point C-x C-o Collapse blank lines M-x delete-trailing-whitespace Delete trailing whitespace @@ -236,18 +217,15 @@ Meta-Right-Click Yank secondary # Mode switching ``` -C-x C-j Open direx at current file +F7 Toggle flymake-mode F8 Toggle flyspell-mode F9 Toggle whitespace mode F10 Toggle word wrap M-s o Search in buffer and display results in occur-mode M-x multi-occur Search in buffers and display results in occur-mode M-x eshell Run eshell -M-x ielm Run Emacs Lisp REPL -M-x linum-mode Display line numbers M-x overwrite-mode Switch to overwrite mode M-x shell Run bash shell -M-x slime Run Common Lisp REPL M-x smerge-ediff Resolve merge conflicts in multi-window mode M-x smerge-mode Resolve merge conflicts by hunks M-x term Run terminal @@ -259,19 +237,18 @@ M-x yas-reload-all Reload all snippets g Reload e Switch to edit mode C-c C-c Switch back to occur mode -M-g M-p Previous occurence -M-g M-n Next occurence ``` -# Magit / Git gutter -``` -C-c g d Popup diff -C-c g p Previous hunk -C-c g n Next hunk -C-c g r Revert hunk -C-c g s Magit status -C-c g f Magit file specific commands -C-c g g Magit dispatch popup +# Magit / diff-hl +``` +C-x v * Popup diff +C-x v S Stage hunk +C-x v [ Previous hunk +C-x v ] Next hunk +C-x v n Revert hunk +C-x v s Magit status +C-x v f Magit file specific commands +C-x v g Magit dispatch popup p Previous section n Next section M-p Previous sibling section @@ -292,15 +269,6 @@ C-c C-c Compile and load the top-level f C-c M-k Compile (but not load) the current buffer's file ``` - -# Javascript -``` -C-c C-r Rename variable -C-c C-c Find type -C-c C-d Find docs -``` - - # Shell ``` M-! Execute command @@ -322,16 +290,6 @@ C-c ^ o Keep other # Flyspell ``` M-$ Correct word -C-M-i Automatically correct word C-; Automatically correct last word Popup word correction ``` - -# Flycheck -``` -C-c ! v Verify setup -C-c ! n Next error -C-c ! p Previous error -C-c ! l List errors -C-c ! x Disable checker -``` diff --git a/packages/README.md b/README-packages.md similarity index 88% rename from packages/README.md rename to README-packages.md index c096c5c..c221326 100644 --- a/packages/README.md +++ b/README-packages.md @@ -14,5 +14,5 @@ git rm rm -rf .git/modules/ # Updating -git submodule foreach git fetch +git submodule foreach git fetch --prune git submodule foreach git diff origin/master --stat|cat diff --git a/README.md b/README.md index 725f579..a3b18c0 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,5 @@ git submodule update Set up Emacs daemon to autostart: ``` -mkdir -p ~/.config/autostart -ln -sf ~/.dotfiles/.config/autostart/emacs.desktop ~/.config/autostart -mkdir -p ~/.local/share/applications -ln -sf ~/.dotfiles/.local/share/applications/emacs.desktop ~/.local/share/applications/ +systemctl --user enable --now emacs ``` diff --git a/check-packages.sh b/check-packages.sh new file mode 100755 index 0000000..2205b5d --- /dev/null +++ b/check-packages.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +cd "$(dirname "$0")" + +function get_submodules { + awk -F'"' '/submodule/ {print $2}' | sort +} + +echo '.gitmodules -> .git/config' +diff -u <(get_submodules < .gitmodules) <(get_submodules < .git/config) + +echo '.gitmodules -> .git/modules' +diff -u <(get_submodules < .gitmodules) <(ls .git/modules) diff --git a/completion/consult b/completion/consult new file mode 160000 index 0000000..42aaed5 --- /dev/null +++ b/completion/consult @@ -0,0 +1 @@ +Subproject commit 42aaed5cc85dfc21c9c31a43ccbf3db5b347e593 diff --git a/completion/init.el b/completion/init.el new file mode 100644 index 0000000..1db0562 --- /dev/null +++ b/completion/init.el @@ -0,0 +1,37 @@ +;;; -*- lexical-binding: t -*- + +(dolist (pkg '("~/.emacs.d/completion/vertico" + "~/.emacs.d/completion/vertico/extensions" + "~/.emacs.d/completion/orderless" + "~/.emacs.d/completion/marginalia" + "~/.emacs.d/completion/consult")) + (add-to-list 'load-path pkg)) + +(require 'vertico) +(require 'vertico-repeat) +(vertico-mode 1) +(add-hook 'minibuffer-setup-hook #'vertico-repeat-save) + +(require 'orderless) +(setq completion-styles '(orderless basic) + completion-category-overrides '((file (styles basic partial-completion)))) +(setq orderless-component-separator 'orderless-escapable-split-on-space) +(setq completion-ignore-case t) +(setq orderless-smart-case t) + +(require 'marginalia) +(marginalia-mode 1) + +(require 'consult) +(require 'consult-imenu) +(require 'consult-flymake) +(setq completion-in-region-function 'consult-completion-in-region) + +(global-set-key (kbd "C-s") 'consult-line) +(global-set-key (kbd "C-r") 'vertico-repeat) +(global-set-key (kbd "C-x g") 'consult-ripgrep) +(global-set-key (kbd "C-x C-b") 'consult-buffer) +(global-set-key (kbd "C-x C-r") 'consult-recent-file) +(global-set-key (kbd "M-g i") 'consult-imenu) +(global-set-key (kbd "M-g g") 'consult-goto-line) +(global-set-key (kbd "M-g M-g") 'consult-goto-line) diff --git a/completion/marginalia b/completion/marginalia new file mode 160000 index 0000000..ea356eb --- /dev/null +++ b/completion/marginalia @@ -0,0 +1 @@ +Subproject commit ea356ebb1ddb8d6da78574b517155475cf52d46f diff --git a/completion/orderless b/completion/orderless new file mode 160000 index 0000000..b247480 --- /dev/null +++ b/completion/orderless @@ -0,0 +1 @@ +Subproject commit b24748093b00b37c3a572c4909f61c08fa27504f diff --git a/completion/vertico b/completion/vertico new file mode 160000 index 0000000..4a7da56 --- /dev/null +++ b/completion/vertico @@ -0,0 +1 @@ +Subproject commit 4a7da56b02c6aefff8f6b4574a530a7cb54bc21a diff --git a/file-modes/dockerfile-mode b/file-modes/dockerfile-mode new file mode 160000 index 0000000..52c6c00 --- /dev/null +++ b/file-modes/dockerfile-mode @@ -0,0 +1 @@ +Subproject commit 52c6c00da1d31c0b6c29c74335b3af63ed6bf06c diff --git a/file-modes/editorconfig b/file-modes/editorconfig new file mode 160000 index 0000000..4b81a59 --- /dev/null +++ b/file-modes/editorconfig @@ -0,0 +1 @@ +Subproject commit 4b81a5992858cbf03bcd7ed6ef31e4be0b55a7c1 diff --git a/file-modes/git-modes b/file-modes/git-modes new file mode 160000 index 0000000..4a61a9b --- /dev/null +++ b/file-modes/git-modes @@ -0,0 +1 @@ +Subproject commit 4a61a9b86df9c824a99c522f42d55e68faf85f91 diff --git a/file-modes/init.el b/file-modes/init.el new file mode 100644 index 0000000..cbc40f1 --- /dev/null +++ b/file-modes/init.el @@ -0,0 +1,90 @@ +;;; -*- lexical-binding: t -*- + +(dolist (pkg '("~/.emacs.d/file-modes/dockerfile-mode" + "~/.emacs.d/file-modes/editorconfig" + "~/.emacs.d/file-modes/git-modes" + "~/.emacs.d/file-modes/ledger-mode" + "~/.emacs.d/file-modes/markdown-mode" + "~/.emacs.d/file-modes/pkgbuild-mode" + "~/.emacs.d/file-modes/ssh-file-modes" + "~/.emacs.d/file-modes/yaml-mode")) + (add-to-list 'load-path pkg)) + +;;;;;;;;;;;;;;;;;;;; +;; Built-in modes ;; +;;;;;;;;;;;;;;;;;;;; + +;; language servers +(require 'eglot) +(add-hook 'js-mode-hook #'eglot-ensure) +(add-hook 'python-mode-hook #'eglot-ensure) + +;; documentation +(require 'eldoc) +(setq eldoc-echo-area-use-multiline-p nil) +(setq eldoc-echo-area-prefer-doc-buffer t) +(global-set-key (kbd "C-h .") 'eldoc-print-current-symbol-info) + +;; syntax checking +(require 'flymake) +(global-set-key (kbd "M-g n") #'flymake-goto-next-error) +(global-set-key (kbd "M-g M-n") #'flymake-goto-next-error) +(global-set-key (kbd "M-g p") #'flymake-goto-prev-error) +(global-set-key (kbd "M-g M-p") #'flymake-goto-prev-error) +(global-set-key (kbd "M-g l") #'flymake-show-buffer-diagnostics) +(global-set-key (kbd "M-g M-l") #'flymake-show-buffer-diagnostics) + +(require 'cc-mode) +(setq c-auto-align-backslashes nil) +(setq c-default-style '((java-mode . "java") + (awk-mode . "awk") + (other . "stroustrup"))) + +(require 'perl-mode) +(setq perl-indent-level 4) +(setq perl-continued-statement-offset 0) +(setq perl-continued-brace-offset 0) +(setq perl-brace-offset 0) +(setq perl-brace-imaginary-offset 0) +(setq perl-label-offset 0) +(setq perl-indent-continued-arguments 4) + +(require 'python) +(add-hook 'python-mode-hook + (lambda () + (setq forward-sexp-function nil) + (set (make-local-variable 'python-indent-offset) 4))) + +(require 'sh-script) +(setq sh-use-smie nil) + +;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Third-party packages ;; +;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'dockerfile-mode) + +(require 'editorconfig) +(setq editorconfig-mode-lighter "") +(editorconfig-mode 1) + +(require 'git-modes) + +(require 'ledger-mode nil 'noerror) +(add-to-list 'auto-mode-alist '("\\.ledger\\'" . ledger-mode)) +(setq ledger-post-amount-alignment-column 72) +(setq ledger-reconcile-default-commodity "AUD") +(setq ledger-clear-whole-transactions t) +(setq org-read-date-prefer-future nil) +(custom-set-faces + '(ledger-font-posting-account-face ((t (:inherit default))))) + +(require 'markdown-mode) +(setq markdown-command "markdown_py -x markdown.extensions.smart_strong -x markdown.extensions.fenced_code -x markdown.extensions.nl2br") +(add-to-list 'auto-mode-alist '("\\.mdown\\'" . markdown-mode) t) + +(require 'pkgbuild-mode) + +(require 'ssh-file-modes) + +(require 'yaml-mode) diff --git a/file-modes/ledger-mode b/file-modes/ledger-mode new file mode 160000 index 0000000..11e748d --- /dev/null +++ b/file-modes/ledger-mode @@ -0,0 +1 @@ +Subproject commit 11e748d4838d51772f531a75849349ed8cd939ed diff --git a/file-modes/markdown-mode b/file-modes/markdown-mode new file mode 160000 index 0000000..e096bb9 --- /dev/null +++ b/file-modes/markdown-mode @@ -0,0 +1 @@ +Subproject commit e096bb97a91fcd4dc2b46d8b6e093194b03b7364 diff --git a/file-modes/pkgbuild-mode b/file-modes/pkgbuild-mode new file mode 160000 index 0000000..9525be8 --- /dev/null +++ b/file-modes/pkgbuild-mode @@ -0,0 +1 @@ +Subproject commit 9525be8ecbd3a0d0bc7cc27e6d0f403e111aa067 diff --git a/packages/ssh-file-modes b/file-modes/ssh-file-modes similarity index 100% rename from packages/ssh-file-modes rename to file-modes/ssh-file-modes diff --git a/file-modes/yaml-mode b/file-modes/yaml-mode new file mode 160000 index 0000000..5b58248 --- /dev/null +++ b/file-modes/yaml-mode @@ -0,0 +1 @@ +Subproject commit 5b58248ab255dff6cfa4c4057a191bc4446ee5b6 diff --git a/init.el b/init.el index 04d01c6..5897f14 100644 --- a/init.el +++ b/init.el @@ -1,45 +1,173 @@ ;;; -*- lexical-binding: t -*- -(require 'seq) +;;;;;;;;;;;;;;;; +;; Early init ;; +;;;;;;;;;;;;;;;; + +(let ((dir "~/.cache/emacs/eln-cache/")) + (unless (file-accessible-directory-p dir) + (make-directory dir)) + (startup-redirect-eln-cache dir)) + +(let ((dir "~/.cache/emacs/saves/")) + (unless (file-accessible-directory-p dir) + (make-directory dir)) + (setq auto-save-list-file-prefix dir)) + +(let ((dir "~/.cache/emacs/backups/")) + (unless (file-accessible-directory-p dir) + (make-directory dir)) + (setq backup-directory-alist `(("." . ,dir)))) + +(setq save-place-file "~/.cache/emacs/places") + +(setq project-list-file "~/.cache/emacs/projects") + +(setq tramp-persistency-file-name "~/.cache/emacs/tramp") + +;;;;;;;;;;;;;;;;;;;; +;; Visual options ;; +;;;;;;;;;;;;;;;;;;;; + +(load-file "~/.emacs.d/pastels-on-dark-theme.el") +(enable-theme 'pastels-on-dark) + +(setq default-frame-alist '((vertical-scroll-bars . nil) + (menu-bar-lines . 0) + (tool-bar-lines . 0) + (background-mode . dark) + (alpha . 95) + (font . "monospace 12"))) + +(column-number-mode t) + +(line-number-mode t) + +(show-paren-mode t) + +(setq-default show-trailing-whitespace t) + +;; 256-color mode in screen terminals +(add-to-list 'term-file-aliases + '("screen.xterm-256color" . "screen-256color")) + +;;;;;;;;;;;;;;;;;;;;; +;; General options ;; +;;;;;;;;;;;;;;;;;;;;; + +(add-hook 'text-mode-hook #'goto-address-mode) +(add-hook 'prog-mode-hook #'goto-address-prog-mode) + +(global-auto-revert-mode 1) +(setq global-auto-revert-non-file-buffers t) +(setq auto-revert-verbose nil) + +(setq auto-save-interval 0) +(setq auto-save-timeout 30) + +;; backup files - keep 10 numbered backups +(setq backup-by-copying t) +(setq delete-old-versions t) +(setq kept-new-versions 10) +(setq kept-old-versions 0) +(setq vc-make-backup-files t) +(setq version-control t) + +(setq create-lockfiles nil) + +(delete-selection-mode t) + +(setq disabled-command-function nil) + +(setq ediff-window-setup-function 'ediff-setup-windows-plain + ediff-split-window-function 'split-window-horizontally) + +(setq find-file-visit-truename t) + +(setq help-window-select t) + +(global-hl-line-mode 1) + +(setq mouse-1-click-follows-link nil) + +(setq mouse-wheel-scroll-amount '(3)) +(setq mouse-wheel-progressive-speed nil) + +(repeat-mode 1) + +(setq save-interprogram-paste-before-kill t) + +(save-place-mode 1) + +(setq scroll-conservatively 1) +(setq scroll-margin 1) + +(setq shift-select-mode nil) + +(setq sentence-end-double-space nil) + +(setq undo-limit 10000000) +(setq undo-strong-limit undo-limit) + +;; unique buffer names +(setq uniquify-strip-common-suffix t) +(setq uniquify-buffer-name-style 'post-forward) + +(setq vc-follow-symlinks t) + +(xterm-mouse-mode 1) + +(defalias 'yes-or-no-p 'y-or-n-p) + +;;;;;;;;;;;;;;;;; +;; Keybindings ;; +;;;;;;;;;;;;;;;;; + +(global-set-key (kbd "C-x f") 'project-find-file) + +;; Text formatting +(global-set-key (kbd "M-;") 'comment-line) +(global-set-key (kbd "C-c d") 'duplicate-dwim) +(global-set-key (kbd "M-z") 'zap-up-to-char) +(global-set-key (kbd "C-c k") 'kill-whole-line) + +;; Windows/frames +(global-set-key (kbd "") 'windmove-up) +(global-set-key (kbd "") 'windmove-down) +(global-set-key (kbd "") 'windmove-left) +(global-set-key (kbd "") 'windmove-right) + +;; Mode switching +(global-set-key (kbd "") 'flymake-mode) +(global-set-key (kbd "") 'flyspell-mode) +(global-set-key (kbd "") 'whitespace-mode) +(global-set-key (kbd "") 'toggle-truncate-lines) + +;; Disable some default bindings from the builtin mouse.el +(global-set-key [C-down-mouse-1] nil) +(global-set-key [C-down-mouse-2] nil) +(global-set-key [C-down-mouse-3] nil) +(global-set-key [S-down-mouse-1] nil) +(global-set-key [S-down-mouse-2] nil) +(global-set-key [S-down-mouse-3] nil) + +;; Disable suspend-frame, it's annoying +(global-set-key (kbd "C-z") nil) +(global-set-key (kbd "C-x C-z") nil) + +;;;;;;;;;;;;;;;;;;; +;; Load packages ;; +;;;;;;;;;;;;;;;;;;; (defvar my/original-load-path load-path) -(defun my/add-to-load-path (dirname) - (and (file-accessible-directory-p dirname) - (seq-filter (lambda (file) - (string-match-p "\\.el$" file)) - (directory-files dirname)) - (add-to-list 'load-path dirname))) - -(defun my/setup-load-path () - (setq load-path my/original-load-path) - - (my/add-to-load-path "~/.emacs.d/lisp") - - (dolist (dirname (directory-files "~/.emacs.d/packages" 'full "^[^\\.]")) - (my/add-to-load-path dirname) - (my/add-to-load-path (concat dirname "/lisp"))) - - (message "Set load-path: %S" load-path)) - - -(my/setup-load-path) - -(load-library "my-backups") -(load-library "my-direx") -(load-library "my-editing-defuns") -(load-library "my-file-modes") -(load-library "my-find-test-file") -(load-library "my-flycheck") -(load-library "my-frame-title") -(load-library "my-gui") -(load-library "my-ivy") -(load-library "my-keys") -(load-library "my-kill-buffers") -(load-library "my-minor-modes") -(load-library "my-recentf") -(load-library "my-scratch") -(load-library "my-shackle") -(load-library "my-vc") - -(message "Successfully loaded init.el") +(defun my/reset-load-path () + (setq load-path my/original-load-path)) + +(message "Loading packages...") +(load-file "~/.emacs.d/utils/init.el") +(load-file "~/.emacs.d/completion/init.el") +(load-file "~/.emacs.d/text-edit/init.el") +(load-file "~/.emacs.d/file-modes/init.el") +(load-file "~/.emacs.d/vc/init.el") +(message "Finished loading init.el") diff --git a/lisp/my-backups.el b/lisp/my-backups.el deleted file mode 100644 index e944920..0000000 --- a/lisp/my-backups.el +++ /dev/null @@ -1,28 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(setq create-lockfiles nil) - - -(let ((dir "~/.cache/emacs/saves/")) - (unless (file-accessible-directory-p dir) - (make-directory dir)) - - (setq auto-save-file-name-transforms `((".*" ,dir t))) - (setq auto-save-interval 0) - (setq auto-save-timeout 30)) - - -(let ((dir "~/.cache/emacs/backups/")) - (unless (file-accessible-directory-p dir) - (make-directory dir)) - - (setq backup-directory-alist `(("." . ,dir))) - - (setq vc-make-backup-files t) - (add-hook 'after-save-hook (lambda () (setq buffer-backed-up nil))) - - (setq backup-by-copying t) - (setq version-control t) - (setq kept-new-versions 10) - (setq kept-old-versions 0) - (setq delete-old-versions t)) diff --git a/lisp/my-direx.el b/lisp/my-direx.el deleted file mode 100644 index 89ca4b7..0000000 --- a/lisp/my-direx.el +++ /dev/null @@ -1,7 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(require 'direx) -(require 'direx-project) -(require 'dired-x) - -(defalias 'direx:find-item 'direx:find-item-other-window) diff --git a/lisp/my-file-modes.el b/lisp/my-file-modes.el deleted file mode 100644 index 5bbd8b0..0000000 --- a/lisp/my-file-modes.el +++ /dev/null @@ -1,84 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(setq-default indent-tabs-mode nil) -(setq-default require-final-newline t) - -(require 'cc-mode) -(setq c-auto-align-backslashes nil) -(setq c-default-style '((java-mode . "java") - (awk-mode . "awk") - (other . "stroustrup"))) - -(require 'closure-template-html-mode) -(setq sgml-basic-offset 4) - -(require 'coffee-mode) -(setq coffee-tab-width 4) - -(require 'dockerfile-mode) - -(require 'git-modes) - -(require 'groovy-mode) -(add-to-list 'auto-mode-alist '("\\.groovy\\'" . groovy-mode)) - -(require 'haskell-mode) - -(require 'json-mode) -(require 'js) -(require 'js2-mode) -(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode)) -(add-to-list 'interpreter-mode-alist '("node" . js2-mode)) -(setq js2-concat-multiline-strings 'eol) -(setq js2-highlight-external-variables nil) -(setq js2-mode-show-parse-errors nil) -(setq js2-mode-show-strict-warnings nil) -(setq js--declaration-keyword-re "x^") ; declarations should have normal indentation -(setq js-indent-align-list-continuation nil) - -(add-hook 'js2-mode-hook #'js2-refactor-mode) - -(require 'js2-refactor) -(js2r-add-keybindings-with-prefix "C-c C-m") -(setq js2r-always-insert-parens-around-arrow-function-params t) -(setq js2r-prefered-quote-type 2) - -(require 'kotlin-mode) - -(require 'ledger-mode nil 'noerror) -(add-to-list 'auto-mode-alist '("\\.ledger\\'" . ledger-mode)) -(setq ledger-post-amount-alignment-column 72) -(setq ledger-reconcile-default-commodity "AUD") -(setq ledger-clear-whole-transactions t) -(setq org-read-date-prefer-future nil) - -(require 'markdown-mode) -(setq markdown-command "markdown_py -x markdown.extensions.smart_strong -x markdown.extensions.fenced_code -x markdown.extensions.nl2br") -(add-to-list 'auto-mode-alist '("\\.mdown\\'" . markdown-mode) t) - -(require 'pkgbuild-mode) - -(require 'python) -(add-hook 'python-mode-hook - (lambda () - (setq forward-sexp-function nil) - (set (make-local-variable 'python-indent-offset) 4))) - - -(require 'scala-mode) - -(require 'slime) -(setq inferior-lisp-program "sbcl") - -(require 'sh-script) -(setq sh-use-smie nil) - -(require 'ssh-file-modes) - -(when (require 'stumpwm-mode nil 'noerror) - (add-to-list 'auto-mode-alist '("/\\.stumpwmrc\\'" . stumpwm-mode))) - -(require 'wgrep) -(setq wgrep-auto-save-buffer t) - -(require 'yaml-mode) diff --git a/lisp/my-flycheck.el b/lisp/my-flycheck.el deleted file mode 100644 index a0256d5..0000000 --- a/lisp/my-flycheck.el +++ /dev/null @@ -1,41 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(require 'flycheck) - -(global-flycheck-mode 1) - -(setq-default flycheck-disabled-checkers '(emacs-lisp-checkdoc)) - -(setq flycheck-emacs-lisp-load-path 'inherit) - -(add-hook 'flycheck-mode-hook #'my/use-eslint-from-node-modules) - -(setq flycheck-indication-mode 'right-fringe) - -(define-fringe-bitmap 'flycheck-fringe-bitmap-double-arrow - (vector #b00000000 - #b00000000 - #b00000000 - #b00000000 - #b00000000 - #b00011001 - #b00110110 - #b01101100 - #b11011000 - #b01101100 - #b00110110 - #b00011001 - #b00000000 - #b00000000 - #b00000000 - #b00000000 - #b00000000)) - -(defun my/use-eslint-from-node-modules () - (let* ((root (locate-dominating-file - (or (buffer-file-name) default-directory) - "node_modules")) - (eslint (and root - (expand-file-name "node_modules/.bin/eslint" root)))) - (when (and eslint (file-executable-p eslint)) - (setq-local flycheck-javascript-eslint-executable eslint)))) diff --git a/lisp/my-gui.el b/lisp/my-gui.el deleted file mode 100644 index 1e5fc81..0000000 --- a/lisp/my-gui.el +++ /dev/null @@ -1,62 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(menu-bar-mode -1) -(tool-bar-mode -1) -(scroll-bar-mode -1) - -(require 'pastels-on-dark-theme) -(enable-theme 'pastels-on-dark) -(setq frame-background-mode 'dark) - -(setq default-frame-alist '((vertical-scroll-bars) - (background-mode . dark) - (alpha . 95) - (font . "monospace 12"))) - -(require 'ansi-color) -(setq ansi-color-names-vector - '("#000000" - "#fc391f" - "#31e722" - "#eaec23" - "#4856f7" - "#f935f8" - "#14f0f0" - "#e9ebeb")) -(setq ansi-color-map (ansi-color-make-color-map)) - -(add-to-list 'term-file-aliases - '("screen.xterm-256color" . "screen-256color")) - -(setq scroll-conservatively 1) -(setq scroll-margin 1) -(setq mouse-wheel-scroll-amount '(3)) -(setq mouse-wheel-progressive-speed nil) - -(setq column-number-mode t) -(setq line-number-mode t) - -(show-paren-mode t) - -(dolist (hook '(prog-mode-hook text-mode-hook)) - (add-hook hook (lambda () - (setq show-trailing-whitespace t)))) - -(setq shift-select-mode nil) -(delete-selection-mode t) -(setq sentence-end-double-space nil) - -(require 'uniquify) -(setq uniquify-strip-common-suffix t) -(setq uniquify-buffer-name-style 'post-forward) - -(defalias 'yes-or-no-p 'y-or-n-p) - -(setq find-file-visit-truename t) - -(setq disabled-command-function nil) - -(setq save-interprogram-paste-before-kill t) - -(setq undo-limit 10000000) -(setq undo-strong-limit undo-limit) diff --git a/lisp/my-ivy.el b/lisp/my-ivy.el deleted file mode 100644 index 6c284b2..0000000 --- a/lisp/my-ivy.el +++ /dev/null @@ -1,48 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(require 'counsel) -(require 'ivy) -(require 'swiper) - -(ivy-mode 1) -(counsel-mode 1) - -(setq ivy-wrap t) -(setq ivy-extra-directories '("./")) -(setq ivy-count-format "%d/%d ") -(setq ivy-case-fold-search-default t) - -(setq counsel-find-file-at-point t) -(setq counsel-find-file-ignore-regexp "\\(?:\\`[#.]\\)\\|\\(?:[#~]\\'\\)") - -(setq counsel-grep-base-command "grep -E -n -i -e %s %s") -(setq counsel-rg-base-command "rg -S --no-heading --line-number --color never --hidden --ignore-file ~/.emacs.d/rg-ignore %s .") -(defvar counsel-rg-files-command "rg --files --hidden --ignore-file ~/.emacs.d/rg-ignore") - -(defun counsel-rg-jump (&optional initial-input initial-directory) - "Jump to a file below the current directory. -List all files within the current directory or any of its subdirectories. -INITIAL-INPUT can be given as the initial minibuffer input. -INITIAL-DIRECTORY, if non-nil, is used as the root directory for search." - (interactive - (list nil - (when current-prefix-arg - (read-directory-name "From directory: ")))) - (counsel-require-program "rg") - (let ((default-directory (or initial-directory - (locate-dominating-file default-directory ".git") - default-directory))) - (ivy-read "rg --files: " - (split-string - (shell-command-to-string counsel-rg-files-command) - "\n" t) - :matcher #'counsel--find-file-matcher - :initial-input initial-input - :action (lambda (x) - (with-ivy-window - (find-file (expand-file-name x ivy--directory)))) - :preselect (counsel--preselect-file) - :require-match 'confirm-after-completion - :history 'file-name-history - :keymap counsel-find-file-map - :caller 'counsel-rg-jump))) diff --git a/lisp/my-keys.el b/lisp/my-keys.el deleted file mode 100644 index 6c7d1f0..0000000 --- a/lisp/my-keys.el +++ /dev/null @@ -1,81 +0,0 @@ -;;; -*- lexical-binding: t -*- - -;; Disable suspend-frame, it's annoying -(global-set-key (kbd "C-z") nil) -(global-set-key (kbd "C-x C-z") nil) - -;; Search -(global-set-key (kbd "C-s") 'counsel-grep-or-swiper) -(global-set-key (kbd "C-r") 'ivy-resume) - -;; Files/buffers -(global-set-key (kbd "C-x f") 'counsel-rg-jump) -(global-set-key (kbd "C-x g") 'counsel-rg) -(global-set-key (kbd "C-x l") 'counsel-locate) -(global-set-key (kbd "C-x c") 'my/kill-buffers-not-in-frame) -(global-set-key (kbd "C-x C-b") 'ibuffer) -(global-set-key (kbd "C-x C-r") 'counsel-recentf) -(global-set-key (kbd "C-x t") 'my/find-prod-or-test-file) -(global-set-key (kbd "C-c g d") 'git-gutter:popup-hunk) -(global-set-key (kbd "C-c g p") 'git-gutter:previous-hunk) -(global-set-key (kbd "C-c g n") 'git-gutter:next-hunk) -(global-set-key (kbd "C-c g r") 'git-gutter:revert-hunk) - -;; Windows/frames -(global-set-key (kbd "C-x 9") 'my/window-resize-mode) -(global-set-key (kbd "") 'windmove-up) -(global-set-key (kbd "") 'windmove-down) -(global-set-key (kbd "") 'windmove-left) -(global-set-key (kbd "") 'windmove-right) - -;; Movement -(global-set-key (kbd "M-g f") 'jump-char-forward) - -;; Text formatting -(global-set-key (kbd "M-;") 'comment-line) -(global-set-key (kbd "M-i") 'change-inner) -(global-set-key (kbd "C-o") 'my/open-line-above) -(global-set-key (kbd "M-o") 'my/open-line-below) -(global-set-key (kbd "C-c c") 'my/copy-line) -(global-set-key (kbd "C-c d") 'my/duplicate-line) - -;; Marking -(global-set-key (kbd "M-=") 'er/expand-region) -(global-set-key (kbd "C-c m a") 'mc/mark-all-dwim) -(global-set-key (kbd "C-c m l") 'mc/edit-lines) -(global-set-key (kbd "C-c m m") 'mc/mark-more-like-this-extended) -(global-set-key (kbd "C-c m p") 'mc/mark-previous-like-this) -(global-set-key (kbd "C-c m n") 'mc/mark-next-like-this) - -;; Killing and deleting -(global-set-key (kbd "M-z") 'zap-up-to-char) -(global-set-key (kbd "C-c k") 'kill-whole-line) -(global-set-key (kbd "C-c s") 'my/substitute-line) - -;; Mode switching -(global-set-key (kbd "C-x C-j") 'direx-project:jump-to-project-root-other-window) -(global-set-key (kbd "C-c g s") 'magit-status) -(global-set-key (kbd "C-c g g") 'magit-dispatch) -(global-set-key (kbd "C-c g f") 'magit-file-dispatch) -(global-set-key (kbd "") 'flyspell-mode) -(global-set-key (kbd "") 'whitespace-mode) -(global-set-key (kbd "") 'toggle-truncate-lines) - -;; Disable some default bindings from the builtin mouse.el -(global-set-key [C-down-mouse-1] nil) -(global-set-key [C-down-mouse-2] nil) -(global-set-key [C-down-mouse-3] nil) -(global-set-key [S-down-mouse-1] nil) -(global-set-key [S-down-mouse-2] nil) -(global-set-key [S-down-mouse-3] nil) - - -(defun my/window-resize-mode () - (interactive) - (message "Resize window with the arrow keys") - (let ((keymap (make-sparse-keymap))) - (define-key keymap [up] #'enlarge-window) - (define-key keymap [down] #'shrink-window) - (define-key keymap [left] #'shrink-window-horizontally) - (define-key keymap [right] #'enlarge-window-horizontally) - (set-transient-map keymap t))) diff --git a/lisp/my-minor-modes.el b/lisp/my-minor-modes.el deleted file mode 100644 index b9b6b8b..0000000 --- a/lisp/my-minor-modes.el +++ /dev/null @@ -1,75 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(require 'autorevert) -(global-auto-revert-mode 1) -(setq global-auto-revert-non-file-buffers t) -(setq auto-revert-verbose nil) - -(require 'change-inner) - -(require 'editorconfig) -(editorconfig-mode 1) - -(require 'elisp-slime-nav) -(dolist (hook '(emacs-lisp-mode-hook ielm-mode-hook)) - (add-hook hook 'elisp-slime-nav-mode)) - -(require 'expand-region) - -(require 'goto-addr) -(add-hook 'text-mode-hook #'goto-address-mode) -(add-hook 'prog-mode-hook #'goto-address-prog-mode) -(setq goto-address-highlight-keymap - (let ((m (make-sparse-keymap))) - (define-key m (kbd "C-") 'goto-address-at-point) - ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25715 - (define-key m (kbd "") 'ignore) ; fixes yank text bug for some reason - (define-key m (kbd "C-c RET") 'goto-address-at-point) - m)) - -(require 'highlight-indent-guides) -(add-hook 'prog-mode-hook 'highlight-indent-guides-mode) -(setq highlight-indent-guides-method 'character) -(setq highlight-indent-guides-responsive 'top) -(setq highlight-indent-guides-auto-enabled nil) -(set-face-foreground 'highlight-indent-guides-character-face "#333333") -(set-face-foreground 'highlight-indent-guides-top-character-face "#726464") - -(require 'highlight-symbol) -(add-hook 'prog-mode-hook #'highlight-symbol-mode) -(add-hook 'prog-mode-hook #'highlight-symbol-nav-mode) -(setq highlight-symbol-idle-delay 0.5) - -(require 'hl-line) -(global-hl-line-mode) - -(require 'jump-char) - -(require 'flyspell) - -(require 'misc) - -(require 'multiple-cursors) - -(require 'saveplace) -(setq-default save-place t) - -(require 'xt-mouse) -(xterm-mouse-mode) - -(require 'yasnippet) -(add-hook 'prog-mode-hook #'yas-minor-mode) -(add-hook 'python-mode-hook - (lambda () (set (make-local-variable 'yas-indent-line) 'fixed))) -(yas-reload-all) - -(require 'diminish) -(add-hook 'after-init-hook - (lambda () - (diminish 'counsel-mode) - (diminish 'editorconfig-mode) - (diminish 'git-gutter-mode) - (diminish 'highlight-symbol-mode) - (diminish 'highlight-indent-guides-mode) - (diminish 'ivy-mode) - (diminish 'yas-minor-mode))) diff --git a/lisp/my-recentf.el b/lisp/my-recentf.el deleted file mode 100644 index 4f8ba5d..0000000 --- a/lisp/my-recentf.el +++ /dev/null @@ -1,32 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(require 'recentf) - -(setq recentf-exclude (list - "/\\.emacs\\.d/recentf$" - "/\\.git/")) - -(setq recentf-max-saved-items 1000) - -(run-with-idle-timer 30 t #'my/recentf-periodic) - -(defvar my/recentf-list-prev nil) - -(defun my/recentf-periodic () - (when (my/recentf-has-changed) - (my/with-inhibit-message #'recentf-cleanup) - (when (equal recentf-list my/recentf-list-prev) - (my/with-inhibit-message #'recentf-save-list) - (setq my/recentf-list-prev recentf-list)))) - -(defun my/recentf-has-changed () - (not (equal recentf-list my/recentf-list-prev))) - -(defun my/with-inhibit-message (function) - (let ((old-inhibit-message inhibit-message)) - (setq inhibit-message t) - (unwind-protect - (funcall function) - (setq inhibit-message old-inhibit-message)))) - -(recentf-mode 1) diff --git a/lisp/my-shackle.el b/lisp/my-shackle.el deleted file mode 100644 index 6965b96..0000000 --- a/lisp/my-shackle.el +++ /dev/null @@ -1,40 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(require 'shackle) - -(defun my/shackle-rules () - (let ((rules-common - '(((:custom buffer-file-name) :other t) - (direx:direx-mode :align left :size 40 :select t) - ("*Flycheck error messages*" :align below :size 15 :select nil))) - (rules-wide - '(("magit-.*-popup" :regexp t :align right :select t) - ((magit-log-mode magit-status-mode) :align bottom :size 15 :select t) - ((magit-diff-mode magit-revision-mode) :align right :size 80))) - (rules-narrow-tall - '(("magit-.*-popup" :regexp t :align bottom :select t) - (magit-status-mode :align bottom :size 25 :select t) - ((magit-diff-mode magit-revision-mode) :align bottom :size 25))) - (rules-narrow-short - '(("magit-.*-popup" :regexp t :align bottom :select t) - (magit-status-mode :align bottom :size 0.8 :select t) - ((magit-diff-mode magit-revision-mode) :align bottom :size 0.65)))) - (cond - ((>= (frame-text-cols) 120) - (append rules-common rules-wide)) - ((>= (frame-text-lines) 30) - (append rules-common rules-narrow-tall)) - (t - (append rules-common rules-narrow-short))))) - -(setq shackle-default-rule '(:align below :select t :size 15)) - -(setq shackle-default-size 0.5) - -(defun shackle-match (buffer-or-name) - (cl-loop for (condition . plist) in (my/shackle-rules) - when (shackle--match buffer-or-name condition plist) - return plist - finally return shackle-default-rule)) - -(shackle-mode) diff --git a/lisp/my-vc.el b/lisp/my-vc.el deleted file mode 100644 index a523d15..0000000 --- a/lisp/my-vc.el +++ /dev/null @@ -1,33 +0,0 @@ -;;; -*- lexical-binding: t -*- - -(require 'ediff) -(setq ediff-window-setup-function 'ediff-setup-windows-plain - ediff-split-window-function 'split-window-horizontally) - - -(require 'git-gutter) - -(add-hook 'git-gutter:update-hooks 'magit-revert-buffer-hook) - -(setq git-gutter:ask-p nil) - -(defun git-gutter:popup-hunk (&optional diffinfo) - "MODIFIED!! Popup current diff hunk. Removed the `save-window-excursion' so I can control it with shackle." - (interactive) - (git-gutter:awhen (or diffinfo - (git-gutter:search-here-diffinfo git-gutter:diffinfos)) - (pop-to-buffer (git-gutter:update-popuped-buffer it)))) - -(global-git-gutter-mode) - - -(require 'magit) - -(setq magit-completing-read-function 'ivy-completing-read) -(setq git-commit-finish-query-functions - (delete #'git-commit-check-style-conventions git-commit-finish-query-functions)) - - -(require 'vc) -(setq vc-follow-symlinks t) -(setq vc-handled-backends nil) diff --git a/packages/async b/packages/async deleted file mode 160000 index d7e7f79..0000000 --- a/packages/async +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d7e7f79ee42311a0187aa2ab4f4e2f8843fa28da diff --git a/packages/change-inner b/packages/change-inner deleted file mode 160000 index 42cad58..0000000 --- a/packages/change-inner +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 42cad58aed2caec260f8e8ff61f78a7d3db72d1b diff --git a/packages/check.sh b/packages/check.sh deleted file mode 100755 index 8f0b17f..0000000 --- a/packages/check.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -eu - -cd "$(dirname "$0")" - -grep submodule ../.git/config |cut -d'"' -f2|while read -r x; do ls "$x" &> /dev/null || echo ".git/config remove $x"; done - -find ../.git/modules/ -type d -name objects -printf '%h\n'|while read -r x; do x="$(basename "$x")"; ls "$x" &> /dev/null || echo "rm -rf .git/modules/$x"; done diff --git a/packages/cl-closure-template b/packages/cl-closure-template deleted file mode 160000 index f1983aa..0000000 --- a/packages/cl-closure-template +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f1983aa525045691e128027d2a2d74831c873d6e diff --git a/packages/coffee-mode b/packages/coffee-mode deleted file mode 160000 index 35a41c7..0000000 --- a/packages/coffee-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 35a41c7d8233eac0b267d9593e67fb8b6235e134 diff --git a/packages/dash b/packages/dash deleted file mode 160000 index 334a0b3..0000000 --- a/packages/dash +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 334a0b31cab6b42e4465ffdfc6f07c00cd227562 diff --git a/packages/diminish b/packages/diminish deleted file mode 160000 index 6ec6ebc..0000000 --- a/packages/diminish +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6ec6ebc391371418efc6c98d70b013f34af5a2ee diff --git a/packages/direx b/packages/direx deleted file mode 160000 index a79bfdb..0000000 --- a/packages/direx +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a79bfdb5980cf6ed7bfb3b41ddc471a7b6c0ede4 diff --git a/packages/dockerfile-mode b/packages/dockerfile-mode deleted file mode 160000 index 07dde72..0000000 --- a/packages/dockerfile-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 07dde72b0e356d772fb65b969bd6decfa166e4d7 diff --git a/packages/editorconfig b/packages/editorconfig deleted file mode 160000 index 048c553..0000000 --- a/packages/editorconfig +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 048c553999c90db0b6066b3ec647a79f4af9985d diff --git a/packages/elisp-slime-nav b/packages/elisp-slime-nav deleted file mode 160000 index 9ab5236..0000000 --- a/packages/elisp-slime-nav +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9ab52362600af9f97f1590f05a295538025170b3 diff --git a/packages/expand-region b/packages/expand-region deleted file mode 160000 index 4b83227..0000000 --- a/packages/expand-region +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4b8322774d9c1d8b64a0049d1dbbc1e7ce80c1a0 diff --git a/packages/flycheck b/packages/flycheck deleted file mode 160000 index 01396a5..0000000 --- a/packages/flycheck +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 01396a5eff9fa494285e0d3139838231c05e3948 diff --git a/packages/git-gutter b/packages/git-gutter deleted file mode 160000 index cca61a1..0000000 --- a/packages/git-gutter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cca61a1c6b0c0fd6ecb1b0366711c618581eabb6 diff --git a/packages/git-modes b/packages/git-modes deleted file mode 160000 index 14adca2..0000000 --- a/packages/git-modes +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 14adca24eb6b0b4e311ad144c5d41972c6b044b2 diff --git a/packages/graphql b/packages/graphql deleted file mode 160000 index e2b3096..0000000 --- a/packages/graphql +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e2b309689f4faf9225f290080f836e988c5a576d diff --git a/packages/groovy-modes b/packages/groovy-modes deleted file mode 160000 index 26da902..0000000 --- a/packages/groovy-modes +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 26da902d1158c0312628d57578109be54eca2415 diff --git a/packages/haskell-mode b/packages/haskell-mode deleted file mode 160000 index 20f72cc..0000000 --- a/packages/haskell-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 20f72ccc17c8233dbb7c94ebf52a2a59e7d97730 diff --git a/packages/highlight-indent-guides b/packages/highlight-indent-guides deleted file mode 160000 index cf352c8..0000000 --- a/packages/highlight-indent-guides +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cf352c85cd15dd18aa096ba9d9ab9b7ab493e8f6 diff --git a/packages/js2-mode b/packages/js2-mode deleted file mode 160000 index 29979e5..0000000 --- a/packages/js2-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 29979e5f3301796ba606759e39ee0b1b6a2a24f3 diff --git a/packages/js2-refactor b/packages/js2-refactor deleted file mode 160000 index a0977c4..0000000 --- a/packages/js2-refactor +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a0977c4ce1918cc266db9d6cd7a2ab63f3a76b9a diff --git a/packages/json-mode b/packages/json-mode deleted file mode 160000 index 0e819e5..0000000 --- a/packages/json-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0e819e519ae17a2686e0881c4ca51fa873fa9b83 diff --git a/packages/json-reformat b/packages/json-reformat deleted file mode 160000 index 8eb6668..0000000 --- a/packages/json-reformat +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8eb6668ed447988aea06467ba8f42e1f2178246f diff --git a/packages/json-snatcher b/packages/json-snatcher deleted file mode 160000 index b28d1c0..0000000 --- a/packages/json-snatcher +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b28d1c0670636da6db508d03872d96ffddbc10f2 diff --git a/packages/kotlin-mode b/packages/kotlin-mode deleted file mode 160000 index 0e4bafb..0000000 --- a/packages/kotlin-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0e4bafb31d1fc2a0a420a521c2723d5526646c0b diff --git a/packages/ledger-mode b/packages/ledger-mode deleted file mode 160000 index 3495d12..0000000 --- a/packages/ledger-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3495d1224ee73aa96c1d5bd131dc3a7f23d46336 diff --git a/packages/magit b/packages/magit deleted file mode 160000 index d14c082..0000000 --- a/packages/magit +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d14c082354c796dd363550a03463e9382b7cfbf6 diff --git a/packages/magit-transient b/packages/magit-transient deleted file mode 160000 index 1e090b0..0000000 --- a/packages/magit-transient +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1e090b0cd4ea58c9fb5e807e4ebd7bdb9a7b66ba diff --git a/packages/markdown-mode b/packages/markdown-mode deleted file mode 160000 index 0517340..0000000 --- a/packages/markdown-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 051734091aba17a54af96b81beebdbfc84c26459 diff --git a/packages/multiple-cursors b/packages/multiple-cursors deleted file mode 160000 index a9d7764..0000000 --- a/packages/multiple-cursors +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a9d7764f80b241978f3d4e76bc981ef10bab5d70 diff --git a/packages/pkgbuild-mode b/packages/pkgbuild-mode deleted file mode 160000 index 8a5e95c..0000000 --- a/packages/pkgbuild-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8a5e95c8514315cb40c47f1acdb68a4ace921497 diff --git a/packages/s b/packages/s deleted file mode 160000 index 43ba8b5..0000000 --- a/packages/s +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 43ba8b563bee3426cead0e6d4ddc09398e1a349d diff --git a/packages/scala-mode b/packages/scala-mode deleted file mode 160000 index 402d6df..0000000 --- a/packages/scala-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 402d6df56457e9c512c3d77c7bcb0d04c77715f1 diff --git a/packages/shackle b/packages/shackle deleted file mode 160000 index 1c88d2a..0000000 --- a/packages/shackle +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1c88d2a2fdd2efb3e990da69d6fedeaee5ff71a2 diff --git a/packages/slime b/packages/slime deleted file mode 160000 index 68c58c0..0000000 --- a/packages/slime +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 68c58c0194ff03cd147fcec99f0ee90ba9178875 diff --git a/packages/swiper b/packages/swiper deleted file mode 160000 index e005666..0000000 --- a/packages/swiper +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e005666df39ca767e6d5ab71b1a55d8c08395259 diff --git a/packages/treepy b/packages/treepy deleted file mode 160000 index 3ac940e..0000000 --- a/packages/treepy +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3ac940e97f3d03e48ca9d7fcd74916a9b01c72f3 diff --git a/packages/wgrep b/packages/wgrep deleted file mode 160000 index f0ef9bf..0000000 --- a/packages/wgrep +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f0ef9bfa44db503cdb2f83fcfbd2fa4e2382ef1f diff --git a/packages/with-editor b/packages/with-editor deleted file mode 160000 index 2848a90..0000000 --- a/packages/with-editor +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2848a90addae086b657605b84a7fbecf2c4c1c65 diff --git a/packages/yaml-mode b/packages/yaml-mode deleted file mode 160000 index fc5e1c5..0000000 --- a/packages/yaml-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fc5e1c58f94472944c4aa838f00f6adcac6fa992 diff --git a/packages/yasnippet b/packages/yasnippet deleted file mode 160000 index 5cbdbf0..0000000 --- a/packages/yasnippet +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5cbdbf0d2015540c59ed8ee0fcf4788effdf75b6 diff --git a/lisp/pastels-on-dark-theme.el b/pastels-on-dark-theme.el similarity index 98% rename from lisp/pastels-on-dark-theme.el rename to pastels-on-dark-theme.el index cec7818..86fde81 100644 --- a/lisp/pastels-on-dark-theme.el +++ b/pastels-on-dark-theme.el @@ -58,7 +58,7 @@ '(lazy-highlight ((t (:background "#302733")))) '(default ( (((type tty)) (:stipple nil :background nil :foreground nil :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal)) - (((type graphic)) (:stipple nil :background "#211D1D" :foreground "#DADADA" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal)) + (((type graphic)) (:stipple nil :background "#000000" :foreground "#DADADA" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal)) ))) diff --git a/rg-ignore b/rg-ignore deleted file mode 100644 index 466cb5d..0000000 --- a/rg-ignore +++ /dev/null @@ -1,4 +0,0 @@ -.git -.hg -.svn -CVS diff --git a/text-edit/change-inner b/text-edit/change-inner new file mode 160000 index 0000000..1394f5c --- /dev/null +++ b/text-edit/change-inner @@ -0,0 +1 @@ +Subproject commit 1394f5c07a95a97e39d616a1d7054d7c9bc49ba3 diff --git a/text-edit/expand-region b/text-edit/expand-region new file mode 160000 index 0000000..e8f4e0f --- /dev/null +++ b/text-edit/expand-region @@ -0,0 +1 @@ +Subproject commit e8f4e0fe9c9a80a6a26e2b438502aba9a799d580 diff --git a/packages/highlight-symbol b/text-edit/highlight-symbol similarity index 100% rename from packages/highlight-symbol rename to text-edit/highlight-symbol diff --git a/text-edit/init.el b/text-edit/init.el new file mode 100644 index 0000000..3454794 --- /dev/null +++ b/text-edit/init.el @@ -0,0 +1,70 @@ +;;; -*- lexical-binding: t -*- + +(dolist (pkg '("~/.emacs.d/text-edit" + "~/.emacs.d/text-edit/change-inner" + "~/.emacs.d/text-edit/expand-region" + "~/.emacs.d/text-edit/highlight-symbol" + "~/.emacs.d/text-edit/jump-char" + "~/.emacs.d/text-edit/yasnippet")) + (add-to-list 'load-path pkg)) + +;;;;;;;;;;;;;;;;; +;; My packages ;; +;;;;;;;;;;;;;;;;; + +(require 'my-buffer-navigation) +(global-set-key (kbd "C-x b") 'my/switch-to-previous-buffer) + +(require 'my-find-test-file) +(global-set-key (kbd "C-x t") 'my/find-prod-or-test-file) + +(require 'my-frame-title) +(setq frame-title-format '((:eval (funcall #'my/generate-frame-title)))) +(setq icon-title-format frame-title-format) +(add-to-list 'post-command-hook #'my/terminal-update-title) + +(require 'my-kill-buffers) +(add-to-list 'delete-frame-functions #'my/kill-buffers-if-deleting-last-frame) +(global-set-key (kbd "C-x c") 'my/kill-buffers-not-in-frame) + +(require 'my-line-editing) +(global-set-key (kbd "C-o") 'my/open-line-above) +(global-set-key (kbd "M-o") 'my/open-line-below) +(global-set-key (kbd "C-c c") 'my/copy-line) +(global-set-key (kbd "C-c s") 'my/substitute-line) + +(require 'my-new-scratch-buffer) + +(require 'my-recentf) +(setq recentf-save-file "~/.cache/emacs/recentf") +(setq recentf-exclude '("/\\.emacs\\.d/recentf$" "/\\.git/")) +(setq recentf-max-saved-items 1000) +(recentf-mode 1) +(my/recentf-auto-cleanup-and-save) + +(require 'my-window-resize) +(global-set-key (kbd "C-x 9") 'my/window-resize-mode) + +;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Third-party packages ;; +;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'change-inner) +(global-set-key (kbd "M-i") 'change-inner) + +(require 'expand-region) +(global-set-key (kbd "M-=") 'er/expand-region) + +(require 'highlight-symbol) +(add-hook 'prog-mode-hook #'highlight-symbol-mode) +(add-hook 'prog-mode-hook #'highlight-symbol-nav-mode) +(setq highlight-symbol-idle-delay 0.5) + +(require 'jump-char) +(global-set-key (kbd "M-g f") 'jump-char-forward) + +(require 'yasnippet) +(add-hook 'prog-mode-hook #'yas-minor-mode) +(add-hook 'python-mode-hook + (lambda () (set (make-local-variable 'yas-indent-line) 'fixed))) +(yas-reload-all) diff --git a/packages/jump-char b/text-edit/jump-char similarity index 100% rename from packages/jump-char rename to text-edit/jump-char diff --git a/text-edit/my-buffer-navigation.el b/text-edit/my-buffer-navigation.el new file mode 100644 index 0000000..77c6aca --- /dev/null +++ b/text-edit/my-buffer-navigation.el @@ -0,0 +1,7 @@ +;;; -*- lexical-binding: t -*- + +(defun my/switch-to-previous-buffer () + (interactive) + (switch-to-buffer (other-buffer (current-buffer) 1))) + +(provide 'my-buffer-navigation) diff --git a/lisp/my-find-test-file.el b/text-edit/my-find-test-file.el similarity index 98% rename from lisp/my-find-test-file.el rename to text-edit/my-find-test-file.el index 8f0c445..989f449 100644 --- a/lisp/my-find-test-file.el +++ b/text-edit/my-find-test-file.el @@ -1,7 +1,6 @@ ;;; -*- lexical-binding: t -*- (require 'cl-lib) -(require 'counsel) (defun my/prod-file-p (file) (not (or (string-match-p "test" file) @@ -54,3 +53,5 @@ INITIAL-DIRECTORY, if non-nil, is used as the root directory for search." (t (ivy-read "Find test file" results :action #'counsel-git-action :caller 'my/find-prod-or-test-file))))) + +(provide 'my-find-test-file) diff --git a/lisp/my-frame-title.el b/text-edit/my-frame-title.el similarity index 78% rename from lisp/my-frame-title.el rename to text-edit/my-frame-title.el index bb558b3..2a437c9 100644 --- a/lisp/my-frame-title.el +++ b/text-edit/my-frame-title.el @@ -1,14 +1,7 @@ ;;; -*- lexical-binding: t -*- -(setq frame-title-format '((:eval (funcall #'my/generate-frame-title)))) - -(setq icon-title-format frame-title-format) - -(add-to-list 'post-command-hook #'my/terminal-update-title) - - (defun my/generate-frame-title () - "Returns a string like 'filename (dirname) (hostname)'" + "Return a string like \"filename (dirname) (hostname)\"." (let ((t-name (if (buffer-file-name) (file-name-nondirectory (buffer-file-name)) @@ -33,3 +26,5 @@ "If using a terminal frame then sends the escape codes to update the title." (if (terminal-parameter (frame-terminal) 'terminal-initted) (send-string-to-terminal (concat "\033]0;" (my/generate-frame-title) "\007")))) + +(provide 'my-frame-title) diff --git a/lisp/my-kill-buffers.el b/text-edit/my-kill-buffers.el similarity index 95% rename from lisp/my-kill-buffers.el rename to text-edit/my-kill-buffers.el index 8e262f5..f911b43 100644 --- a/lisp/my-kill-buffers.el +++ b/text-edit/my-kill-buffers.el @@ -1,7 +1,5 @@ ;;; -*- lexical-binding: t -*- -(add-to-list 'delete-frame-functions #'my/kill-buffers-if-deleting-last-frame) - (defun my/kill-buffers-if-deleting-last-frame (frame) "Kill all buffers when closing the last frame" (when (equal (list frame) (my/frame-list-ignoring-initial-frame)) @@ -39,3 +37,5 @@ (not (buffer-modified-p buffer)) (null (buffer-file-name buffer)))) (kill-buffer buffer))) + +(provide 'my-kill-buffers) diff --git a/lisp/my-editing-defuns.el b/text-edit/my-line-editing.el similarity index 67% rename from lisp/my-editing-defuns.el rename to text-edit/my-line-editing.el index f050703..3192814 100644 --- a/lisp/my-editing-defuns.el +++ b/text-edit/my-line-editing.el @@ -7,22 +7,6 @@ (line-beginning-position (+ 1 arg))) (message "Copied %d lines" arg)) -(defun my/duplicate-line (arg) - "Duplicate current line, leaving point in lower line. With ARG duplicates the line that many lines." - (interactive "*p") - (let* ((start (line-beginning-position 1)) - (end (line-beginning-position 2)) - (at-eof (= end (line-end-position) (point-max)))) - (kill-ring-save start end) - (when at-eof - (kill-append "\n" t)) - (save-mark-and-excursion - (forward-line) - (dotimes (ignored arg) - (yank))) - (forward-line) - (back-to-indentation))) - (defun my/open-line-above (arg) "Open a new line above point with indentation. With ARG insert that many lines." (interactive "*p") @@ -46,3 +30,5 @@ (kill-line arg)) (if (not (string-equal major-mode "fundamental-mode")) (indent-for-tab-command))) + +(provide 'my-line-editing) diff --git a/lisp/my-scratch.el b/text-edit/my-new-scratch-buffer.el similarity index 89% rename from lisp/my-scratch.el rename to text-edit/my-new-scratch-buffer.el index dc387d8..47161a9 100644 --- a/lisp/my-scratch.el +++ b/text-edit/my-new-scratch-buffer.el @@ -3,7 +3,7 @@ (setq initial-scratch-message nil) (setq initial-major-mode 'emacs-lisp-mode) -(defun my/scratch-buffer () +(defun my/new-scratch-buffer () "Create a new scratch buffer to work in. (could be *scratch* - *scratchX*)" (interactive) (let ((n 0) @@ -16,3 +16,5 @@ (get-buffer bufname))) (switch-to-buffer (get-buffer-create bufname)) (funcall initial-major-mode))) + +(provide 'my-new-scratch-buffer) diff --git a/text-edit/my-recentf.el b/text-edit/my-recentf.el new file mode 100644 index 0000000..d04b5df --- /dev/null +++ b/text-edit/my-recentf.el @@ -0,0 +1,16 @@ +;;; -*- lexical-binding: t -*- + +;; Auto-cleanup and auto-save with no (message) + +(defvar my/recentf-list-prev nil) + +(defun my/recentf-periodic () + (when (not (equal recentf-list my/recentf-list-prev)) + (let ((inhibit-message t)) (recentf-cleanup)) + (let ((inhibit-message t)) (recentf-save-list)) + (setq my/recentf-list-prev recentf-list))) + +(defun my/recentf-auto-cleanup-and-save () + (run-with-idle-timer 30 t #'my/recentf-periodic)) + +(provide 'my-recentf) diff --git a/text-edit/my-window-resize.el b/text-edit/my-window-resize.el new file mode 100644 index 0000000..edbb7fd --- /dev/null +++ b/text-edit/my-window-resize.el @@ -0,0 +1,13 @@ +;;; -*- lexical-binding: t -*- + +(defun my/window-resize-mode () + (interactive) + (message "Resize window with the arrow keys") + (let ((keymap (make-sparse-keymap))) + (define-key keymap [up] #'enlarge-window) + (define-key keymap [down] #'shrink-window) + (define-key keymap [left] #'shrink-window-horizontally) + (define-key keymap [right] #'enlarge-window-horizontally) + (set-transient-map keymap t))) + +(provide 'my-window-resize) diff --git a/text-edit/yasnippet b/text-edit/yasnippet new file mode 160000 index 0000000..297546f --- /dev/null +++ b/text-edit/yasnippet @@ -0,0 +1 @@ +Subproject commit 297546f0853a6a51f5b05e954d0c6aea8caa5ec2 diff --git a/update-package-ignore.sh b/update-package-ignore.sh new file mode 100755 index 0000000..b32fcd5 --- /dev/null +++ b/update-package-ignore.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cd "$(dirname "$0")" +find . -name .git -type f -printf '%h\n' | sed 's/^\.//' | sort > .ignore diff --git a/utils/compat b/utils/compat new file mode 160000 index 0000000..eb8fbfa --- /dev/null +++ b/utils/compat @@ -0,0 +1 @@ +Subproject commit eb8fbfa5582a8e5880e2eaa66d15d498bca6a45a diff --git a/utils/dash b/utils/dash new file mode 160000 index 0000000..13f9fcd --- /dev/null +++ b/utils/dash @@ -0,0 +1 @@ +Subproject commit 13f9fcd09d40132e9e1346a69e7b293d835a85f2 diff --git a/utils/init.el b/utils/init.el new file mode 100644 index 0000000..d5a2289 --- /dev/null +++ b/utils/init.el @@ -0,0 +1,6 @@ +;;; -*- lexical-binding: t -*- + +(dolist (pkg '("~/.emacs.d/utils/compat/" + "~/.emacs.d/utils/dash/" + "~/.emacs.d/utils/s/")) + (add-to-list 'load-path pkg)) diff --git a/utils/s b/utils/s new file mode 160000 index 0000000..dda84d3 --- /dev/null +++ b/utils/s @@ -0,0 +1 @@ +Subproject commit dda84d38fffdaf0c9b12837b504b402af910d01d diff --git a/vc/diff-hl b/vc/diff-hl new file mode 160000 index 0000000..b8b2727 --- /dev/null +++ b/vc/diff-hl @@ -0,0 +1 @@ +Subproject commit b8b2727a72fdf64ac98e6cfa136a43cb0cacf72f diff --git a/vc/init.el b/vc/init.el new file mode 100644 index 0000000..5f5e9a6 --- /dev/null +++ b/vc/init.el @@ -0,0 +1,21 @@ +;;; -*- lexical-binding: t -*- + +(dolist (pkg '("~/.emacs.d/vc/magit/lisp" + "~/.emacs.d/vc/magit-popup" + "~/.emacs.d/vc/magit-transient/lisp" + "~/.emacs.d/vc/with-editor/lisp" + "~/.emacs.d/vc/diff-hl")) + (add-to-list 'load-path pkg)) + +(require 'diff-hl) +(require 'diff-hl-show-hunk) +(global-diff-hl-mode 1) + +(require 'magit) +(setq transient-history-file "~/.cache/emacs/transient-history.el") +(setq magit-completing-read-function 'ivy-completing-read) +(setq git-commit-finish-query-functions + (delete #'git-commit-check-style-conventions git-commit-finish-query-functions)) +(global-set-key (kbd "C-x v s") 'magit-status) +(global-set-key (kbd "C-x v v") 'magit-dispatch) +(global-set-key (kbd "C-x v f") 'magit-file-dispatch) diff --git a/vc/magit b/vc/magit new file mode 160000 index 0000000..54d37dc --- /dev/null +++ b/vc/magit @@ -0,0 +1 @@ +Subproject commit 54d37dc14c3f715dd0328a70bc65d63c54ee9613 diff --git a/packages/magit-popup b/vc/magit-popup similarity index 100% rename from packages/magit-popup rename to vc/magit-popup diff --git a/vc/magit-transient b/vc/magit-transient new file mode 160000 index 0000000..b14f44e --- /dev/null +++ b/vc/magit-transient @@ -0,0 +1 @@ +Subproject commit b14f44e91341ca70c21946baf70162dd13a30310 diff --git a/vc/with-editor b/vc/with-editor new file mode 160000 index 0000000..d43db3c --- /dev/null +++ b/vc/with-editor @@ -0,0 +1 @@ +Subproject commit d43db3c58c34d4dbc3ce6f68ec24fecf3452b20e