(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=
(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=
** 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
(("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)
("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)
(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)
: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
** [[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)))
(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]]
("<end>" . 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]]
(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
;; (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"
"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))