X-Git-Url: https://git.shemshak.org/gitweb.cgi/~bandali/configs/blobdiff_plain/eb186a5ac60fdb718daed6d4dacdd848086fd134..f8869b0b6566b941cad4989e03a1b7ba90748b28:/init.org diff --git a/init.org b/init.org index 5deade4..0cf8627 100644 --- a/init.org +++ b/init.org @@ -565,6 +565,25 @@ variable. 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 @@ -604,11 +623,36 @@ Roll your own modal mode (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. @@ -639,17 +683,21 @@ system. 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 @@ -708,7 +756,9 @@ There's no way I could top that, so I won't attempt to. #+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 @@ -808,9 +858,15 @@ TODO: break this giant source block down into individual org sections. (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 @@ -832,16 +888,6 @@ TODO: break this giant source block down into individual org sections. (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 @@ -1099,6 +1145,51 @@ Emacs package that displays available keybindings in popup (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) + ("" . mwim-beginning-of-line-or-code) + ("" . mwim-end-of-line-or-code)) + :ryo + ("a" mwim-beginning-of-code-or-line) + ("e" mwim-end-of-code-or-line)) +#+end_src + +** [[https://github.com/vlevit/key-seq.el][key-seq]] (uses [[https://www.emacswiki.org/emacs/KeyChord][key-chord]]) + +#+begin_src emacs-lisp +(use-package key-chord + :demand t + :config + (key-chord-mode 1) + (setq key-chord-one-key-delay 0 ; i don't need one-key chords for now + key-chord-two-keys-delay 0.075)) +(use-package key-seq + :after key-chord + :config + (key-seq-define-global "jk" 'ryo-modal-mode)) +#+end_src + * Email ** [[https://notmuchmail.org][notmuch]]