summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitmodules9
-rw-r--r--init.org75
m---------lib/evil0
m---------lib/evil-escape0
m---------lib/general0
5 files changed, 83 insertions, 1 deletions
diff --git a/.gitmodules b/.gitmodules
index 5c2d05f..28eced6 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -40,6 +40,12 @@
[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
@@ -55,6 +61,9 @@
[submodule "flycheck-haskell"]
path = lib/flycheck-haskell
url = git@github.com:flycheck/flycheck-haskell.git
+[submodule "general"]
+ path = lib/general
+ url = git@github.com:noctuid/general.el.git
[submodule "ghub"]
path = lib/ghub
url = git@github.com:magit/ghub.git
diff --git a/init.org b/init.org
index 6d927c9..04719f0 100644
--- a/init.org
+++ b/init.org
@@ -582,12 +582,61 @@ customizing it.
'auto-compile-inhibit-compile-detached-git-head))
#+end_src
-*** TODO [[https://github.com/Kungsgeten/ryo-modal][ryo-modal]]
+*** [[https://github.com/noctuid/general.el][general]]
#+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)
+ :config
+ (evil-escape-mode 1)
+ ;; no `evil-escape' in minibuffer
+ (push #'minibufferp evil-escape-inhibit-functions))
+#+end_src
+
*** [[https://github.com/ch11ng/exwm][EXWM]] (window manager)
#+begin_src emacs-lisp :tangle no
@@ -828,6 +877,7 @@ In short, my favourite way of life.
(setq org-src-tab-acts-natively t
org-src-preserve-indentation nil
org-edit-src-content-indentation 0)
+(add-hook 'org-mode-hook 'org-indent-mode)
#+end_src
*** [[https://magit.vc/][Magit]]
@@ -840,6 +890,7 @@ 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)
:defer t
:bind (("s-g" . magit-status)
("C-x g" . magit-status)
@@ -864,6 +915,7 @@ There's no way I could top that, so I won't attempt to.
#+begin_src emacs-lisp
(use-package ivy
+ :defer 1
:bind
(:map ivy-minibuffer-map
([escape] . keyboard-escape-quit)
@@ -881,6 +933,7 @@ 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)
:bind (([remap isearch-forward] . swiper)
([remap isearch-backward] . swiper)))
#+end_src
@@ -890,6 +943,10 @@ 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)
:bind (([remap execute-extended-command] . counsel-M-x)
([remap find-file] . counsel-find-file)
("s-r" . counsel-recentf)
@@ -1000,6 +1057,16 @@ TODO: break this giant source block down into individual org sections.
(global-company-mode t))
#+end_src
+** Customizations
+
+#+begin_src emacs-lisp
+(ab--leader-keys
+ "b s" 'save-buffer
+ "b b" 'ivy-switch-buffer
+ "b k" 'kill-buffer
+ "q q" 'evil-save-and-quit)
+#+end_src
+
* Syntax and spell checking
#+begin_src emacs-lisp
(use-package flycheck
@@ -1230,6 +1297,11 @@ Emacs package that displays available keybindings in popup
(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
@@ -1277,6 +1349,7 @@ Emacs package that displays available keybindings in popup
mml-secure-openpgp-sign-with-sender t))
(use-package notmuch
+ :general (ab--leader-keys "m" 'ab/notmuch)
:config
(setq notmuch-hello-sections
'(notmuch-hello-insert-header
diff --git a/lib/evil b/lib/evil
new file mode 160000
+Subproject 230b87212c81aaa68ef5547a6b998d9c365fe13
diff --git a/lib/evil-escape b/lib/evil-escape
new file mode 160000
+Subproject 25920fb2f4ef48998eecea433c04096f8d124cf
diff --git a/lib/general b/lib/general
new file mode 160000
+Subproject 38590b2b40d9ae71a047914f938416a7bd01e37