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)
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-redo)
@ -1460,11 +1441,12 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
;; (require 'consult-lsp)
(global-set-key (kbd "C-. C-l") 'consult-line)
(global-set-key (kbd "C-. C-i") 'consult-imenu)
(global-set-key (kbd "C-. C-t") 'joe/consult-theme)
(global-set-key (kbd "C-. C-r") 'consult-recent-file)
(global-set-key (kbd "C-. C-y") 'consult-yank-from-kill-ring)
(global-set-key (kbd "M-s l") #'consult-line)
(global-set-key (kbd "M-s g") #'consult-ripgrep)
(global-set-key (kbd "M-s f") #'consult-find)
(global-set-key (kbd "M-s 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
*** Orderless
@ -1580,6 +1562,8 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
(require 'mu4e)
(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'
;; and doing C-c C-m C-a (M-x `gnus-dired-attach').
(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)
(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 "M-s") '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 "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
@ -1721,8 +1704,7 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
(with-current-buffer vterm-buf
(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")
(add-hook 'shell-mode (lambda () (setq-local global-hl-line-mode nil)))
(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-r") #'lsp-rename)
(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 "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))
(evil-global-set-key 'normal (kbd "gD") #'xref-find-definitions-other-window))
#+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))
(buffer-string)))
(setq gptel-model 'claude-sonnet-4-6)
(setq gptel-backend (gptel-get-backend "Claude"))
(setq gptel-prompt-prefix-alist '((markdown-mode . "### ")
(org-mode . "* ")
(text-mode . "### ")))
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC a a") #'gptel)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC a RET") #'gptel-ask)
(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)
(define-prefix-command 'joe/gptel-map)
(global-set-key (kbd "C-c a") 'joe/gptel-map)
(evil-define-key 'visual joe/evil-space-mode-map (kbd "SPC a r") #'gptel-rewrite)
(evil-define-key 'visual joe/evil-space-mode-map (kbd "SPC a RET") #'gptel-ask)
(evil-define-key 'visual joe/evil-space-mode-map (kbd "SPC a c") #'gptel-add)
(setq gptel-model 'claude-sonnet-4-6)
(setq gptel-backend (gptel-get-backend "Claude"))
(define-key joe/gptel-map (kbd "a") #'gptel)
(define-key joe/gptel-map (kbd "RET") #'gptel-ask)
(define-key joe/gptel-map (kbd "m") #'gptel-mode)
(define-key joe/gptel-map (kbd "c") #'gptel-add)
(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
gptel-context-remove-all without confirmation
@ -2484,7 +2460,6 @@ Org mode buffers have associated files.
(700 900 1200 1700 1900 2030 2300)
" ═════ "
" ════════════════════ "))
(define-key global-map (kbd "C-c a") #'org-agenda)
(setq org-agenda-custom-commands
'(("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-heading-lvl nil)
#+end_src
*** org-transclusion
*** COMMENT org-transclusion
#+begin_src emacs-lisp
(define-key global-map (kbd "C-c t t") #'org-transclusion-mode)
(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
** Calendar
#+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 ()
(interactive)
(nano-calendar)
(with-current-buffer "*nano-calendar*"
(text-scale-set 2)
(joe/fit-text-scale-to-window)
(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
** 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)
"Restore window configuration and kill all Magit buffers."
(let ((buffers (magit-mode-get-buffers)))
(magit-restore-window-configuration)
;; (magit-restore-window-configuration)
(mapc #'kill-buffer buffers)))
(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-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)))))
(magit-status)))
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC g h") #'joe/magit-status-here)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC g f") #'magit-find-file)
;; (define-key magit-mode-map "h" 'backward-char)
;; (define-key magit-mode-map "l" 'backward-char)
(define-prefix-command 'joe/magit-map)
(global-set-key (kbd "C-x g") 'joe/magit-map)
(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
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")))
(magit-log-other (list (concat base "..HEAD")))))
(with-eval-after-load 'magit
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC g b") #'joe/magit-diff-branch-changes)
(evil-define-key 'normal joe/evil-space-mode-map (kbd "SPC g l") #'joe/magit-log-branch-commits))
(define-key joe/magit-map (kbd "b") #'joe/magit-diff-branch-changes)
(define-key joe/magit-map (kbd "l") #'joe/magit-log-branch-commits)
#+end_src
** Restclient