Fix keybindings for dirvish

This commit is contained in:
Joseph Ferano 2022-11-14 00:54:54 +03:00
parent 0465cc52e1
commit 52ce9cda96

View File

@ -285,6 +285,156 @@ Setup other stuff
;; (add-hook 'before-save-hook 'whitespace-cleanup) ;; (add-hook 'before-save-hook 'whitespace-cleanup)
#+end_src #+end_src
** Text Editor
Emacs is an great operating system, if only it had a good text editor...
*** Text editing
#+begin_src emacs-lisp
(global-set-key (kbd "M-z") #'zap-up-to-char)
(global-set-key (kbd "M-Z") #'zap-to-char)
(defun joe/duplicate-line-comment ()
(interactive)
(let ((col (current-column)))
(duplicate-line)
(comment-line 1)
(move-to-column col)))
(global-set-key (kbd "C-c d") 'duplicate-line)
(global-set-key (kbd "C-c C-;") 'joe/duplicate-line-comment)
#+end_src
*** Hydra
#+begin_src emacs-lisp
(straight-use-package 'hydra)
(defhydra hydra-navigate (global-map "<f2>")
"Window Navigation"
("q" nil "quit")
("d" joe/smooth-scroll-half-page-down "half page down")
("u" joe/smooth-scroll-half-page-up "half page up")
("e" joe/smooth-scroll-short-down "line down")
("y" joe/smooth-scroll-short-up "line up")
("n" next-line "line down")
("p" previous-line "line up")
("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
*** Evil
#+begin_src emacs-lisp
(setq evil-want-keybinding nil)
(setq evil-undo-system 'undo-fu)
(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
(kbd "<leader>q") 'kill-buffer-and-window
(kbd "<leader>k") 'kill-this-buffer
(kbd "<leader>h") 'help-command
(kbd "<leader>hf") 'helpful-callable
(kbd "<leader>hv") 'helpful-variable
(kbd "<leader>hk") 'helpful-key
(kbd "<leader>ho") 'helpful-symbol
(kbd "<leader>hg") 'helpful-at-point
(kbd "<leader>fb") 'bookmark-jump
(kbd "<leader>fr") 'consult-recent-file
(kbd "<leader>ff") 'project-find-file
(kbd "<leader>fi") 'joe/edit-init
(kbd "<leader>bl") 'mode-line-other-buffer
(kbd "<leader>ba") 'consult-buffer
(kbd "<leader>bb") 'consult-project-buffer
(kbd "<leader>bi") 'ibuffer
(kbd "<leader>bm") 'joe/toggle-buffer-mode
(kbd "<leader>br") 'joe/revert-buffer-no-confirm
(kbd "<leader>gg") 'magit-status
(kbd "<leader>gc") 'magit-clone
(kbd "<leader>ss") 'joe/vterm-here
(kbd "<leader>sv") 'vterm
(kbd "<leader>tv") 'vterm-other-window
(kbd "<leader>Ba") 'joe/bookmark-set-and-save
(kbd "<leader>Bd") 'bookmark-delete
(kbd "<leader>mr") 'joe/compile-run
(kbd "<leader>mc") 'joe/compile-comp
(kbd "<leader>ct") 'consult-theme
(kbd "<leader>cl") 'consult-line
(kbd "<leader>ci") 'consult-imenu
(kbd "<leader>cy") 'consult-yank-from-kill-ring
(kbd "<leader>cg") 'consult-ripgrep
(kbd "<leader>cF") 'consult-find
(kbd "<leader>co") 'consult-outline)
(kbd "C-h") 'evil-window-left)
(kbd "C-j") 'evil-window-down)
(kbd "C-k") 'evil-window-up)
(kbd "C-l") 'evil-window-right)
(kbd "C-p") 'tab-previous)
(kbd "C-n") 'tab-next)
(kbd "<leader>tn") 'tab-new)
(kbd "<leader>tc") 'tab-close)
(kbd "<leader>tr") 'tab-rename)
(evil-define-key 'normal 'global (kbd "q") 'avy-goto-word-0)
(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-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-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-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-9") '(lambda () (interactive) (tab-bar-select-tab 9)))
;; (define-prefix-command 'evil-consult-map)
;; (define-key evil-consult-map "b" 'evil-window-bottom-right)
;; (define-key evil-consult-map "c" 'evil-window-delete)
;; (define-key evil-normal-state-map "," 'evil-consult-map)
(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
** Buffers ** Buffers
#+begin_src emacs-lisp #+begin_src emacs-lisp
(defun joe/kill-this-buffer-or-popup () (defun joe/kill-this-buffer-or-popup ()
@ -434,39 +584,6 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
(global-set-key (kbd "C-S-v") #'joe/smooth-scroll-short-down) (global-set-key (kbd "C-S-v") #'joe/smooth-scroll-short-down)
(global-set-key (kbd "M-S-v") #'joe/smooth-scroll-short-up) (global-set-key (kbd "M-S-v") #'joe/smooth-scroll-short-up)
#+end_src
** Org Mode
#+begin_src emacs-lisp
(straight-use-package 'org-bullets)
(defun joe/org-init ()
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
(setq org-agenda-files '("~/todo.org"))
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(makefile . t)
(shell . t)))
(require 'org-tempo)
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
(setq org-edit-src-content-indentation 0))
(with-eval-after-load 'org (joe/org-init))
(setq org-blank-before-new-entry
'((heading . nil)
(plain-list-item . nil)))
(setq org-cycle-separator-lines 1)
(setq org-hide-emphasis-markers t)
(setq org-src-window-setup 'current-window)
(defun joe/org-hook ()
(local-set-key (kbd "C-. C-i") 'consult-org-heading)
(org-bullets-mode)
(org-indent-mode))
(add-hook 'org-mode-hook 'joe/org-hook)
#+end_src #+end_src
** VEMCO ** VEMCO
@ -613,30 +730,6 @@ targets."
;; (global-set-key (kbd "C-s") 'swiper-thing-at-point) ;; (global-set-key (kbd "C-s") 'swiper-thing-at-point)
#+end_src
** Avy
#+begin_src emacs-lisp
(straight-use-package 'avy)
(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)
(define-key global-map (kbd "M-g e") 'avy-goto-word-0) ;; lots of candidates
(define-key global-map (kbd "M-g g") 'avy-goto-line) ;; digits behave like goto-line
(define-key global-map (kbd "M-g w") 'avy-goto-word-1) ;; first character of the word
(define-key global-map (kbd "M-g P") 'avy-pop-mark)
#+end_src
** Helpful
#+begin_src emacs-lisp
(straight-use-package 'helpful)
(global-set-key (kbd "C-h f") #'helpful-callable)
(global-set-key (kbd "C-h v") #'helpful-variable)
(global-set-key (kbd "C-h k") #'helpful-key)
(global-set-key (kbd "C-h C-d") #'helpful-at-point)
(global-set-key (kbd "C-h F") #'helpful-function)
(global-set-key (kbd "C-h C") #'helpful-command)
#+end_src #+end_src
** Dirvish/Dired ** Dirvish/Dired
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -671,30 +764,89 @@ targets."
("r" "~/Repositories" "Repos") ("r" "~/Repositories" "Repos")
("B" "~/pCloudDrive/" "pCloud"))) ("B" "~/pCloudDrive/" "pCloud")))
(define-key dirvish-mode-map (kbd "C-c f") #'dirvish-fd) (evil-define-key 'normal dirvish-mode-map
(define-key dirvish-mode-map (kbd "a" ) #'dirvish-quick-access) (kbd "C-c f") #'dirvish-fd
(define-key dirvish-mode-map (kbd "." ) #'dired-create-empty-file) (kbd "a") #'dirvish-quick-access
(define-key dirvish-mode-map (kbd "f" ) #'dirvish-file-info-menu) (kbd ".") #'dired-create-empty-file
(define-key dirvish-mode-map (kbd "y" ) #'dirvish-yank-menu) (kbd "f") #'dirvish-file-info-menu
(define-key dirvish-mode-map (kbd "N" ) #'dirvish-narrow) (kbd "y") #'dirvish-yank-menu
(define-key dirvish-mode-map (kbd "^" ) #'dired-up-directory) (kbd "h") #'dired-up-directory
(define-key dirvish-mode-map (kbd "h" ) #'dirvish-history-jump) (kbd "l") #'dired-find-file
(define-key dirvish-mode-map (kbd "s" ) #'dirvish-quicksort) (kbd "s") #'dirvish-quicksort
(define-key dirvish-mode-map (kbd "v" ) #'dirvish-vc-menu) (kbd "v") #'dirvish-vc-menu
(define-key dirvish-mode-map (kbd "q" ) #'dirvish-quit) (kbd "q") #'dirvish-quit
(define-key dirvish-mode-map (kbd "TAB" ) #'dirvish-subtree-toggle) (kbd "L") #'dirvish-history-go-forward
(define-key dirvish-mode-map (kbd "M-f" ) #'dirvish-history-go-forward) (kbd "H") #'dirvish-history-go-backward
(define-key dirvish-mode-map (kbd "M-b" ) #'dirvish-history-go-backward) (kbd "TAB") #'dirvish-subtree-toggle
(define-key dirvish-mode-map (kbd "M-l" ) #'dirvish-ls-switches-menu) (kbd "M-n") #'dirvish-narrow
(define-key dirvish-mode-map (kbd "M-m" ) #'dirvish-mark-menu) (kbd "M-l") #'dirvish-ls-switches-menu
(define-key dirvish-mode-map (kbd "M-t" ) #'dirvish-layout-toggle) (kbd "M-m") #'dirvish-mark-menu
(define-key dirvish-mode-map (kbd "M-s" ) #'dirvish-setup-menu) (kbd "M-t") #'dirvish-layout-toggle
(define-key dirvish-mode-map (kbd "M-e" ) #'dirvish-emerge-menu) (kbd "M-s") #'dirvish-setup-menu
(define-key dirvish-mode-map (kbd "M-j" ) #'dirvish-fd-jump)) (kbd "M-e") #'dirvish-emerge-menu
(kbd "M-j") #'dirvish-fd-jump))
(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)
#+end_src
** Org Mode
#+begin_src emacs-lisp
(straight-use-package 'org-bullets)
(defun joe/org-init ()
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
(setq org-agenda-files '("~/todo.org"))
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(makefile . t)
(shell . t)))
(require 'org-tempo)
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
(setq org-edit-src-content-indentation 0))
(with-eval-after-load 'org (joe/org-init))
(setq org-blank-before-new-entry
'((heading . nil)
(plain-list-item . nil)))
(setq org-cycle-separator-lines 1)
(setq org-hide-emphasis-markers t)
(setq org-src-window-setup 'current-window)
(defun joe/org-hook ()
(local-set-key (kbd "C-. C-i") 'consult-org-heading)
(org-bullets-mode)
(org-indent-mode))
(add-hook 'org-mode-hook 'joe/org-hook)
#+end_src
** Avy
#+begin_src emacs-lisp
(straight-use-package 'avy)
(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)
(define-key global-map (kbd "M-g e") 'avy-goto-word-0) ;; lots of candidates
(define-key global-map (kbd "M-g g") 'avy-goto-line) ;; digits behave like goto-line
(define-key global-map (kbd "M-g w") 'avy-goto-word-1) ;; first character of the word
(define-key global-map (kbd "M-g P") 'avy-pop-mark)
#+end_src
** Helpful
#+begin_src emacs-lisp
(straight-use-package 'helpful)
(global-set-key (kbd "C-h f") #'helpful-callable)
(global-set-key (kbd "C-h v") #'helpful-variable)
(global-set-key (kbd "C-h k") #'helpful-key)
(global-set-key (kbd "C-h C-d") #'helpful-at-point)
(global-set-key (kbd "C-h F") #'helpful-function)
(global-set-key (kbd "C-h C") #'helpful-command)
#+end_src #+end_src
** Terminals/Shells ** Terminals/Shells
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -750,146 +902,6 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
(setq undo-strong-limit 100663296) ;; 96mb. (setq undo-strong-limit 100663296) ;; 96mb.
(setq undo-outer-limit 1006632960) ;; 960mb. (setq undo-outer-limit 1006632960) ;; 960mb.
#+end_src #+end_src
** Text Editor
Emacs is an great operating system, if only it had a good text editor...
*** Text editing
#+begin_src emacs-lisp
(global-set-key (kbd "M-z") #'zap-up-to-char)
(global-set-key (kbd "M-Z") #'zap-to-char)
(defun joe/duplicate-line-comment ()
(interactive)
(let ((col (current-column)))
(duplicate-line)
(comment-line 1)
(move-to-column col)))
(global-set-key (kbd "C-c d") 'duplicate-line)
(global-set-key (kbd "C-c C-;") 'joe/duplicate-line-comment)
#+end_src
*** Hydra
#+begin_src emacs-lisp
(straight-use-package 'hydra)
(defhydra hydra-navigate (global-map "<f2>")
"Window Navigation"
("q" nil "quit")
("d" joe/smooth-scroll-half-page-down "half page down")
("u" joe/smooth-scroll-half-page-up "half page up")
("e" joe/smooth-scroll-short-down "line down")
("y" joe/smooth-scroll-short-up "line up")
("n" next-line "line down")
("p" previous-line "line up")
("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
*** Evil
#+begin_src emacs-lisp
(setq evil-want-keybinding nil)
(setq evil-undo-system 'undo-fu)
(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") 'project-find-file)
(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>ba") 'consult-buffer)
(evil-define-key 'normal 'global (kbd "<leader>bb") 'consult-project-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>gg") 'magit-status)
(evil-define-key 'normal 'global (kbd "<leader>gc") 'magit-clone)
(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>mr") 'joe/compile-run)
(evil-define-key 'normal 'global (kbd "<leader>mc") 'joe/compile-comp)
(evil-define-key 'normal 'global (kbd "<leader>ct") 'consult-theme)
(evil-define-key 'normal 'global (kbd "<leader>cl") 'consult-line)
(evil-define-key 'normal 'global (kbd "<leader>ci") 'consult-imenu)
(evil-define-key 'normal 'global (kbd "<leader>cy") 'consult-yank-from-kill-ring)
(evil-define-key 'normal 'global (kbd "<leader>cg") 'consult-ripgrep)
(evil-define-key 'normal 'global (kbd "<leader>cF") 'consult-find)
(evil-define-key 'normal 'global (kbd "<leader>co") 'consult-outline)
(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 "C-p") 'tab-previous)
(evil-define-key 'normal 'global (kbd "C-n") 'tab-next)
(evil-define-key 'normal 'global (kbd "<leader>tn") 'tab-new)
(evil-define-key 'normal 'global (kbd "<leader>tc") 'tab-close)
(evil-define-key 'normal 'global (kbd "<leader>tr") 'tab-rename)
(evil-define-key 'normal 'global (kbd "q") 'avy-goto-word-0)
;; (define-prefix-command 'evil-consult-map)
;; (define-key evil-consult-map "b" 'evil-window-bottom-right)
;; (define-key evil-consult-map "c" 'evil-window-delete)
;; (define-key evil-normal-state-map "," 'evil-consult-map)
(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
** Which Key ** Which Key
#+begin_src emacs-lisp #+begin_src emacs-lisp