Switching back to evil
This commit is contained in:
parent
174a736ced
commit
36972ca410
@ -14,7 +14,7 @@ window_margin_width 0.0
|
||||
active_border_color #bbb
|
||||
inactive_border_color #555
|
||||
bell_border_color #ff5a00
|
||||
inactive_text_alpha 0.75
|
||||
inactive_text_alpha 1
|
||||
hide_window_decorations yes
|
||||
|
||||
cursor_shape block
|
||||
|
@ -134,13 +134,6 @@ need to benchmark slow init times later.
|
||||
|
||||
#+end_src
|
||||
|
||||
Don't let emacs add customised settings to init.el, which in our case is worse since we have a
|
||||
literate file.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
|
||||
#+end_src
|
||||
|
||||
This avoids those annoying *#backup#* files that get added and eventually slow down loading the file again.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
@ -202,12 +195,18 @@ Use Dashboard.el. First load `all-the-icons` for nicer rendering
|
||||
(setq custom-safe-themes t)
|
||||
#+end_src
|
||||
|
||||
Save the last used theme when exiting emacs and then reload it.
|
||||
We want to add whatever custom theme we selected to the custom variables since emacs will just
|
||||
automatically read it on startup but we don't want emacs to add these settings to init.el, which in
|
||||
our case is worse since we have a literate file. Send all custom variables to ~custom.el~
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
|
||||
(load custom-file)
|
||||
#+end_src
|
||||
|
||||
Save the last used theme when exiting emacs and then reload it.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun joe/save-current-theme ()
|
||||
(customize-save-variable 'custom-enabled-themes custom-enabled-themes))
|
||||
(add-hook 'kill-emacs-hook #'joe/save-current-theme)
|
||||
@ -378,7 +377,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
||||
(popper-mode t)
|
||||
#+end_src
|
||||
*** Scrolling
|
||||
#+begin_src emacs-lisp
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(require 'pixel-scroll)
|
||||
(setq pixel-scroll-precision-large-scroll-height 10.0)
|
||||
(setq pixel-scroll-precision-interpolation-factor 30)
|
||||
@ -395,13 +394,13 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
||||
(defun joe/smooth-scroll-half-page-down ()
|
||||
"Smooth scroll down"
|
||||
(interactive)
|
||||
(joe/pixel-scroll-lerp 3 -1))
|
||||
(joe/pixel-scroll-lerp 1.5 -1))
|
||||
;; (pixel-scroll-kbd-up))
|
||||
|
||||
(defun joe/smooth-scroll-half-page-up ()
|
||||
"Smooth scroll up"
|
||||
(interactive)
|
||||
(joe/pixel-scroll-lerp 3 1))
|
||||
(joe/pixel-scroll-lerp 1.5 1))
|
||||
|
||||
(defun joe/smooth-scroll-short-down ()
|
||||
"Smooth scroll down"
|
||||
@ -508,8 +507,9 @@ Vertico Embark Marginalia Consult Orderless
|
||||
|
||||
(defvar joe-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map (kbd "C-'") #'embark-act)
|
||||
;; (define-key map (kbd "C-'") #'embark-act)
|
||||
(define-key map (kbd "M-'") #'embark-dwim)
|
||||
(define-key map (kbd "C-/") #'comment-line)
|
||||
map)
|
||||
"my-keys-minor-mode keymap.")
|
||||
|
||||
@ -602,7 +602,8 @@ targets."
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(straight-use-package 'avy)
|
||||
(setq avy-case-fold-search nil) ;; case sensitive makes selection easier
|
||||
(setq avy-case-fold-search nil)
|
||||
(setq avy-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?u ?i ?o ?p ?z ?x ?c ?v ?n ?m))
|
||||
(define-key global-map (kbd "C-;") 'avy-goto-char) ;; I use this most frequently
|
||||
;; (define-key global-map (kbd "C-'") 'avy-goto-line) ;; Consistent with ivy-avy
|
||||
(define-key global-map (kbd "M-g c") 'avy-goto-char)
|
||||
@ -664,6 +665,7 @@ targets."
|
||||
(define-key dirvish-mode-map (kbd "h" ) #'dirvish-history-jump)
|
||||
(define-key dirvish-mode-map (kbd "s" ) #'dirvish-quicksort)
|
||||
(define-key dirvish-mode-map (kbd "v" ) #'dirvish-vc-menu)
|
||||
(define-key dirvish-mode-map (kbd "q" ) #'dirvish-quit)
|
||||
(define-key dirvish-mode-map (kbd "TAB" ) #'dirvish-subtree-toggle)
|
||||
(define-key dirvish-mode-map (kbd "M-f" ) #'dirvish-history-go-forward)
|
||||
(define-key dirvish-mode-map (kbd "M-b" ) #'dirvish-history-go-backward)
|
||||
@ -713,8 +715,8 @@ targets."
|
||||
|
||||
#+end_src
|
||||
|
||||
We need this require so we can call `vterm--internal in the joe/vterm-here function, but that slows
|
||||
down init time because vterm is loading TRAMP which is slow.
|
||||
VTerm is loading TRAMP along with it which slows down init time noticeably so call this after
|
||||
startup. Reason we have to call this is so the vterm fucntion can call `vterm--internal`.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'emacs-startup-hook (lambda () (require 'vterm)))
|
||||
@ -728,13 +730,6 @@ down init time because vterm is loading TRAMP which is slow.
|
||||
(setq undo-tree-visualizer-diff t)
|
||||
(setq undo-tree-history-directory-alist `(("." . ,(expand-file-name "undo" user-emacs-directory))))))
|
||||
#+end_src
|
||||
** Which Key
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(straight-use-package 'which-key)
|
||||
(setq which-key-idle-delay 0.3)
|
||||
(add-hook 'after-init-hook (lambda () (which-key-mode)))
|
||||
#+end_src
|
||||
** Text Editor
|
||||
|
||||
Emacs is an great operating system, if only it had a good text editor...
|
||||
@ -771,166 +766,118 @@ Emacs is an great operating system, if only it had a good text editor...
|
||||
("M-r" move-to-window-line-top-bottom "Reposition cursor"))
|
||||
#+end_src
|
||||
*** Multiple Cursors
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(straight-use-package 'multiple-cursors)
|
||||
#+end_src
|
||||
*** Meow
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(straight-use-package 'meow)
|
||||
(require '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)))
|
||||
(meow-setup)
|
||||
(meow-global-mode t)
|
||||
#+end_src
|
||||
*** Boon
|
||||
*** Evil
|
||||
#+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 "i" 'boon-smarter-backward)
|
||||
(define-key boon-moves-map "o" 'boon-smarter-forward)
|
||||
(define-key boon-moves-map ";" '("hop" . avy-goto-word-1))
|
||||
(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)
|
||||
|
||||
(setq evil-want-keybinding nil)
|
||||
(setq evil-undo-system 'undo-tree)
|
||||
(setq evil-want-C-u-scroll t)
|
||||
(setq evil-want-Y-yank-to-eol t)
|
||||
(setq evil-disable-insert-state-bindings t)
|
||||
|
||||
(straight-use-package 'evil)
|
||||
(straight-use-package 'evil-collection)
|
||||
|
||||
(evil-mode t)
|
||||
(evil-collection-init)
|
||||
|
||||
;; TODO: We need 3 bindings; 1.) close buffer 2.) close window 3.) close buffer and window
|
||||
;; To disable a keybinding just bind it to nil
|
||||
(evil-set-leader 'normal (kbd "SPC"))
|
||||
(evil-define-key 'normal 'global (kbd "<leader>w") 'save-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>q") 'kill-buffer-and-window)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>k") 'kill-this-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>h") 'help-command)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>hf") 'helpful-callable)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>hv") 'helpful-variable)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>hk") 'helpful-key)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>ho") 'helpful-symbol)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>hg") 'helpful-at-point)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>fb") 'bookmark-jump)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>fr") 'consult-recent-file)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>ff") 'ffip)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>fi") 'joe/edit-init)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bl") 'mode-line-other-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bb") 'switch-to-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bi") 'ibuffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bm") 'joe/toggle-buffer-mode)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>br") 'joe/revert-buffer-no-confirm)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bk") 'kill-this-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>gg") 'magit-status)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>gc") 'magit-clone)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pi") 'package-install)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pd") 'package-delete)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pf") 'package-refresh-contents)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pl") 'package-list-packages)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pr") 'package-reinstall)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>ss") 'joe/vterm-here)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>sv") 'vterm)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>tv") 'vterm-other-window)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>Ba") 'joe/bookmark-set-and-save)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>Bd") 'bookmark-delete)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>cr") 'joe/compile-run)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>cc") 'joe/compile-comp)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>ct") 'consult-theme)
|
||||
|
||||
(evil-define-key 'normal 'global (kbd "C-h") 'evil-window-left)
|
||||
(evil-define-key 'normal 'global (kbd "C-j") 'evil-window-down)
|
||||
(evil-define-key 'normal 'global (kbd "C-k") 'evil-window-up)
|
||||
(evil-define-key 'normal 'global (kbd "C-l") 'evil-window-right)
|
||||
(evil-define-key 'normal 'global (kbd "M-h") 'tab-previous)
|
||||
(evil-define-key 'normal 'global (kbd "M-l") 'tab-next)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>tn") 'tab-new)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>tc") 'tab-close)
|
||||
|
||||
(defvar global-evil-leader-map (make-sparse-keymap))
|
||||
(evil-define-key 'normal 'global-evil-leader-map (kbd "SPC") 'evil-send-leader)
|
||||
|
||||
(define-minor-mode global-evil-leader-mode
|
||||
"Minor mode to make evil leader global"
|
||||
:global t
|
||||
:keymap global-evil-leader-map)
|
||||
(global-evil-leader-mode)
|
||||
|
||||
;; (evil-define-key 'normal 'global (kbd "M-h") 'tab-line-switch-to-prev-tab)
|
||||
;; (evil-define-key 'normal 'global (kbd "M-l") 'tab-line-switch-to-next-tab)
|
||||
|
||||
(straight-use-package 'evil-surround)
|
||||
(global-evil-surround-mode t)
|
||||
|
||||
(straight-use-package 'evil-snipe)
|
||||
(evil-snipe-override-mode t)
|
||||
|
||||
(straight-use-package 'evil-commentary)
|
||||
(evil-commentary-mode t)
|
||||
|
||||
(straight-use-package 'evil-goggles)
|
||||
(evil-goggles-mode t)
|
||||
(setq evil-goggles-duration 0.075)
|
||||
(setq evil-goggles-pulse t)
|
||||
(setq evil-goggles-async-duration 0.55)
|
||||
|
||||
#+end_src
|
||||
|
||||
Because boon provides the x mode map, emacs bindings that keep tempo no longer do, so reverse them
|
||||
** Which Key
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(global-set-key (kbd "C-x s") 'save-buffer)
|
||||
(global-set-key (kbd "C-x C-s") 'save-some-buffers)
|
||||
#+end_src
|
||||
*** Kakoune.el
|
||||
(straight-use-package 'which-key)
|
||||
(setq which-key-idle-delay 0.3)
|
||||
(add-hook 'after-init-hook (lambda () (which-key-mode)))
|
||||
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(straight-use-package 'kakoune)
|
||||
(require 'kakoune)
|
||||
(defun ryo-enter () "Enter normal mode" (interactive) (ryo-modal-mode 1))
|
||||
(defun my/kakoune-setup ()
|
||||
"Call kakoune-setup-keybinds and then add some personal config."
|
||||
(kakoune-setup-keybinds)
|
||||
(setq ryo-modal-cursor-type 'box)
|
||||
(add-hook 'prog-mode-hook #'ryo-enter)
|
||||
(define-key ryo-modal-mode-map (kbd "SPC h") 'help-command)
|
||||
;; Access all C-x bindings easily
|
||||
(define-key ryo-modal-mode-map (kbd "z") ctl-x-map)
|
||||
(ryo-modal-keys
|
||||
("," save-buffer)
|
||||
("P" counsel-yank-pop)
|
||||
("m" mc/mark-next-like-this)
|
||||
("M" mc/skip-to-next-like-this)
|
||||
("n" mc/mark-previous-like-this)
|
||||
("N" mc/skip-to-previous-like-this)
|
||||
("M-m" mc/edit-lines)
|
||||
("*" mc/mark-all-like-this)
|
||||
("v" er/expand-region)
|
||||
("C-v" set-rectangular-region-anchor)
|
||||
("M-s" mc/split-region)
|
||||
(";" (("q" delete-window)
|
||||
("v" split-window-horizontally)
|
||||
("s" split-window-vertically)))
|
||||
("C-h" windmove-left)
|
||||
("C-j" windmove-down)
|
||||
("C-k" windmove-up)
|
||||
("C-l" windmove-right)
|
||||
("C-u" scroll-down-command :first '(deactivate-mark))
|
||||
("C-d" scroll-up-command :first '(deactivate-mark))))
|
||||
(add-hook 'after-init-hook 'my/kakoune-setup)
|
||||
;; (which-key-add-keymap-based-replacements evil-normal-state-map
|
||||
;; "<leader>f" '("Files")
|
||||
;; "<leader>b" '("Buffers")
|
||||
;; "<leader>B" '("Bookmarks")
|
||||
;; "<leader>c" '("Compile")
|
||||
;; "<leader>d" '("Dired")
|
||||
;; "<leader>g" '("Git")
|
||||
;; "<leader>t" '("Tabs")
|
||||
;; "<leader>p" '("Packages")
|
||||
;; "<leader>s" '("Shell (vterm)")
|
||||
;; "<leader>h" '("Help"))
|
||||
|
||||
#+end_src
|
||||
** IDE Features
|
||||
@ -942,7 +889,7 @@ Because boon provides the x mode map, emacs bindings that keep tempo no longer d
|
||||
(straight-use-package 'lsp-mode)
|
||||
|
||||
(setq lsp-keymap-prefix "C-c c")
|
||||
(lsp-enable-which-key-integration t)
|
||||
;; (lsp-enable-which-key-integration t)
|
||||
;; (require 'lsp)
|
||||
;; (straight-use-package 'eglot)
|
||||
|
||||
@ -1083,20 +1030,6 @@ The best git porcelain/client I've ever used. Also kill stray magit buffers left
|
||||
(setq magit-bury-buffer-function #'joe/magit-kill-buffers)
|
||||
(setq magit-clone-set-remote.pushDefault t)
|
||||
(setq magit-clone-default-directory "~/Development/")
|
||||
|
||||
(defvar joe/magit-keys-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map (kbd "C-x g g") #'magit-status)
|
||||
(define-key map (kbd "C-x g c") #'magit-clone)
|
||||
(define-key map (kbd "C-x g i") #'magit-init)
|
||||
map)
|
||||
"Personal magit map")
|
||||
|
||||
(define-minor-mode joe/magit-keys-mode
|
||||
"A minor mode to enable some magit keys"
|
||||
:init-value t)
|
||||
|
||||
(joe/magit-keys-mode t)
|
||||
#+end_src
|
||||
** Restclient
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user