emacs: emacs style for remaining SPC keybindings, fix nano-calendar scaling, use emacs for magit

This commit is contained in:
Joseph Ferano 2026-04-13 10:31:43 +08:00
parent b6aec65c87
commit 7fdcfa458c

View File

@ -808,25 +808,6 @@ Fill region is great, except when you don't need it...
(evil-get-auxiliary-keymap joe/evil-space-mode-map state t t) (evil-get-auxiliary-keymap joe/evil-space-mode-map state t t)
state)) state))
(evil-define-key 'normal joe/evil-space-mode-map
(kbd "SPC fb") 'bookmark-jump
(kbd "SPC fr") 'consult-recent-file
(kbd "SPC ff") 'project-find-file
(kbd "SPC fa") '(lambda () (interactive) (project-find-file t))
(kbd "SPC fi") 'joe/edit-init
(kbd "SPC bi") 'ibuffer
(kbd "SPC bu") 'recentf-open-most-recent-file
(kbd "SPC bm") 'joe/toggle-buffer-mode
(kbd "SPC br") 'joe/revert-buffer-no-confirm
(kbd "SPC ss") 'joe/vterm-here
(kbd "SPC sv") 'vterm-other-window
(kbd "SPC mm") 'mu4e
(kbd "SPC cl") 'consult-line
(kbd "SPC cy") 'consult-yank-from-kill-ring
(kbd "SPC cg") 'consult-ripgrep
(kbd "SPC cF") 'consult-find
(kbd "SPC co") 'consult-outline)
(define-key evil-window-map "u" #'winner-undo) (define-key evil-window-map "u" #'winner-undo)
(define-key evil-window-map "U" #'winner-redo) (define-key evil-window-map "U" #'winner-redo)
@ -1460,11 +1441,12 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
;; (require 'consult-lsp) ;; (require 'consult-lsp)
(global-set-key (kbd "C-. C-l") 'consult-line) (global-set-key (kbd "M-s l") #'consult-line)
(global-set-key (kbd "C-. C-i") 'consult-imenu) (global-set-key (kbd "M-s g") #'consult-ripgrep)
(global-set-key (kbd "C-. C-t") 'joe/consult-theme) (global-set-key (kbd "M-s f") #'consult-find)
(global-set-key (kbd "C-. C-r") 'consult-recent-file) (global-set-key (kbd "M-s y") #'consult-yank-from-kill-ring)
(global-set-key (kbd "C-. C-y") 'consult-yank-from-kill-ring) (global-set-key (kbd "M-s r") #'consult-recent-file)
(global-set-key (kbd "M-s i") #'consult-imenu)
#+end_src #+end_src
*** Orderless *** Orderless
@ -1580,6 +1562,8 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
(require 'mu4e) (require 'mu4e)
(setq mu4e-use-maildirs-extension nil) (setq mu4e-use-maildirs-extension nil)
(global-set-key (kbd "C-c m") #'mu4e)
;; Attach files to a message composition buffer by going into `dired' ;; Attach files to a message composition buffer by going into `dired'
;; and doing C-c C-m C-a (M-x `gnus-dired-attach'). ;; and doing C-c C-m C-a (M-x `gnus-dired-attach').
(require 'gnus-dired) ; does not require `gnus' (require 'gnus-dired) ; does not require `gnus'
@ -1677,8 +1661,7 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
(require 'avy) (require 'avy)
(setq avy-case-fold-search nil) (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)) (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 (global-set-key (kbd "C-;") #'avy-goto-char) ;; I use this most frequently
(define-key global-map (kbd "M-s") '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 "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 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 e") 'avy-goto-word-0) ;; lots of candidates
@ -1721,8 +1704,7 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
(with-current-buffer vterm-buf (with-current-buffer vterm-buf
(setq popper-popup-status 'raised)))) (setq popper-popup-status 'raised))))
;; (global-set-key (kbd "C-c t") #'vterm) (global-set-key (kbd "C-c t") #'joe/vterm-here)
;; (global-set-key (kbd "C-c T") #'joe/vterm-here)
;; (setq explicit-shell-file-name "~/Development/fell/fell") ;; (setq explicit-shell-file-name "~/Development/fell/fell")
(add-hook 'shell-mode (lambda () (setq-local global-hl-line-mode nil))) (add-hook 'shell-mode (lambda () (setq-local global-hl-line-mode nil)))
(setq shell-kill-buffer-on-exit t) (setq shell-kill-buffer-on-exit t)
@ -1932,14 +1914,7 @@ These help speed eglot up apparently [[https://www.reddit.com/r/emacs/comments/1
(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 "M-r") #'lsp-rename) (evil-global-set-key 'normal (kbd "M-r") #'lsp-rename)
(evil-global-set-key 'insert (kbd "M-i") #'lsp-signature-activate) (evil-global-set-key 'insert (kbd "M-i") #'lsp-signature-activate)
(evil-global-set-key 'normal (kbd "gD") #'xref-find-definitions-other-window) (evil-global-set-key 'normal (kbd "gD") #'xref-find-definitions-other-window))
(evil-global-set-key 'normal (kbd "SPC la") #'lsp-execute-code-action)
(evil-global-set-key 'normal (kbd "SPC lt") #'lsp-find-type-definition)
(evil-global-set-key 'normal (kbd "SPC lr") #'lsp-find-references)
(evil-global-set-key 'normal (kbd "SPC ld") #'lsp-find-definition)
(evil-global-set-key 'normal (kbd "SPC ls") #'consult-lsp-symbols)
(evil-global-set-key 'normal (kbd "SPC lD") #'consult-lsp-diagnostics)
(evil-global-set-key 'normal (kbd "SPC lf") #'consult-lsp-file-symbols))
#+end_src #+end_src
@ -2075,22 +2050,23 @@ start it, so go through all existing buffers that match the mode and belong to t
(insert-file-contents (expand-file-name "gptel-key" user-emacs-directory)) (insert-file-contents (expand-file-name "gptel-key" user-emacs-directory))
(buffer-string))) (buffer-string)))
(setq gptel-model 'claude-sonnet-4-6)
(setq gptel-backend (gptel-get-backend "Claude"))
(setq gptel-prompt-prefix-alist '((markdown-mode . "### ") (setq gptel-prompt-prefix-alist '((markdown-mode . "### ")
(org-mode . "* ") (org-mode . "* ")
(text-mode . "### "))) (text-mode . "### ")))
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC a a") #'gptel) (define-prefix-command 'joe/gptel-map)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC a RET") #'gptel-ask) (global-set-key (kbd "C-c a") 'joe/gptel-map)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC a M") #'gptel-mode)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC a c") #'gptel-add) ;; Will delete context at point
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC a A") #'gptel-abort)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC a <backspace>") #'joe/gptel-context-remove-all)
(evil-define-key 'visual joe/evil-space-mode-map (kbd "SPC a r") #'gptel-rewrite) (define-key joe/gptel-map (kbd "a") #'gptel)
(evil-define-key 'visual joe/evil-space-mode-map (kbd "SPC a RET") #'gptel-ask) (define-key joe/gptel-map (kbd "RET") #'gptel-ask)
(evil-define-key 'visual joe/evil-space-mode-map (kbd "SPC a c") #'gptel-add) (define-key joe/gptel-map (kbd "m") #'gptel-mode)
(setq gptel-model 'claude-sonnet-4-6) (define-key joe/gptel-map (kbd "c") #'gptel-add)
(setq gptel-backend (gptel-get-backend "Claude")) (define-key joe/gptel-map (kbd "q") #'gptel-abort)
(define-key joe/gptel-map (kbd "<backspace>") #'joe/gptel-context-remove-all)
(define-key joe/gptel-map (kbd "r") #'gptel-rewrite)
#+end_src #+end_src
gptel-context-remove-all without confirmation gptel-context-remove-all without confirmation
@ -2484,7 +2460,6 @@ Org mode buffers have associated files.
(700 900 1200 1700 1900 2030 2300) (700 900 1200 1700 1900 2030 2300)
" ═════ " " ═════ "
" ════════════════════ ")) " ════════════════════ "))
(define-key global-map (kbd "C-c a") #'org-agenda)
(setq org-agenda-custom-commands (setq org-agenda-custom-commands
'(("n" "Agenda and all TODOs" '(("n" "Agenda and all TODOs"
@ -2626,7 +2601,7 @@ with the cursor you hit TAB and you complete the following;
(setq org-download-image-dir "./Images/") (setq org-download-image-dir "./Images/")
(setq org-download-heading-lvl nil) (setq org-download-heading-lvl nil)
#+end_src #+end_src
*** org-transclusion *** COMMENT org-transclusion
#+begin_src emacs-lisp #+begin_src emacs-lisp
(define-key global-map (kbd "C-c t t") #'org-transclusion-mode) (define-key global-map (kbd "C-c t t") #'org-transclusion-mode)
(define-key global-map (kbd "C-c t a") #'org-transclusion-add) (define-key global-map (kbd "C-c t a") #'org-transclusion-add)
@ -2649,14 +2624,25 @@ with the cursor you hit TAB and you complete the following;
#+end_src #+end_src
** Calendar ** Calendar
#+begin_src emacs-lisp #+begin_src emacs-lisp
(defun joe/fit-text-scale-to-window ()
"Scale text so buffer content fills the window width."
(let* ((window (get-buffer-window (current-buffer)))
(win-width (window-body-width window t)) ; pixels
(char-width (frame-char-width))
(buffer-cols 90) ; nano-calendar is 90 chars wide
(desired-scale (log (/ (float win-width)
(* char-width buffer-cols))
1.2)))
(text-scale-set (floor desired-scale))))
(defun joe/nano-calendar () (defun joe/nano-calendar ()
(interactive) (interactive)
(nano-calendar) (nano-calendar)
(with-current-buffer "*nano-calendar*" (with-current-buffer "*nano-calendar*"
(text-scale-set 2) (joe/fit-text-scale-to-window)
(evil-emacs-state))) (evil-emacs-state)))
(evil-global-set-key 'normal (kbd "SPC cc") #'joe/nano-calendar) (global-set-key (kbd "C-c M-c") #'joe/nano-calendar)
#+end_src #+end_src
** Magit ** Magit
@ -2668,11 +2654,11 @@ The best git porcelain/client I've ever used. Also kill stray magit buffers left
(defun joe/magit-kill-buffers (param) (defun joe/magit-kill-buffers (param)
"Restore window configuration and kill all Magit buffers." "Restore window configuration and kill all Magit buffers."
(let ((buffers (magit-mode-get-buffers))) (let ((buffers (magit-mode-get-buffers)))
(magit-restore-window-configuration) ;; (magit-restore-window-configuration)
(mapc #'kill-buffer buffers))) (mapc #'kill-buffer buffers)))
(when (boundp 'evil-mode) (when (boundp 'evil-mode)
(add-hook 'with-editor-mode-hook 'evil-insert-state)) (add-hook 'with-editor-mode-hook 'evil-emacs-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)
@ -2685,11 +2671,14 @@ The best git porcelain/client I've ever used. Also kill stray magit buffers left
(display-buffer buffer '(display-buffer-same-window))))) (display-buffer buffer '(display-buffer-same-window)))))
(magit-status))) (magit-status)))
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC g h") #'joe/magit-status-here) (define-prefix-command 'joe/magit-map)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC g f") #'magit-find-file) (global-set-key (kbd "C-x g") 'joe/magit-map)
;; (define-key magit-mode-map "h" 'backward-char)
;; (define-key magit-mode-map "l" 'backward-char)
(define-key joe/magit-map (kbd "g") #'magit-status)
(define-key joe/magit-map (kbd "h") #'joe/magit-status-here)
(define-key joe/magit-map (kbd "f") #'magit-find-file)
(evil-set-initial-state 'magit-status-mode 'emacs)
#+end_src #+end_src
TODO: We need to create a var for a project based base branch TODO: We need to create a var for a project based base branch
@ -2711,10 +2700,8 @@ TODO: We need to create a var for a project based base branch
nil nil "origin/dev"))) nil nil "origin/dev")))
(magit-log-other (list (concat base "..HEAD"))))) (magit-log-other (list (concat base "..HEAD")))))
(with-eval-after-load 'magit (define-key joe/magit-map (kbd "b") #'joe/magit-diff-branch-changes)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC g b") #'joe/magit-diff-branch-changes) (define-key joe/magit-map (kbd "l") #'joe/magit-log-branch-commits)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC g l") #'joe/magit-log-branch-commits))
#+end_src #+end_src
** Restclient ** Restclient