using the Xfce panel anymore. Also, I don't need to see the load
average on a regular basis, so disable that.
-#+begin_src emacs-lisp
+Note: using =i3status= on sway at the moment, so disabling this.
+
+#+begin_src emacs-lisp :tangle no
(use-package time
:ensure nil
:init
version-control t)
#+end_src
+*** Auto revert
+
+Enable automatic reloading of changed buffers and files.
+
+#+begin_src emacs-lisp
+(global-auto-revert-mode 1)
+(setq auto-revert-verbose nil
+ global-auto-revert-non-file-buffers t)
+#+end_src
+
+*** Always use space for indentation
+
+#+begin_src emacs-lisp
+(setq-default
+ indent-tabs-mode nil
+ require-final-newline t
+ tab-width 4)
+#+end_src
+
** Packages
The packages in this section are absolutely essential to my everyday
(push '((nil . "ryo:.*:") . (nil . "")) which-key-replacement-alist)
(ryo-modal-keys
("," ryo-modal-repeat)
- ("q" ryo-modal-mode)
("b" backward-char)
("n" next-line)
("p" previous-line)
- ("f" forward-char))
+ ("f" forward-char)
+ ("/" undo)
+ ("i" ryo-modal-mode)
+ ("l" recenter-top-bottom)
+ ("v" scroll-up-command)
+ ("V" scroll-down-command)
+ ("x" delete-forward-char)
+ ("SPC" (("b" (("b" ibuffer-list-buffers)
+ ("k" kill-this-buffer)
+ ("o" other-window)
+ ("s" save-buffer)))
+ ("B" (("A" borg-activate)
+ ("a" borg-assimilate)
+ ("b" borg-build)
+ ("c" borg-clone)
+ ("r" borg-remove)))
+ ("h" (("c" describe-char)
+ ("f" describe-function)
+ ("F" describe-face)
+ ("i" info)
+ ("k" describe-key)
+ ("l" view-lossage)
+ ("v" describe-variable)))
+ ("q" (("q" save-buffers-kill-terminal)))))
+ ("d" (("w" kill-word)
+ ("b" backward-kill-word)))
+ ("c w" kill-word :exit t))
(ryo-modal-keys
;; First argyment to ryo-modal-keys may be a list of keywords.
In short, my favourite way of life.
#+begin_src emacs-lisp
-(setq org-src-tab-acts-natively t
- org-src-preserve-indentation nil
- org-edit-src-content-indentation 0
- org-html-divs '((preamble "header" "preamble")
- (content "main" "content")
- (postamble "footer" "postamble"))
- org-html-doctype "html5"
- org-html-html5-fancy t
- org-html-postamble nil)
-(add-hook 'org-mode-hook 'org-indent-mode)
-(use-package htmlize)
+(use-package org
+ :ryo ("SPC b t" org-babel-tangle)
+ :config
+ (setq org-src-tab-acts-natively t
+ org-src-preserve-indentation nil
+ org-edit-src-content-indentation 0
+ org-html-divs '((preamble "header" "preamble")
+ (content "main" "content")
+ (postamble "footer" "postamble"))
+ org-html-doctype "html5"
+ org-html-html5-fancy t
+ org-html-postamble nil)
+ :hook (org-mode . org-indent-mode))
+(use-package htmlize
+ :after org)
(use-package org-notmuch
:after (:any org notmuch))
#+end_src
#+begin_src emacs-lisp
(use-package swiper
- :ryo ("/" swiper)
+ :ryo
+ ("SPC /" swiper)
+ ("s" swiper)
:bind (([remap isearch-forward] . swiper)
([remap isearch-backward] . swiper)))
#+end_src
(list (regexp-quote (system-name)) nil nil)))
(use-package undo-tree
+ :ryo
+ ("?" undo-tree-undo)
+ ("_" undo-tree-redo)
+ :bind (("C-?" . undo-tree-undo)
+ ("M-_" . undo-tree-redo))
:config
(global-undo-tree-mode)
- (setq undo-tree-mode-lighter ""))
+ (setq undo-tree-mode-lighter ""
+ undo-tree-auto-save-history t))
#+end_src
* Editing
(global-company-mode t))
#+end_src
-** Customizations
-
-#+begin_src emacs-lisp
-(ryo-modal-key
- "SPC" '(("b b" ibuffer-list-buffers)
- ("b k" kill-this-buffer)
- ("b s" save-buffer)
- ("q q" save-buffers-kill-terminal)))
-#+end_src
-
* Syntax and spell checking
#+begin_src emacs-lisp
(use-package flycheck
(load-theme 'eink t)
#+end_src
+** [[https://github.com/bbatsov/crux][crux]]
+
+#+begin_src emacs-lisp
+(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))
+ :ryo
+ ("o" crux-smart-open-line :exit t)
+ ("O" crux-smart-open-line-above :exit t)
+ ("SPC b K" crux-kill-other-buffers)
+ ("d d" crux-kill-whole-line)
+ ("c c" crux-kill-whole-line :then '(crux-smart-open-line-above) :exit t)
+ ("SPC f" (("c" crux-copy-file-preserve-attributes)
+ ("D" crux-delete-file-and-buffer)
+ ("R" crux-rename-file-and-buffer))))
+#+end_src
+
+** [[https://github.com/alezost/mwim.el][mwim]]
+
+#+begin_src emacs-lisp
+(use-package mwim
+ :bind (("C-a" . mwim-beginning-of-code-or-line)
+ ("C-e" . mwim-end-of-code-or-line)
+ ("<home>" . mwim-beginning-of-line-or-code)
+ ("<end>" . mwim-end-of-line-or-code))
+ :ryo
+ ("a" mwim-beginning-of-code-or-line)
+ ("e" mwim-end-of-code-or-line))
+#+end_src
+
+** [[https://www.emacswiki.org/emacs/KeyChord][key-chord]]
+
+#+begin_src emacs-lisp
+(use-package key-chord
+ :demand t
+ :config
+ (key-chord-mode 1)
+ (key-chord-define-global "jk" 'ryo-modal-mode)
+ (setq key-chord-one-key-delay 0 ; i don't need one-key chords for now
+ key-chord-two-keys-delay 0.005))
+#+end_src
+
* Email
** [[https://notmuchmail.org][notmuch]]
;; :ensure nil
:config
(setq sendmail-program "/usr/bin/msmtp"
+ ; message-sendmail-extra-arguments '("-v" "-d")
mail-specify-envelope-from t
mail-envelope-from 'header))
notmuch-hello-thousands-separator ","
notmuch-fcc-dirs
'(("amin@aminb.org" . "amin/Sent")
+ ("amin@gnu.org" . "gnu/Sent")
("abandali@uwaterloo.ca" . "\"uwaterloo/Sent Items\"")
- ("amin.bandali@uwaterloo.ca" . "\"uwaterloo/Sent Items\"")
+ ("mab@gnu.org" . "gnu/Sent")
("aminb@gnu.org" . "gnu/Sent")
(".*" . "sent"))
notmuch-search-result-format
:bind
(:map notmuch-hello-mode-map
("g" . notmuch-poll-and-refresh-this-buffer)
- ("i" . (lambda ()
- "Search for `inbox' tagged messages"
- (interactive)
- (notmuch-hello-search "tag:inbox")))
("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"
+ "Search for `latest' tagged messages"
(interactive)
(notmuch-hello-search "tag:latest")))
+ ("e" . (lambda ()
+ "Search for `encrypted' tagged messages"
+ (interactive)
+ (notmuch-hello-search "tag:encrypted")))
("M" . (lambda ()
"Compose new mail and prompt for sender"
(interactive)