Adding back Boon and Meow to try them out

This commit is contained in:
Joseph Ferano 2022-12-26 21:43:01 +07:00
parent da2e7b2393
commit 1d6d765cd3

View File

@ -113,11 +113,12 @@ Then bootstrap
This is commented out since it adds ever so slightly to init time, but keep it around in case we This is commented out since it adds ever so slightly to init time, but keep it around in case we
need to benchmark slow init times later. need to benchmark slow init times later.
#+begin_src emacs-lisp #+begin_src emacs-lisp :tangle no
(straight-use-package 'benchmark-init) (straight-use-package 'benchmark-init)
(require 'benchmark-init) (require 'benchmark-init)
(add-hook 'after-init-hook 'benchmark-init/deactivate) (add-hook 'after-init-hook 'benchmark-init/deactivate)
#+end_src #+end_src
** Misc Stuff ** Misc Stuff
#+begin_SRC emacs-lisp #+begin_SRC emacs-lisp
@ -333,6 +334,9 @@ Emacs is an great operating system, if only it had a good text editor...
(global-set-key (kbd "C-c d") 'duplicate-line) (global-set-key (kbd "C-c d") 'duplicate-line)
(global-set-key (kbd "C-c C-;") 'joe/duplicate-line-comment) (global-set-key (kbd "C-c C-;") 'joe/duplicate-line-comment)
(global-set-key (kbd "M-n") (kbd "C-u 1 C-v"))
(global-set-key (kbd "M-p") (kbd "C-u 1 M-v"))
#+end_src #+end_src
*** Hydra *** Hydra
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -354,8 +358,131 @@ Emacs is an great operating system, if only it had a good text editor...
#+begin_src emacs-lisp #+begin_src emacs-lisp
(straight-use-package 'multiple-cursors) (straight-use-package 'multiple-cursors)
#+end_src #+end_src
*** Evil *** Meow
#+begin_src emacs-lisp :tangle no
(straight-use-package 'meow)
(defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
(meow-motion-overwrite-define-key
'("j" . meow-next)
'("k" . meow-prev)
'("<escape>" . ignore))
(meow-leader-define-key
;; SPC j/k will run the original command in MOTION state.
'("j" . "H-j")
'("k" . "H-k")
;; Use SPC (0-9) for digit arguments.
'("1" . meow-digit-argument)
'("2" . meow-digit-argument)
'("3" . meow-digit-argument)
'("4" . meow-digit-argument)
'("5" . meow-digit-argument)
'("6" . meow-digit-argument)
'("7" . meow-digit-argument)
'("8" . meow-digit-argument)
'("9" . meow-digit-argument)
'("0" . meow-digit-argument)
'("/" . meow-keypad-describe-key)
'("?" . meow-cheatsheet))
(meow-normal-define-key
'("0" . meow-expand-0)
'("9" . meow-expand-9)
'("8" . meow-expand-8)
'("7" . meow-expand-7)
'("6" . meow-expand-6)
'("5" . meow-expand-5)
'("4" . meow-expand-4)
'("3" . meow-expand-3)
'("2" . meow-expand-2)
'("1" . meow-expand-1)
'("-" . negative-argument)
'(";" . meow-reverse)
'("," . meow-inner-of-thing)
'("." . meow-bounds-of-thing)
'("[" . meow-beginning-of-thing)
'("]" . meow-end-of-thing)
'("a" . meow-append)
'("A" . meow-open-below)
'("b" . meow-back-word)
'("B" . meow-back-symbol)
'("c" . meow-change)
'("d" . meow-delete)
'("D" . meow-backward-delete)
'("e" . meow-next-word)
'("E" . meow-next-symbol)
'("f" . meow-find)
'("g" . meow-cancel-selection)
'("G" . meow-grab)
'("h" . meow-left)
'("H" . meow-left-expand)
'("i" . meow-insert)
'("I" . meow-open-above)
'("j" . meow-next)
'("J" . meow-next-expand)
'("k" . meow-prev)
'("K" . meow-prev-expand)
'("l" . meow-right)
'("L" . meow-right-expand)
'("m" . meow-join)
'("n" . meow-search)
'("o" . meow-block)
'("O" . meow-to-block)
'("p" . meow-yank)
'("q" . meow-quit)
'("Q" . meow-goto-line)
'("r" . meow-replace)
'("R" . meow-swap-grab)
'("s" . meow-kill)
'("t" . meow-till)
'("u" . meow-undo)
'("U" . meow-undo-in-selection)
'("v" . meow-visit)
'("w" . meow-mark-word)
'("W" . meow-mark-symbol)
'("x" . meow-line)
'("X" . meow-goto-line)
'("y" . meow-save)
'("Y" . meow-sync-grab)
'("z" . meow-pop-selection)
'("'" . repeat)
'("<escape>" . ignore)))
(require 'meow)
(meow-setup)
(meow-global-mode t)
(setq scroll-preserve-screen-position nil)
#+end_src
*** Boon
#+begin_src emacs-lisp #+begin_src emacs-lisp
(straight-use-package 'boon)
(require 'boon-qwerty)
(boon-mode)
(define-key boon-moves-map "h" 'backward-char)
(define-key boon-moves-map "j" 'next-line)
(define-key boon-moves-map "k" 'previous-line)
(define-key boon-moves-map "l" 'forward-char)
(define-key boon-moves-map "b" 'boon-smarter-backward)
(define-key boon-moves-map "w" 'boon-smarter-forward)
(define-key boon-moves-map ";" '("hop" . avy-goto-char-2))
(define-key boon-command-map (kbd "C-k") 'scroll-down-line)
(define-key boon-command-map (kbd "C-j") 'scroll-up-line)
;; (define-key boon-command-map (kbd "C-d") 'joe/smooth-scroll-half-page-down)
;; (define-key boon-command-map (kbd "C-u") 'joe/smooth-scroll-half-page-up)
(define-key boon-moves-map "H" 'backward-paragraph)
(define-key boon-moves-map "L" 'forward-paragraph)
(define-key boon-moves-map "K" 'boon-smarter-upward)
(define-key boon-moves-map "J" 'boon-smarter-downward)
(define-key boon-moves-map "o" 'boon-open-next-line-and-insert)
(define-key boon-moves-map "O" 'boon-open-next-line-and-insert)
#+end_src
*** Evil
#+begin_src emacs-lisp :tangle no
(setq evil-want-keybinding nil) (setq evil-want-keybinding nil)
(setq evil-undo-system 'undo-fu) (setq evil-undo-system 'undo-fu)
@ -531,9 +658,9 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
(defun joe/window-split-vertical () (interactive) (set 'joe/popper-side-toggle 'right) (rotate:main-horizontal)) (defun joe/window-split-vertical () (interactive) (set 'joe/popper-side-toggle 'right) (rotate:main-horizontal))
(defun joe/window-split-horizontal () (interactive) (set 'joe/popper-side-toggle 'below) (rotate:main-vertical)) (defun joe/window-split-horizontal () (interactive) (set 'joe/popper-side-toggle 'below) (rotate:main-vertical))
(evil-global-set-key 'normal (kbd "<leader>w") 'evil-window-map) ;; (evil-global-set-key 'normal (kbd "<leader>w") 'evil-window-map)
(define-key evil-window-map "u" #'winner-undo) ;; (define-key evil-window-map "u" #'winner-undo)
(define-key ctl-x-4-map (kbd "|") #'joe/window-split-vertical) (define-key ctl-x-4-map (kbd "|") #'joe/window-split-vertical)
(define-key ctl-x-4-map (kbd "-") #'joe/window-split-horizontal) (define-key ctl-x-4-map (kbd "-") #'joe/window-split-horizontal)
@ -640,15 +767,15 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
(setq tab-bar-mode t) (setq tab-bar-mode t)
(setq tab-bar-show nil) (setq tab-bar-show nil)
(evil-define-key 'normal 'global (kbd "M-1") '(lambda () (interactive) (tab-bar-select-tab 1))) ;; (evil-define-key 'normal 'global (kbd "M-1") '(lambda () (interactive) (tab-bar-select-tab 1)))
(evil-define-key 'normal 'global (kbd "M-2") '(lambda () (interactive) (tab-bar-select-tab 2))) ;; (evil-define-key 'normal 'global (kbd "M-2") '(lambda () (interactive) (tab-bar-select-tab 2)))
(evil-define-key 'normal 'global (kbd "M-3") '(lambda () (interactive) (tab-bar-select-tab 3))) ;; (evil-define-key 'normal 'global (kbd "M-3") '(lambda () (interactive) (tab-bar-select-tab 3)))
(evil-define-key 'normal 'global (kbd "M-4") '(lambda () (interactive) (tab-bar-select-tab 4))) ;; (evil-define-key 'normal 'global (kbd "M-4") '(lambda () (interactive) (tab-bar-select-tab 4)))
(evil-define-key 'normal 'global (kbd "M-5") '(lambda () (interactive) (tab-bar-select-tab 5))) ;; (evil-define-key 'normal 'global (kbd "M-5") '(lambda () (interactive) (tab-bar-select-tab 5)))
(evil-define-key 'normal 'global (kbd "M-6") '(lambda () (interactive) (tab-bar-select-tab 6))) ;; (evil-define-key 'normal 'global (kbd "M-6") '(lambda () (interactive) (tab-bar-select-tab 6)))
(evil-define-key 'normal 'global (kbd "M-7") '(lambda () (interactive) (tab-bar-select-tab 7))) ;; (evil-define-key 'normal 'global (kbd "M-7") '(lambda () (interactive) (tab-bar-select-tab 7)))
(evil-define-key 'normal 'global (kbd "M-8") '(lambda () (interactive) (tab-bar-select-tab 8))) ;; (evil-define-key 'normal 'global (kbd "M-8") '(lambda () (interactive) (tab-bar-select-tab 8)))
(evil-define-key 'normal 'global (kbd "M-9") '(lambda () (interactive) (tab-bar-select-tab 9))) ;; (evil-define-key 'normal 'global (kbd "M-9") '(lambda () (interactive) (tab-bar-select-tab 9)))
#+end_src #+end_src
** Projects ** Projects
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -840,30 +967,30 @@ targets."
("r" "~/Repositories" "Repos") ("r" "~/Repositories" "Repos")
("B" "~/pCloudDrive/" "pCloud"))) ("B" "~/pCloudDrive/" "pCloud")))
(evil-define-key 'normal dirvish-mode-map ;; (evil-define-key 'normal dirvish-mode-map
(kbd "C-c f") #'dirvish-fd ;; (kbd "C-c f") #'dirvish-fd
(kbd "a") #'dirvish-quick-access ;; (kbd "a") #'dirvish-quick-access
(kbd ".") #'dired-create-empty-file ;; (kbd ".") #'dired-create-empty-file
(kbd "f") #'dirvish-file-info-menu ;; (kbd "f") #'dirvish-file-info-menu
(kbd "y") #'dirvish-yank-menu ;; (kbd "y") #'dirvish-yank-menu
(kbd "h") #'dired-up-directory ;; (kbd "h") #'dired-up-directory
(kbd "l") #'dired-find-file ;; (kbd "l") #'dired-find-file
(kbd "s") #'dirvish-quicksort ;; (kbd "s") #'dirvish-quicksort
(kbd "v") #'dirvish-vc-menu ;; (kbd "v") #'dirvish-vc-menu
(kbd "q") #'dirvish-quit ;; (kbd "q") #'dirvish-quit
(kbd "L") #'dirvish-history-go-forward ;; (kbd "L") #'dirvish-history-go-forward
(kbd "H") #'dirvish-history-go-backward ;; (kbd "H") #'dirvish-history-go-backward
(kbd "o") #'dired-open-file ;; (kbd "o") #'dired-open-file
(kbd "TAB") #'dirvish-subtree-toggle ;; (kbd "TAB") #'dirvish-subtree-toggle
(kbd "M-n") #'dirvish-narrow ;; (kbd "M-n") #'dirvish-narrow
(kbd "M-l") #'dirvish-ls-switches-menu ;; (kbd "M-l") #'dirvish-ls-switches-menu
(kbd "M-m") #'dirvish-mark-menu ;; (kbd "M-m") #'dirvish-mark-menu
(kbd "M-t") #'dirvish-layout-toggle ;; (kbd "M-t") #'dirvish-layout-toggle
(kbd "M-s") #'dirvish-setup-menu ;; (kbd "M-s") #'dirvish-setup-menu
(kbd "M-e") #'dirvish-emerge-menu ;; (kbd "M-e") #'dirvish-emerge-menu
(kbd "M-j") #'dirvish-fd-jump)) ;; (kbd "M-j") #'dirvish-fd-jump))
)
(evil-global-set-key 'normal (kbd "-") #'dirvish-dwim) ;; (evil-global-set-key 'normal (kbd "-") #'dirvish-dwim)
(global-set-key (kbd "C-x d") #'dirvish-dwim) (global-set-key (kbd "C-x d") #'dirvish-dwim)
(global-set-key (kbd "C-x C-d") #'joe/dirvish-find-directory) (global-set-key (kbd "C-x C-d") #'joe/dirvish-find-directory)
@ -996,18 +1123,18 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
(setq which-key-idle-delay 0.3) (setq which-key-idle-delay 0.3)
(add-hook 'after-init-hook (lambda () (which-key-mode))) (add-hook 'after-init-hook (lambda () (which-key-mode)))
(which-key-add-keymap-based-replacements evil-normal-state-map ;; (which-key-add-keymap-based-replacements evil-normal-state-map
"<leader>f" '("Files") ;; "<leader>f" '("Files")
"<leader>b" '("Buffers") ;; "<leader>b" '("Buffers")
"<leader>B" '("Bookmarks") ;; "<leader>B" '("Bookmarks")
"<leader>c" '("Consult") ;; "<leader>c" '("Consult")
"<leader>d" '("Dired") ;; "<leader>d" '("Dired")
"<leader>g" '("Git") ;; "<leader>g" '("Git")
"<leader>m" '("Make") ;; "<leader>m" '("Make")
"<leader>t" '("Tabs") ;; "<leader>t" '("Tabs")
"<leader>p" '("Packages") ;; "<leader>p" '("Packages")
"<leader>s" '("Shell (vterm)") ;; "<leader>s" '("Shell (vterm)")
"<leader>h" '("Help")) ;; "<leader>h" '("Help"))
#+end_src #+end_src
** IDE Features ** IDE Features
@ -1089,11 +1216,11 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
(setq lsp-signature-render-documentation nil) (setq lsp-signature-render-documentation nil)
(setq lsp-eldoc-render-all nil) (setq lsp-eldoc-render-all nil)
(evil-global-set-key 'normal (kbd "M-d") #'lsp-describe-thing-at-point) ;; (evil-global-set-key 'normal (kbd "M-d") #'lsp-describe-thing-at-point)
(evil-global-set-key 'normal (kbd "<leader>lh") 'lsp-headerline-breadcrumb-mode) ;; (evil-global-set-key 'normal (kbd "<leader>lh") 'lsp-headerline-breadcrumb-mode)
(evil-global-set-key 'normal (kbd "<leader>li") 'lsp-rust-analyzer-inlay-hints-mode) ;; (evil-global-set-key 'normal (kbd "<leader>li") 'lsp-rust-analyzer-inlay-hints-mode)
(evil-global-set-key 'normal (kbd "<leader>cs") 'consult-lsp-symbols) ;; (evil-global-set-key 'normal (kbd "<leader>cs") 'consult-lsp-symbols)
(evil-global-set-key 'normal (kbd "<leader>cf") 'consult-lsp-file-symbols) ;; (evil-global-set-key 'normal (kbd "<leader>cf") 'consult-lsp-file-symbols)
;; This function allows us to extract Rust's true function signature ;; This function allows us to extract Rust's true function signature
(cl-defmethod lsp-clients-extract-signature-on-hover (contents (_server-id (eql rust-analyzer))) (cl-defmethod lsp-clients-extract-signature-on-hover (contents (_server-id (eql rust-analyzer)))
@ -1115,11 +1242,11 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
#+begin_src emacs-lisp #+begin_src emacs-lisp
(straight-use-package 'flycheck) (straight-use-package 'flycheck)
;; TODO Add wrapping to these functions ;; TODO Add wrapping to these functions
(evil-global-set-key 'normal (kbd "M-e") #'flycheck-next-error) ;; (evil-global-set-key 'normal (kbd "M-e") #'flycheck-next-error)
(evil-global-set-key 'normal (kbd "M-E") #'flycheck-previous-error) ;; (evil-global-set-key 'normal (kbd "M-E") #'flycheck-previous-error)
(evil-global-set-key 'normal (kbd "<leader>ee") 'flycheck-mode) ;; (evil-global-set-key 'normal (kbd "<leader>ee") 'flycheck-mode)
(evil-global-set-key 'normal (kbd "<leader>el") #'flycheck-list-errors) ;; (evil-global-set-key 'normal (kbd "<leader>el") #'flycheck-list-errors)
(evil-global-set-key 'normal (kbd "<leader>ce") #'consult-lsp-diagnostics) ;; (evil-global-set-key 'normal (kbd "<leader>ce") #'consult-lsp-diagnostics)
#+end_src #+end_src
*** Compilation *** Compilation
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -1224,7 +1351,7 @@ The best git porcelain/client I've ever used. Also kill stray magit buffers left
(magit-restore-window-configuration) (magit-restore-window-configuration)
(mapc #'kill-buffer buffers))) (mapc #'kill-buffer buffers)))
(add-hook 'with-editor-mode-hook 'evil-insert-state) ;; (add-hook 'with-editor-mode-hook 'evil-insert-state)
(setq magit-bury-buffer-function #'joe/magit-kill-buffers) (setq magit-bury-buffer-function #'joe/magit-kill-buffers)
(setq magit-clone-set-remote.pushDefault t) (setq magit-clone-set-remote.pushDefault t)