From eb186a5ac60fdb718daed6d4dacdd848086fd134 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Sun, 22 Jul 2018 13:03:43 -0400 Subject: [PATCH] [emacs] ditch evil in favour of ryo-modal also, rebind sway resize from s-r to s-S-r so that it won't clash with my counsel-recentf binding --- .gitmodules | 9 +- init.org | 231 ++++++++++++++++++++++-------------------------- lib/evil | 1 - lib/evil-escape | 1 - lib/ryo-modal | 1 + rc.org | 2 +- 6 files changed, 110 insertions(+), 135 deletions(-) delete mode 160000 lib/evil delete mode 160000 lib/evil-escape create mode 160000 lib/ryo-modal diff --git a/.gitmodules b/.gitmodules index f861ab8..776beaa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -56,12 +56,6 @@ [submodule "epl"] path = lib/epl url = git@github.com:cask/epl.git -[submodule "evil"] - path = lib/evil - url = git@github.com:emacs-evil/evil.git -[submodule "evil-escape"] - path = lib/evil-escape - url = git@github.com:syl20bnr/evil-escape.git [submodule "exec-path-from-shell"] path = lib/exec-path-from-shell url = git@github.com:purcell/exec-path-from-shell.git @@ -162,6 +156,9 @@ [submodule "proof-site"] # Proof General path = lib/proof-site url = git@github.com:ProofGeneral/PG.git +[submodule "ryo-modal"] + path = lib/ryo-modal + url = git@github.com:Kungsgeten/ryo-modal.git [submodule "s"] path = lib/s url = git@github.com:magnars/s.el.git diff --git a/init.org b/init.org index 8a21f1a..5deade4 100644 --- a/init.org +++ b/init.org @@ -248,7 +248,7 @@ and without compromising on performance. #+begin_src emacs-lisp (require 'use-package) -(if nil ; set to t when need to debug init +(if nil ; set to t when need to debug init (setq use-package-verbose t use-package-expand-minimally nil use-package-compute-statistics t @@ -426,7 +426,7 @@ compilation." (setq body `(after! ,next ,@body))) body) ((listp features) - `(after! (:all ,@features) ,@body))))) + `(after! (:all ,@features) ,@body))))) #+end_src * Core @@ -581,67 +581,51 @@ customizing it. (auto-compile-on-load-mode) (auto-compile-on-save-mode) (setq auto-compile-display-buffer nil - auto-compile-mode-line-counter t - auto-compile-source-recreate-deletes-dest t - auto-compile-toggle-deletes-nonlib-dest t - auto-compile-update-autoloads t) + auto-compile-mode-line-counter t + auto-compile-source-recreate-deletes-dest t + auto-compile-toggle-deletes-nonlib-dest t + auto-compile-update-autoloads t) (add-hook 'auto-compile-inhibit-compile-hook 'auto-compile-inhibit-compile-detached-git-head)) #+end_src -*** [[https://github.com/noctuid/general.el][general]] +*** [[https://github.com/Kungsgeten/ryo-modal][ryo-modal]] #+begin_quote Roll your own modal mode #+end_quote #+begin_src emacs-lisp -(use-package general - :demand t - :config - (general-evil-setup t) - - (general-override-mode) - - (general-create-definer - ab--mode-leader-keys - :keymaps 'override - :states '(emacs normal visual motion insert) - :non-normal-prefix "C-," - :prefix ",") - - (general-create-definer - ab--leader-keys - :keymaps 'override - :states '(emacs normal visual motion insert) - :non-normal-prefix "M-m" - :prefix "SPC")) -#+end_src - -*** evil - -#+begin_src emacs-lisp -(use-package evil - :demand t - :hook (view-mode . evil-motion-state) - :config (evil-mode 1)) -#+end_src - -#+begin_src emacs-lisp -(use-package evil-escape - :demand t - :init - (setq evil-escape-excluded-states '(normal visual multiedit emacs motion) - evil-escape-excluded-major-modes '(neotree-mode) - evil-escape-key-sequence "jk" - evil-escape-delay 0.25) - :general - (:states '(insert replace visual operator) - "C-g" #'evil-escape) +(use-package ryo-modal + :commands ryo-modal-mode + :bind ("M-m" . ryo-modal-mode) + :after which-key :config - (evil-escape-mode 1) - ;; no `evil-escape' in minibuffer - (push #'minibufferp evil-escape-inhibit-functions)) + (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)) + + (ryo-modal-keys + ;; First argyment to ryo-modal-keys may be a list of keywords. + ;; These keywords will be applied to all keybindings. + (:norepeat t) + ("0" "M-0") + ("1" "M-1") + ("2" "M-2") + ("3" "M-3") + ("4" "M-4") + ("5" "M-5") + ("6" "M-6") + ("7" "M-7") + ("8" "M-8") + ("9" "M-9")) + :hook ((text-mode . ryo-modal-mode) + (prog-mode . ryo-modal-mode))) #+end_src *** [[https://orgmode.org/][Org mode]] @@ -680,10 +664,10 @@ Not just how I do git, but /the/ way to do git. #+begin_src emacs-lisp (use-package magit - :general (ab--leader-keys "g s" 'magit-status) + :ryo ("SPC" (("g s" magit-status))) :defer t :bind (("s-g" . magit-status) - ("C-x g" . magit-status) + ("C-x g" . magit-status) ("C-x M-g" . magit-dispatch-popup)) :config (magit-add-section-hook 'magit-status-sections-hook @@ -714,6 +698,7 @@ There's no way I could top that, so I won't attempt to. ([S-up] . ivy-previous-history-element) ([S-down] . ivy-next-history-element) ("DEL" . ivy-backward-delete-char)) + :ryo ("SPC ," ivy-switch-buffer) :config (setq ivy-wrap t) (ivy-mode 1)) @@ -723,9 +708,9 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package swiper - :general (:states 'normal "/" 'swiper) + :ryo ("/" swiper) :bind (([remap isearch-forward] . swiper) - ([remap isearch-backward] . swiper))) + ([remap isearch-backward] . swiper))) #+end_src **** Counsel @@ -733,15 +718,15 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package counsel :defer 1 - :general (ab--leader-keys - "f r" 'counsel-recentf - "SPC" 'counsel-M-x - "." 'counsel-find-file) + :ryo + ("SPC" (("f r" counsel-recentf) + ("SPC" counsel-M-x) + ("." counsel-find-file))) :bind (([remap execute-extended-command] . counsel-M-x) ([remap find-file] . counsel-find-file) ("s-r" . counsel-recentf) :map minibuffer-local-map - ("C-r" . counsel-minibuffer-history)) + ("C-r" . counsel-minibuffer-history)) :config (counsel-mode 1) (defalias 'locate #'counsel-locate)) @@ -837,7 +822,7 @@ TODO: break this giant source block down into individual org sections. :defer 5 :bind (:map company-active-map - ([tab] . company-complete-common-or-cycle)) + ([tab] . company-complete-common-or-cycle)) :custom (company-idle-delay 0.3) (company-minimum-prefix-length 1) @@ -850,12 +835,11 @@ TODO: break this giant source block down into individual org sections. ** Customizations #+begin_src emacs-lisp -(ab--leader-keys - "b s" 'save-buffer - "b b" 'ivy-switch-buffer - "," 'ivy-switch-buffer - "b k" 'kill-this-buffer - "q q" 'evil-save-and-quit) +(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 @@ -890,7 +874,7 @@ TODO: break this giant source block down into individual org sections. #+begin_src emacs-lisp (use-package lean-mode :bind (:map lean-mode-map - ("S-SPC" . company-complete))) + ("S-SPC" . company-complete))) #+end_src ** Haskell @@ -902,8 +886,8 @@ TODO: break this giant source block down into individual org sections. :config (setq haskell-indentation-layout-offset 4 haskell-indentation-left-offset 4 - flycheck-checker 'haskell-hlint - flycheck-disabled-checkers '(haskell-stack-ghc haskell-ghc))) + flycheck-checker 'haskell-hlint + flycheck-disabled-checkers '(haskell-stack-ghc haskell-ghc))) #+end_src *** [[https://github.com/jyp/dante][dante]] @@ -923,8 +907,8 @@ executable from [[https://github.com/mpickering/apply-refact][apply-refact]]. #+begin_src emacs-lisp (use-package hlint-refactor :bind (:map hlint-refactor-mode-map - ("C-c l b" . hlint-refactor-refactor-buffer) - ("C-c l r" . hlint-refactor-refactor-at-point)) + ("C-c l b" . hlint-refactor-refactor-buffer) + ("C-c l r" . hlint-refactor-refactor-at-point)) :hook (haskell-mode . hlint-refactor-mode)) #+end_src @@ -1025,8 +1009,8 @@ instead. (new-old-code "")) (save-excursion (switch-to-buffer (get-file-buffer fname)) - (goto-char (point-min)) - (forward-line (1- fline)) + (goto-char (point-min)) + (forward-line (1- fline)) (beginning-of-line) (setf bline (point)) (when (or hs-lint-replace-without-ask @@ -1128,11 +1112,6 @@ See [[notmuch:id:87muuqsvci.fsf@fencepost.gnu.org][bug follow-up]]. (delete-other-windows) (notmuch)) -;; (ab--leader-keys -;; "m" 'ab/notmuch -;; "s" 'save-buffer -;; "SPC" 'counsel-M-x) - ;; (map! ;; :leader ;; :desc "notmuch" :n "m" #'ab/notmuch @@ -1180,7 +1159,7 @@ See [[notmuch:id:87muuqsvci.fsf@fencepost.gnu.org][bug follow-up]]. mml-secure-openpgp-sign-with-sender t)) (use-package notmuch - :general (ab--leader-keys "m" 'ab/notmuch) + :ryo ("SPC m" ab/notmuch) :config (setq notmuch-hello-sections '(notmuch-hello-insert-header @@ -1213,53 +1192,53 @@ See [[notmuch:id:87muuqsvci.fsf@fencepost.gnu.org][bug follow-up]]. ;; :override #'kill-this-buffer) :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"))) - ("l" . (lambda () - "Search for `latest tagged messages" - (interactive) - (notmuch-hello-search "tag:latest"))) - ("M" . (lambda () - "Compose new mail and prompt for sender" - (interactive) - (let ((current-prefix-arg t)) - (call-interactively #'notmuch-mua-new-mail))))) + ("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"))) + ("l" . (lambda () + "Search for `latest tagged messages" + (interactive) + (notmuch-hello-search "tag:latest"))) + ("M" . (lambda () + "Compose new mail and prompt for sender" + (interactive) + (let ((current-prefix-arg t)) + (call-interactively #'notmuch-mua-new-mail))))) (:map notmuch-search-mode-map - ("g" . notmuch-poll-and-refresh-this-buffer) - ("k" . (lambda () - "Mark message read" - (interactive) - (notmuch-search-tag '("-unread")) - ;; (notmuch-search-archive-thread) - (notmuch-search-next-thread))) - ("u" . (lambda () - "Mark message unread" - (interactive) - (notmuch-search-tag '("+unread")) - (notmuch-search-next-thread))) - ("K" . (lambda () - "Mark message deleted" - (interactive) - (notmuch-search-tag '("-unread" "-inbox" "+deleted")) - (notmuch-search-archive-thread))) - ("S" . (lambda () - "Mark message as spam" - (interactive) - (notmuch-search-tag '("-unread" "-inbox" "-webmasters" "+spam")) - (notmuch-search-archive-thread)))) + ("g" . notmuch-poll-and-refresh-this-buffer) + ("k" . (lambda () + "Mark message read" + (interactive) + (notmuch-search-tag '("-unread")) + ;; (notmuch-search-archive-thread) + (notmuch-search-next-thread))) + ("u" . (lambda () + "Mark message unread" + (interactive) + (notmuch-search-tag '("+unread")) + (notmuch-search-next-thread))) + ("K" . (lambda () + "Mark message deleted" + (interactive) + (notmuch-search-tag '("-unread" "-inbox" "+deleted")) + (notmuch-search-archive-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 - ("S" . (lambda () - "Mark message as spam" - (interactive) - (notmuch-tree-tag '("-unread" "-inbox" "-webmasters" "+spam")) - (notmuch-tree-archive-thread)))) + ("S" . (lambda () + "Mark message as spam" + (interactive) + (notmuch-tree-tag '("-unread" "-inbox" "-webmasters" "+spam")) + (notmuch-tree-archive-thread)))) ) ;; (use-package counsel-notmuch diff --git a/lib/evil b/lib/evil deleted file mode 160000 index 230b872..0000000 --- a/lib/evil +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 230b87212c81aaa68ef5547a6b998d9c365fe139 diff --git a/lib/evil-escape b/lib/evil-escape deleted file mode 160000 index 73b30bf..0000000 --- a/lib/evil-escape +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 73b30bfd912f40657b1306ee5849d215f0f9ffbd diff --git a/lib/ryo-modal b/lib/ryo-modal new file mode 160000 index 0000000..42f8744 --- /dev/null +++ b/lib/ryo-modal @@ -0,0 +1 @@ +Subproject commit 42f874467dfdce59b511f883496ce2624b133dd7 diff --git a/rc.org b/rc.org index a7632fd..85769b2 100644 --- a/rc.org +++ b/rc.org @@ -3870,7 +3870,7 @@ mode "resize" { bindsym Return mode "default" bindsym Escape mode "default" } -bindsym $mod+r mode "resize" +bindsym $mod+Shift+r mode "resize" # # Status Bar: -- 2.20.1