feat(config): Improve dired, keybindings, terminal UI and add packages
- Add dired buffer killing and custom dirvish layout toggle - Replace ido with fido-mode in terminal config - Add custom terminal color theme with 24-bit color support - Add new packages: tokei, helpful, gptel-magit - Refactor project keybindings under C-x p prefix - Add mwim navigation bindings globally - Improve ibuffer filter groups and consult buffer filters - Add diff-mode keybindings and refine magit diff display
This commit is contained in:
@@ -32,11 +32,7 @@
|
||||
(use-package drag-stuff)
|
||||
|
||||
;; mwim,更聪明的beginning/end of line
|
||||
(use-package mwim
|
||||
:bind (([remap move-beginning-of-line] . mwim-beginning)
|
||||
([remap move-end-of-line] . mwim-end)
|
||||
([remap org-beginning-of-line] . mwim-beginning)
|
||||
([remap org-end-of-line] . mwim-end)))
|
||||
(use-package mwim)
|
||||
|
||||
;; which-key,快捷键提示
|
||||
(use-package which-key
|
||||
@@ -66,22 +62,31 @@
|
||||
;; consult,搜索与导航
|
||||
(use-package consult
|
||||
:config
|
||||
;; everything
|
||||
(when *is-windows*
|
||||
(setq consult-locate-args (encode-coding-string "es.exe -i -p -r" 'gbk))
|
||||
(setq consult-ripgrep-args (encode-coding-string
|
||||
"rg --null --line-buffered --color=never --max-columns=1000 --path-separator / --smart-case --no-heading --line-number"
|
||||
'gbk))
|
||||
;; set locate arguments
|
||||
(cond
|
||||
(*is-windows*
|
||||
(setq consult-locate-args (encode-coding-string "es.exe -i -p -r" 'gbk)
|
||||
consult-ripgrep-args (encode-coding-string
|
||||
"rg --null --line-buffered --color=never --max-columns=1000 --path-separator / --smart-case --no-heading --line-number"
|
||||
'gbk))
|
||||
(add-to-list 'process-coding-system-alist '("es" gbk . gbk)))
|
||||
|
||||
;; mdfind
|
||||
(when *is-mac*
|
||||
(*is-mac*
|
||||
(setq consult-locate-args "mdfind -name"))
|
||||
|
||||
;; plocate
|
||||
(when *is-linux*
|
||||
(*is-linux*
|
||||
(setq consult-locate-args "plocate --basename --ignore-case")))
|
||||
|
||||
;; set some buffer filter
|
||||
(setq consult-buffer-filter
|
||||
(cl-union consult-buffer-filter
|
||||
'("^\\*dirvish"
|
||||
"^PREVIEW"
|
||||
"^\\*helpful"
|
||||
"^\\*Help"
|
||||
"Diff"
|
||||
"straight"
|
||||
"\\*Messages\\*")
|
||||
:test 'equal)))
|
||||
|
||||
;; embark,快捷指令
|
||||
(use-package embark
|
||||
:config
|
||||
@@ -176,7 +181,10 @@ targets."
|
||||
(save-place-mode))
|
||||
|
||||
;; 撤回增强和跨会话历史
|
||||
(use-package undo-fu)
|
||||
(use-package undo-fu
|
||||
:config
|
||||
(setq undo-in-region t
|
||||
undo-fu-allow-undo-in-region t))
|
||||
|
||||
(use-package undo-fu-session
|
||||
:init
|
||||
@@ -198,13 +206,14 @@ targets."
|
||||
|
||||
;; project
|
||||
(use-package project
|
||||
:bind
|
||||
([remap project-vc-dir] . magit-project-status)
|
||||
:config
|
||||
(setq project-switch-commands (assq-delete-all 'project-vc-dir project-switch-commands))
|
||||
(add-to-list 'project-switch-commands '(magit-project-status "Magit" ?v))
|
||||
(add-to-list 'project-switch-commands '(eat-project "Eat" ?E))
|
||||
(add-to-list 'project-switch-commands '(consult-ripgrep-project "Ripgrep" ?r)))
|
||||
(setq project-switch-commands
|
||||
(seq-uniq (append project-switch-commands
|
||||
'((magit-project-status "Magit" ?v)
|
||||
(eat-project "Eat" ?E)
|
||||
(project-query-replace-regexp "Query Replace" ?R)
|
||||
(consult-ripgrep-project "Ripgrep" ?r))))))
|
||||
|
||||
;; ibuffer
|
||||
(use-package ibuffer
|
||||
@@ -227,7 +236,8 @@ targets."
|
||||
("Config" (or
|
||||
(mode . conf-mode)
|
||||
(mode . conf-desktop-mode)
|
||||
(mode . conf-toml-mode)))
|
||||
(mode . conf-toml-mode)
|
||||
(mode . conf-xdefaults-mode)))
|
||||
("Elisp" (mode . emacs-lisp-mode))
|
||||
("Scheme" (or
|
||||
(mode . scheme-mode)))
|
||||
@@ -254,14 +264,9 @@ targets."
|
||||
(mode . org-mode)
|
||||
(mode . markdown-mode)
|
||||
(name . "^\\*\\[D\\] FILE backlinks for")))
|
||||
("Emacs" (or
|
||||
(name . "^\\*Help\\*$")
|
||||
(name . "^\\*Custom.*")
|
||||
(name . "^\\*EMMS Playlist\\*")
|
||||
(name . "^\\*Messages\\*$")
|
||||
(name . "*Chinese-word-segmentation*")
|
||||
(name . "^*Buffer List*")
|
||||
(name . "\\*discomfort\\*")))
|
||||
("Help" (or
|
||||
(mode . help-mode)
|
||||
(mode . helpful-mode)))
|
||||
("Info" (or
|
||||
(name . "^\\*info")))
|
||||
("Magit" (or
|
||||
@@ -275,7 +280,25 @@ targets."
|
||||
("Directories" (or
|
||||
(mode . dired-mode)
|
||||
(name . "^*dirvish")))
|
||||
("Diff" (name . "^*Diff")))))
|
||||
("Grep" (or
|
||||
(mode . grep-mode)
|
||||
(mode . rg-mode)
|
||||
(mode . xref--xref-buffer-mode)
|
||||
(mode . xref-edit-mode)))
|
||||
("Diff" (name . "^*Diff"))
|
||||
("Emacs" (or
|
||||
(name . "^\\*Help\\*$")
|
||||
(name . "^\\*Custom.*")
|
||||
(name . "^\\*EMMS Playlist\\*")
|
||||
(name . "^\\*Messages\\*$")
|
||||
(name . "*Chinese-word-segmentation*")
|
||||
(name . "^*Buffer List*")
|
||||
(name . "\\*discomfort\\*")
|
||||
(mode . calendar-mode)
|
||||
(mode . calc-mode)
|
||||
(mode . calc-trail-mode)
|
||||
(mode . grep-mode)
|
||||
(mode . occur-mode))))))
|
||||
|
||||
(add-hook 'ibuffer-hook
|
||||
(lambda () (ibuffer-switch-to-saved-filter-groups "Main")
|
||||
@@ -372,7 +395,7 @@ targets."
|
||||
(unless *is-android* (which-key-enable-god-mode-support))
|
||||
(setq god-mode-enable-function-key-translation nil
|
||||
god-exempt-major-modes
|
||||
(delete-dups (append '(diff-mode exwm-mode) god-exempt-major-modes))
|
||||
(cl-union '(diff-mode exwm-mode) god-exempt-major-modes :test 'equal)
|
||||
god-mode-lighter-string "THANK-GOD-MODE")
|
||||
|
||||
(defun my-sync-god-mode-lighter-face (&rest _)
|
||||
@@ -408,14 +431,17 @@ targets."
|
||||
(consult-customize consult-source-buffer :hidden t :default nil)
|
||||
(add-to-list 'consult-buffer-sources persp-consult-source))
|
||||
(setq switch-to-prev-buffer-skip
|
||||
(lambda (win buff bury-or-kill)
|
||||
(not (persp-is-current-buffer buff))))
|
||||
(lambda (win buff bury-or-kill)
|
||||
(or (not (persp-is-current-buffer buff))
|
||||
(cl-some (lambda (re) (string-match-p re (buffer-name buff)))
|
||||
consult-buffer-filter))))
|
||||
(setq persp-initial-frame-name "main"))
|
||||
|
||||
;; magit
|
||||
(use-package magit
|
||||
:config
|
||||
(setq magit-bind-magit-project-status nil))
|
||||
(setq magit-bind-magit-project-status nil
|
||||
magit-diff-refine-hunk 'all))
|
||||
|
||||
;; git-timemachine
|
||||
(use-package git-timemachine)
|
||||
@@ -436,6 +462,25 @@ targets."
|
||||
emms-info-functions '(emms-info-native))
|
||||
(emms-history-load))
|
||||
|
||||
;; tokei
|
||||
(use-package tokei)
|
||||
|
||||
;; helpful
|
||||
(use-package helpful
|
||||
:bind
|
||||
(([remap describe-function] . helpful-callable)
|
||||
([remap describe-command] . helpful-command)
|
||||
([remap describe-variable] . helpful-variable)
|
||||
([remap describe-key] . helpful-key)
|
||||
([remap describe-symbol] . helpful-symbol)
|
||||
:map emacs-lisp-mode-map
|
||||
("C-c C-d C-d" . helpful-at-point)
|
||||
:map lisp-interaction-mode-map
|
||||
("C-c C-d C-d" . helpful-at-point)
|
||||
:map helpful-mode-map
|
||||
("C-x K" . helpful-kill-buffers)
|
||||
("r" . remove-hook-at-point)))
|
||||
|
||||
(provide 'init-package)
|
||||
|
||||
;;; init-package.el ends here
|
||||
|
||||
Reference in New Issue
Block a user