chore(config): Update Emacs configuration with ibuffer and perspective improvements
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,7 +2,6 @@
|
||||
|
||||
!init.el
|
||||
!early-init.el
|
||||
!custom.el
|
||||
!lisp/
|
||||
!lisp/**/
|
||||
!lisp/**/*.el
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
(use-package delight
|
||||
:init
|
||||
(delight '((eldoc-mode nil eldoc)
|
||||
(org-indent-mode nil org)
|
||||
(org-indent-mode nil org-indent)
|
||||
(desktop-environment-mode nil desktop-environment)
|
||||
(hs-minor-mode nil hideshow))))
|
||||
|
||||
|
||||
@@ -132,9 +132,7 @@
|
||||
|
||||
(add-hook 'exwm-init-hook
|
||||
(lambda ()
|
||||
(if (zerop (shell-command "pgrep -x fcitx5"))
|
||||
(restart-fcitx5)
|
||||
(start-process-shell-command "fcitx5" nil "fcitx5 -d"))
|
||||
(restart-fcitx5)
|
||||
(unless (zerop (shell-command "pgrep -x mihomo"))
|
||||
(start-process-shell-command "mihomo" nil "mihomo -d ~/.config/mihomo/"))
|
||||
(start-process-shell-command "xrandr-refresh" nil "xrandr --output DP-4 --mode 2560x1440 --rate 165.00")
|
||||
|
||||
@@ -132,6 +132,36 @@ Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise tog
|
||||
(magit-section-up)
|
||||
(magit-section-toggle (magit-section-at)))
|
||||
|
||||
(defun my-persp-remove-marked-ibuffers ()
|
||||
"Remove marked buffers from perspective."
|
||||
(interactive)
|
||||
(let ((buffers (ibuffer-get-marked-buffers)))
|
||||
(dolist (buf buffers)
|
||||
(persp-remove-buffer buf))))
|
||||
|
||||
(defun my-persp-add-marked-ibuffers (persp-name)
|
||||
"Add marked buffers to perspective."
|
||||
(interactive
|
||||
(list (completing-read "Perspective: "
|
||||
(persp-names)
|
||||
nil nil)))
|
||||
(let ((buffers (ibuffer-get-marked-buffers)))
|
||||
(persp-switch persp-name)
|
||||
(dolist (buf buffers)
|
||||
(persp-add-buffer buf))))
|
||||
|
||||
(defun my-persp-set-marked-ibuffers (persp-name)
|
||||
"Set marked buffers to perspective."
|
||||
(interactive
|
||||
(list (completing-read "Perspective: "
|
||||
(persp-names)
|
||||
nil nil)))
|
||||
(let ((buffers (ibuffer-get-marked-buffers)))
|
||||
(persp-switch persp-name)
|
||||
(dolist (buf buffers)
|
||||
(persp-set-buffer buf))))
|
||||
|
||||
|
||||
(provide 'init-kbd-func)
|
||||
|
||||
;;; init-kbd-func.el ends here
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
|
||||
;; scratch buffer
|
||||
(if *is-mac*
|
||||
(general-def "C-c <f12>" 'persp-switch-to-scratch-buffer)
|
||||
(general-def "C-c <delete>" 'persp-switch-to-scratch-buffer))
|
||||
(general-def "C-c <f12>" 'scratch-buffer)
|
||||
(general-def "C-c <delete>" 'scratch-buffer))
|
||||
|
||||
;; dired
|
||||
(general-def (dired-mode-map dirvish-mode-map)
|
||||
@@ -177,6 +177,12 @@
|
||||
(general-def calendar-mode-map
|
||||
"RET" 'denote-journal-calendar-find-file)
|
||||
|
||||
;; ibuffer
|
||||
(general-def ibuffer-mode-map
|
||||
"h k" 'my-persp-remove-marked-ibuffers
|
||||
"h A" 'my-persp-set-marked-ibuffers
|
||||
"h a" 'my-persp-add-marked-ibuffers)
|
||||
|
||||
;; multiple-cursor
|
||||
(general-def mc/keymap
|
||||
"<return>" 'newline)
|
||||
@@ -191,7 +197,8 @@
|
||||
"C-c p c" nil
|
||||
"C-M-<left>" 'persp-prev
|
||||
"C-M-<right>" 'persp-next
|
||||
"C-c p d" 'persp-kill)
|
||||
"C-c p d" 'persp-kill
|
||||
"C-x M-b" 'persp-ibuffer)
|
||||
|
||||
;; global map with C-c prefix
|
||||
(general-def
|
||||
|
||||
@@ -195,12 +195,58 @@ targets."
|
||||
:config
|
||||
(setq projectile-enable-caching t))
|
||||
|
||||
(use-package ibuffer-projectile
|
||||
:init (add-hook 'ibuffer-hook
|
||||
(lambda ()
|
||||
(ibuffer-projectile-set-filter-groups)
|
||||
(unless (eq ibuffer-sorting-mode 'alphabetic)
|
||||
(ibuffer-do-sort-by-alphabetic)))))
|
||||
;; ibuffer
|
||||
(use-package ibuffer
|
||||
:config
|
||||
(setq ibuffer-saved-filter-groups
|
||||
'(("Main"
|
||||
("App" (mode . exwm-mode))
|
||||
("Scratch" (or
|
||||
(name . "^*scratch")))
|
||||
("Shell" (or
|
||||
(mode . eshell-mode)
|
||||
(mode . eat-mode)
|
||||
(mode . vterm-mode)))
|
||||
("Scripts" (or
|
||||
(mode . shell-script-mode)
|
||||
(mode . shell-mode)
|
||||
(mode . sh-mode)
|
||||
(mode . lua-mode)
|
||||
(mode . bat-mode)))
|
||||
("Elisp" (mode . emacs-lisp-mode))
|
||||
("Scheme" (or
|
||||
(mode . scheme-mode)
|
||||
(name . "^*Geiser")))
|
||||
("Text" (or
|
||||
(mode . org-mode)
|
||||
(mode . markdown-mode)))
|
||||
("Emacs" (or
|
||||
(name . "^\\*Help\\*$")
|
||||
(name . "^\\*Custom.*")
|
||||
(name . "^\\*Org Agenda\\*$")
|
||||
(name . "^\\*info\\*$")
|
||||
(name . "^\\*Backtrace\\*$")
|
||||
(name . "^\\*Messages\\*$")
|
||||
(name . "*Chinese-word-segmentation*")
|
||||
(name . "^*Buffer List*")
|
||||
(name . "*Calendar*")))
|
||||
("Magit" (or
|
||||
(mode . magit-blame-mode)
|
||||
(mode . magit-cherry-mode)
|
||||
(mode . magit-diff-mode)
|
||||
(mode . magit-log-mode)
|
||||
(mode . magit-process-mode)
|
||||
(mode . magit-status-mode)))
|
||||
("Directories" (mode . dired-mode))
|
||||
("Diff" (name . "^*Diff")))))
|
||||
|
||||
(add-hook 'ibuffer-hook
|
||||
(lambda () (ibuffer-switch-to-saved-filter-groups "Main")
|
||||
(unless (eq ibuffer-sorting-mode 'alphabetic)
|
||||
(ibuffer-do-sort-by-alphabetic))))
|
||||
|
||||
(setq ibuffer-show-empty-filter-groups nil)
|
||||
(setq ibuffer-use-other-window t))
|
||||
|
||||
;; avy中文支持
|
||||
(use-package ace-pinyin
|
||||
@@ -296,7 +342,7 @@ targets."
|
||||
(setq switch-to-prev-buffer-skip
|
||||
(lambda (win buff bury-or-kill)
|
||||
(not (persp-is-current-buffer buff))))
|
||||
(setq persp-initial-frame-name "desktop"))
|
||||
(setq persp-initial-frame-name "main"))
|
||||
|
||||
;; magit
|
||||
(use-package magit)
|
||||
|
||||
@@ -105,6 +105,8 @@
|
||||
'ripgrep)
|
||||
(t 'grep)))
|
||||
|
||||
(setq switch-to-buffer-obey-display-actions t)
|
||||
|
||||
(provide 'init-startup)
|
||||
|
||||
;;; init-startup.el ends here
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
;; org-mode美化
|
||||
(use-package olivetti
|
||||
:delight
|
||||
:init
|
||||
(add-hook 'olivetti-mode-hook
|
||||
(lambda ()
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
"\\*Edit Annotation.*\\*"
|
||||
"\\*Flutter\\*"
|
||||
"\\*Ibuffer\\*"
|
||||
"Buffers\\*$"
|
||||
"\\*Geiser Debug\\*"
|
||||
"\\*Kimi-Code\\*"
|
||||
"\\*gptel-agent:.*\\*"
|
||||
@@ -50,6 +51,7 @@
|
||||
process-menu-mode list-environment-mode cargo-process-mode
|
||||
youdao-dictionary-mode osx-dictionary-mode fanyi-mode
|
||||
gptel-mode
|
||||
ibuffer-mode
|
||||
|
||||
"^\\*eshell.*\\*.*$" eshell-mode
|
||||
"^\\*shell.*\\*.*$" shell-mode
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
`(org-block-end-line ((,class (:foreground ,base01 :overline t :slant italic :extend t))))
|
||||
`(org-priority ((,class (:foreground ,green :weight bold))))
|
||||
`(org-checkbox ((,class (:foreground ,base0 :weight bold))))
|
||||
`(denote-journal-calendar ((,class (:foreground ,red :slant italic))))
|
||||
`(denote-journal-calendar ((,class (:foreground ,cyan :slant italic))))
|
||||
`(font-lock-keyword-face ((,class (:foreground ,cyan :weight bold))))
|
||||
`(font-lock-doc-face ((,class (:foreground ,green :slant normal))))
|
||||
`(font-lock-string-face ((,class (:foreground ,green))))
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
`(org-block-end-line ((,class (:foreground ,base01 :overline t :slant italic :extend t))))
|
||||
`(org-priority ((,class (:foreground ,green :weight bold))))
|
||||
`(org-checkbox ((,class (:foreground ,base0 :weight bold))))
|
||||
`(denote-journal-calendar ((,class (:foreground ,red :slant italic))))
|
||||
`(denote-journal-calendar ((,class (:foreground ,cyan :slant italic))))
|
||||
`(font-lock-keyword-face ((,class (:foreground ,cyan :weight bold))))
|
||||
`(font-lock-doc-face ((,class (:foreground ,green :slant normal))))
|
||||
`(font-lock-string-face ((,class (:foreground ,green))))
|
||||
|
||||
Reference in New Issue
Block a user