X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/d14698a3b5c5aaaba2b0851c4739c154204a5f48..1dde553d9a6d52523575f41a560162c79f10c0a3:/init.org?ds=sidebyside diff --git a/init.org b/init.org index b6d853c..51cd9ca 100644 --- a/init.org +++ b/init.org @@ -234,17 +234,16 @@ can then be managed with the help of Magit or other tools. (require 'borg) (borg-initialize) +(require 'borg-nix-shell) +(setq borg-build-shell-command 'borg-nix-shell-build-command) + (with-eval-after-load 'bind-key - ; unbind M-m for use as a personal prefix - (unbind-key "M-m" global-map) - (bind-key "M-m M-m" 'back-to-indentation) - ; add some bindings for Borg (bind-keys :package borg - ("M-m B A" . borg-activate) - ("M-m B a" . borg-assimilate) - ("M-m B b" . borg-build) - ("M-m B c" . borg-clone))) + ("C-c B A" . borg-activate) + ("C-c B a" . borg-assimilate) + ("C-c B b" . borg-build) + ("C-c B c" . borg-clone))) #+end_src *** =use-package= @@ -282,10 +281,10 @@ database, low-level functions for querying the database, and a (use-package epkg :defer t :bind - (("M-m B d" . epkg-describe-package) - ("M-m B p" . epkg-list-packages) - ("M-m B r" . borg-remove) - ("M-m B u" . epkg-update))) + (("C-c B d" . epkg-describe-package) + ("C-c B p" . epkg-list-packages) + ("C-c B r" . borg-remove) + ("C-c B u" . epkg-update))) #+end_src ** No littering in =~/.emacs.d= @@ -610,27 +609,14 @@ Enable =winner-mode=. ** Bindings -#+begin_src emacs-lisp :tangle no +#+begin_src emacs-lisp (bind-keys - ; buffers - ("M-m b b" . ibuffer-list-buffers) - ("M-m b k" . kill-this-buffer) - ("M-m b s" . save-buffer) - - ; help - ("M-m h c" . describe-char) - ("M-m h f" . describe-function) - ("M-m h F" . describe-face) - ("M-m h i" . info) - ("M-m h k" . describe-key) - ("M-m h l" . view-lossage) - ("M-m h m" . describe-mode) - ("M-m h v" . describe-variable) - - ("M-m o" . other-window) - ("M-m w o" . other-window) - - ("M-m q q" . save-buffers-kill-terminal)) + ("C-c b B" . ibuffer-list-buffers) + ("C-c b k" . kill-this-buffer) + ("C-c b s" . save-buffer) + ("C-c S" . save-buffer) + ("C-c o" . other-window) + ("C-c q q" . save-buffers-kill-terminal)) #+end_src ** Packages @@ -694,7 +680,7 @@ Not just how I do git, but /the/ way to do git. (("s-g" . magit-dispatch-popup) ("C-x g" . magit-status) :prefix-map amin--magit-prefix-map - :prefix "M-m g" + :prefix "C-c g" ("SPC" . magit-status) ("s" . magit-status) ("S" . magit-status-prefix) @@ -703,6 +689,7 @@ Not just how I do git, but /the/ way to do git. ("f" . magit-fetch) ("F" . magit-pull) ("P" . magit-push) + ("p" . magit-dispatch-popup) ("c c" . magit-commit) ("c a" . magit-commit-amend) ("b b" . magit-checkout) @@ -729,7 +716,7 @@ There's no way I could top that, so I won't attempt to. (use-package ivy :defer 1 :bind - (("M-m ," . ivy-switch-buffer) + (("C-c b b" . ivy-switch-buffer) :map ivy-minibuffer-map ([escape] . keyboard-escape-quit) ([S-up] . ivy-previous-history-element) @@ -756,9 +743,9 @@ There's no way I could top that, so I won't attempt to. :bind (([remap execute-extended-command] . counsel-M-x) ([remap find-file] . counsel-find-file) ("s-r" . counsel-recentf) - ("M-m SPC" . counsel-M-x) - ("M-m ." . counsel-find-file) - ("M-m f r" . counsel-recentf) + ("C-c x" . counsel-M-x) + ("C-c f ." . counsel-find-file) + ("C-c f r" . counsel-recentf) :map minibuffer-local-map ("C-r" . counsel-minibuffer-history)) :config @@ -899,6 +886,7 @@ TODO: break this giant source block down into individual org sections. ** [[https://leanprover.github.io][Lean]] (with [[https://github.com/leanprover/lean-mode][lean-mode]]) #+begin_src emacs-lisp +(eval-when-compile (defvar lean-mode-map)) (use-package lean-mode :bind (:map lean-mode-map ("S-SPC" . company-complete))) @@ -1132,10 +1120,10 @@ Emacs package that displays available keybindings in popup (use-package crux :bind (("C-c d" . crux-duplicate-current-line-or-region) ("C-c M-d" . crux-duplicate-and-comment-current-line-or-region) - ("M-m b K" . crux-kill-other-buffers) - ("M-m f c" . crux-copy-file-preserve-attributes) - ("M-m f D" . crux-delete-file-and-buffer) - ("M-m f R" . crux-rename-file-and-buffer))) + ("C-c b K" . crux-kill-other-buffers) + ("C-c f c" . crux-copy-file-preserve-attributes) + ("C-c f D" . crux-delete-file-and-buffer) + ("C-c f R" . crux-rename-file-and-buffer))) #+end_src ** [[https://github.com/alezost/mwim.el][mwim]] @@ -1148,6 +1136,27 @@ Emacs package that displays available keybindings in popup ("" . mwim-end-of-line-or-code))) #+end_src +** projectile + +#+begin_src emacs-lisp +(use-package projectile + :defer 5 + :bind-keymap ("C-c p" . projectile-command-map) + :config + (projectile-mode) + + (defun my-projectile-invalidate-cache (&rest _args) + ;; ignore the args to `magit-checkout' + (projectile-invalidate-cache nil)) + + (eval-after-load 'magit-branch + '(progn + (advice-add 'magit-checkout + :after #'my-projectile-invalidate-cache) + (advice-add 'magit-branch-and-checkout + :after #'my-projectile-invalidate-cache)))) +#+end_src + * Email ** [[https://notmuchmail.org][notmuch]] @@ -1201,8 +1210,8 @@ See [[notmuch:id:87muuqsvci.fsf@fencepost.gnu.org][bug follow-up]]. (use-package notmuch :commands notmuch - :bind (("C-c m" . amin/notmuch) - ("M-m m" . amin/notmuch)) + :bind ("C-c m" . amin/notmuch) + :custom (notmuch-always-prompt-for-sender t) :config (setq notmuch-hello-sections '(notmuch-hello-insert-header @@ -1243,13 +1252,24 @@ See [[notmuch:id:87muuqsvci.fsf@fencepost.gnu.org][bug follow-up]]. ;; (set! :evil-state 'notmuch-message-mode 'insert) ;; (advice-add #'notmuch-bury-or-kill-this-buffer ;; :override #'kill-this-buffer) - ;; (evil-collection-define-key 'normal 'notmuch-common-keymap - ;; "c" (lambda () - ;; "Compose new mail and prompt for sender" - ;; (interactive) - ;; (let ((current-prefix-arg t)) - ;; (call-interactively #'notmuch-mua-new-mail)))) :bind + (:map notmuch-hello-mode-map + ("u" . (lambda () + "Search for `unread'-tagged messages" + (interactive) + (notmuch-hello-search "tag:unread"))) + ("i" . (lambda () + "Search for `inbox'-tagged messages" + (interactive) + (notmuch-hello-search "tag:inbox"))) + ("l" . (lambda () + "Search for `latest'-tagged messages" + (interactive) + (notmuch-hello-search "tag:latest"))) + ("e" . (lambda () + "Search for `encrypted'-tagged messages" + (interactive) + (notmuch-hello-search "tag:encrypted")))) (:map notmuch-search-mode-map ("k" . (lambda () "Mark message read" @@ -1266,22 +1286,37 @@ See [[notmuch:id:87muuqsvci.fsf@fencepost.gnu.org][bug follow-up]]. "Mark message deleted" (interactive) (notmuch-search-tag '("-unread" "-inbox" "+deleted")) - (notmuch-search-archive-thread))) + (notmuch-search-next-thread))) ("S" . (lambda () "Mark message as spam" (interactive) (notmuch-search-tag '("-unread" "-inbox" "-webmasters" "+spam")) - (notmuch-search-archive-thread)))) - (:map notmuch-tree-mode-map ; TODO: additional bindings + (notmuch-search-next-thread)))) + (:map notmuch-tree-mode-map + ("k" . (lambda () + "Mark message read" + (interactive) + (notmuch-tree-tag '("-unread")) + ;; (notmuch-tree-archive-thread) + (notmuch-tree-next-message))) + ("u" . (lambda () + "Mark message unread" + (interactive) + (notmuch-tree-tag '("+unread")) + (notmuch-tree-next-message))) + ("K" . (lambda () + "Mark message deleted" + (interactive) + (notmuch-tree-tag '("-unread" "-inbox" "+deleted")) + (notmuch-tree-next-message))) ("S" . (lambda () "Mark message as spam" (interactive) (notmuch-tree-tag '("-unread" "-inbox" "-webmasters" "+spam")) - (notmuch-tree-archive-thread)))) -) + (notmuch-tree-next-message))))) (use-package counsel-notmuch - :bind ("M-m / m" . counsel-notmuch)) + :bind ("C-c s m" . counsel-notmuch)) (after! notmuch-crypto (setq notmuch-crypto-process-mime t))