From 0139328623fef22d8a3865a3e25ee2e155d5fb42 Mon Sep 17 00:00:00 2001 From: User Date: Mon, 6 Apr 2026 23:49:09 +0800 Subject: [PATCH] Config: optimize dired and theme, add workspace config --- init.el | 2 +- lisp/init-dired.el | 46 +++++++++++++++++++----------------- lisp/init-jinx.el | 2 +- lisp/init-kbd.el | 22 +++++++++++++++-- lisp/init-org.el | 2 +- lisp/init-package.el | 4 ++-- lisp/init-ui.el | 11 +++++++++ lisp/init-workspace.el | 26 ++++++++++++++++++++ lisp/my-base16-dark-theme.el | 4 ++++ 9 files changed, 90 insertions(+), 29 deletions(-) create mode 100644 lisp/init-workspace.el diff --git a/init.el b/init.el index 3a57607..c276cf3 100644 --- a/init.el +++ b/init.el @@ -21,9 +21,9 @@ (require 'init-completion) (require 'init-window) (require 'init-dired) +(require 'init-workspace) (require 'init-kbd) (require 'init-ui) -(require 'init-dashboard) (require 'init-segmentation) ;;; init.el ends here diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 32f53d0..4d66d80 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -4,6 +4,8 @@ ;;; Code: +(setq dired-dwim-target t) + (with-eval-after-load 'dirvish (define-key dirvish-mode-map (kbd "") (lambda () (interactive) (forward-line 1) (dired-move-to-filename))) @@ -26,8 +28,13 @@ :init (dirvish-override-dired-mode) :config - (setq dirvish-hide-details nil) + (if *is-mac* + (setq dirvish-hide-details t) + (setq dirvish-hide-details '(dirvish-side))) (setq dirvish-use-mode-line 'global) + (unless *is-windows* + (setq dirvish-attributes '(file-time file-size))) + (setq dirvish-default-layout '(1 0.15 0.45)) :custom (dirvish-quick-access-entries (when *is-windows* @@ -35,32 +42,27 @@ ("e" "~/.emacs.d/") ("p" "c:/Users/gaozh/Pictures/Screenshots/" "Pictures") ("d" "f:/下载25-2-10/" "Download") - ("v" "f:/luping26-1-11/" "Videos"))))) + ("v" "f:/luping26-1-11/" "Videos")))) + (dirvish-quick-access-entries + (when *is-mac* + '(("h" "~/" "Home") + ("e" "~/.emacs.d/") + ("p" "~/Pictures/" "Pictures") + ("d" "~/Downloads/" "Download") + ("v" "~/Movies/" "Videos"))))) + +(use-package trashed + :commands (trashed) + :config + (setq trashed-action-confirmer 'y-or-n-p) + (setq trashed-use-header-line t) + (setq trashed-sort-key '("Date deleted" . t)) + (setq trashed-date-format "%Y-%m-%d %H:%M:%S")) (setq dired-listing-switches "-l --almost-all --human-readable --group-directories-first --no-group") (put 'dired-find-alternate-file 'disabled nil) -(with-eval-after-load 'dirvish - (global-set-key (kbd "C-c d a") 'dirvish-quick-access) - (global-set-key (kbd "C-c d s") 'dirvish-side) - (global-set-key (kbd "C-c d h") 'dirvish-history-menu) - (global-set-key (kbd "C-x d") 'dired-jump) - (global-set-key (kbd "C-x C-j") 'dired) - (define-key dired-mode-map (kbd "h") 'dirvish-history-menu) - (define-key dired-mode-map (kbd "M-,") 'scroll-other-window-down) - (define-key dired-mode-map (kbd "M-.") 'scroll-other-window)) - -(with-eval-after-load 'dirvish - (global-set-key (kbd "C-c d a") 'dirvish-quick-access) - (global-set-key (kbd "C-c d s") 'dirvish-side) - (global-set-key (kbd "C-c d h") 'dirvish-history-menu) - (global-set-key (kbd "C-x d") 'dired-jump) - (global-set-key (kbd "C-x C-j") 'dired) - (define-key dired-mode-map (kbd "h") 'dirvish-history-menu) - (define-key dired-mode-map (kbd "M-,") 'scroll-other-window-down) - (define-key dired-mode-map (kbd "M-.") 'scroll-other-window)) - ;; Fix video-mtn preview issue on Windows ;; The problem: mtn generates thumbnails with filename like "video.mp4.jpg", ;; but dirvish expects MD5-based filename like "a1b2c3d4.jpg" diff --git a/lisp/init-jinx.el b/lisp/init-jinx.el index e6c5e5e..28d4ec4 100644 --- a/lisp/init-jinx.el +++ b/lisp/init-jinx.el @@ -26,7 +26,7 @@ (unless jinx-mode (user-error "Jinx mode not enabled in current buffer")) (let* ((curr-line (line-number-at-pos (point))) - (overlays (jinx--force-overlays (point-min) (point-max))) + (overlays (jinx--force-overlays (point-min) (point-max) :check t)) default-cand candidates) (unless overlays (user-error "No misspellings")) diff --git a/lisp/init-kbd.el b/lisp/init-kbd.el index f583cc5..444efce 100644 --- a/lisp/init-kbd.el +++ b/lisp/init-kbd.el @@ -82,7 +82,7 @@ Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise tog (global-set-key (kbd "C-c f j") 'consult-jinx)) ;; pair编辑 -(global-set-key (kbd "C-c p d") 'delete-pair) +;; (global-set-key (kbd "C-c p d") 'delete-pair) ;; 快速复制当前行 (defun duplicate-and-move-to-next-line() @@ -147,6 +147,9 @@ Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise tog (global-set-key (kbd "C-c u c") 'my-color-picker) (global-set-key (kbd "C-c u r") 'rainbow-mode) +;; indent-bars +(global-set-key (kbd "C-c u b") 'indent-bars-mode) + ;; 打开ibuffer (global-set-key (kbd "C-x C-b") 'ibuffer-other-window) (setq ibuffer-default-sorting-mode 'filename) @@ -225,7 +228,7 @@ Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise tog ;; avy (global-set-key (kbd "C-M-;") 'avy-goto-char) -(global-set-key (kbd "C-M-'") 'ace-pinyin-jump-char) +(global-set-key (kbd "C-M-'") 'avy-goto-word-1) (global-set-key (kbd "M-g g") 'avy-goto-line) ;; hungry-delete @@ -366,6 +369,21 @@ Disable jinx-mode if it's enable and global-jinx-mode is disable , otherwise tog ;; dashboard (global-set-key (kbd "C-c D") 'dashboard-open) +;; dired +(with-eval-after-load 'dirvish + (global-set-key (kbd "C-c d a") 'dirvish-quick-access) + (global-set-key (kbd "C-c d s") 'dirvish-side) + (global-set-key (kbd "C-c d h") 'dirvish-history-menu) + (global-set-key (kbd "C-x d") 'dired-jump) + (global-set-key (kbd "C-x C-j") 'dired) + (define-key dired-mode-map (kbd "h") 'dirvish-history-menu) + (define-key dired-mode-map (kbd "M-,") 'scroll-other-window-down) + (define-key dired-mode-map (kbd "M-.") 'scroll-other-window)) + +;; perspective +(global-set-key (kbd "C-M-") 'persp-prev) +(global-set-key (kbd "C-M-") 'persp-next) + (provide 'init-kbd) ;;; init-kbd.el ends here diff --git a/lisp/init-org.el b/lisp/init-org.el index db4116a..642aaff 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -33,7 +33,7 @@ (use-package org-journal :config (setq org-journal-file-format "%Y-%m-%d.org" - org-journal-file-header "#+title: Daily Journal\n#+category: journal\n#+STARTUP: content\n\n" + org-journal-file-header "#+category: journal\n#+STARTUP: content\n\n" org-journal-time-prefix "\n*** TODO " org-journal-time-format "%m-%d \n:PROPERTIES:\n:Created: <%Y-%m-%d %a %H:%M:%S>\n:END:\n" org-journal-hide-entries-p t diff --git a/lisp/init-package.el b/lisp/init-package.el index 08eed91..9137a2b 100644 --- a/lisp/init-package.el +++ b/lisp/init-package.el @@ -8,10 +8,10 @@ ;; 安装gcmh用于管理内存回收 (use-package gcmh - :demand t + ;; :demand t :init (setq gcmh-idle-delay 'auto - gcmh-auto-idle-delay-factor 10 + gcmh-auto-idle-delay-factor 10 gcmh-high-cons-threshold #x4000000) :config (gcmh-mode 1)) diff --git a/lisp/init-ui.el b/lisp/init-ui.el index 949b0ad..1974687 100644 --- a/lisp/init-ui.el +++ b/lisp/init-ui.el @@ -80,6 +80,17 @@ "di=34:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46") (setenv "GIT_CONFIG_GLOBAL" (expand-file-name "~/.emacs.d/.gitconfig-eshell")))) +(use-package indent-bars + :custom + (indent-bars-color '(font-lock-comment-face :face-bg nil :blend 0.4)) + (indent-bars-highlight-current-depth '(:face default :blend 0.4)) + (indent-bars-pattern ".") + (indent-bars-width-frac 0.1) + (indent-bars-pad-frac 0.1) + (indent-bars-color-by-depth nil) + (indent-bars-no-descend-string t) + (indent-bars-prefer-character t)) + ;; 高亮当前行 (global-hl-line-mode t) diff --git a/lisp/init-workspace.el b/lisp/init-workspace.el new file mode 100644 index 0000000..3fe1648 --- /dev/null +++ b/lisp/init-workspace.el @@ -0,0 +1,26 @@ +;;; init-workspace.el --- workspace -*- lexical-binding: t -*- + +;;; Commentary: + +;;; Code: + +(use-package perspective + :bind + ("C-x M-b" . persp-list-buffers) ; or use a nicer switcher, see below + :custom + (persp-mode-prefix-key (kbd "C-c p")) ; pick your own prefix key here + :init + (persp-mode) + :config + (setq persp-switch-to-buffer-behavior 'switch) + (with-eval-after-load 'consult + (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)))) + ) + +(provide 'init-workspace) + +;;; init-workspace.el ends here diff --git a/lisp/my-base16-dark-theme.el b/lisp/my-base16-dark-theme.el index 2c92a5d..ba070fa 100644 --- a/lisp/my-base16-dark-theme.el +++ b/lisp/my-base16-dark-theme.el @@ -31,6 +31,10 @@ `(dashboard-footer-face ((,class (:foreground ,blue)))) `(dashboard-text-banner ((,class (:foreground ,green)))) `(dashboard-heading ((,class (:foreground ,green :weight bold)))) + `(dirvish-file-time ((,class (:foreground ,base01)))) + `(dired-header ((,class (:foreground ,green)))) + `(mode-line ((,class (:foreground ,base0 :background ,base02)))) + `(mode-line-inactive ((,class (:foreground ,base01 :background ,base03)))) `(vertico-current ((,class (:background ,base02 :extend t :underline nil))))))) (provide-theme 'my-base16-dark)