This commit is contained in:
Zelong Kuang
2025-12-20 15:13:13 +11:00
parent c8506c77af
commit 51c9e0a8e7
5 changed files with 137 additions and 12 deletions

1
.gitignore vendored
View File

@@ -32,6 +32,7 @@
.tern-port
.yas-compiled-snippets.el
flycheck_*.el
tabsession.el
# generated by elisp packages at root
/.local/

View File

@@ -8,7 +8,10 @@
(require 'init-ui)
(require 'init-bindings)
(require 'init-workspace)
(require 'init-dired)
(require 'init-treemacs)
;; (require 'init-dashboard)
(require 'init-llm)

View File

@@ -15,23 +15,39 @@
(setq custom-file (expand-file-name "~/.emacs.d/custom.el"))
(add-hook 'elpaca-after-init-hook (lambda () (load custom-file 'no-error 'no-message)))
(server-mode 1)
(use-package server
:ensure nil
:hook (elpaca-after-init . server-mode))
(global-display-line-numbers-mode)
(use-package display-line-numbers
:ensure nil
:hook (elpaca-after-init . global-display-line-numbers-mode)
:config
(dolist (mode '(erc-mode-hook
circe-mode-hook
help-mode-hook
gud-mode-hook
treemacs-mode-hook
vterm-mode-hook))
(add-hook mode (lambda () (display-line-numbers-mode -1))))
(setq display-line-numbers-type 'relative)
)
(column-number-mode 1)
(global-subword-mode 1)
(show-paren-mode t)
(use-package subword
:ensure nil
:hook (elpaca-after-init . global-subword-mode))
(use-package paren
:ensure nil
:hook (elpaca-after-init . show-paren-mode))
(recentf-mode 1)
(setq recentf-max-saved-items 500)
(use-package recentf
:ensure nil
:hook (elpaca-after-init . recentf-mode)
:custom
(recentf-max-saved-items 500))
(setq-default cursor-type 'bar)
(setq make-backup-files nil)

55
lisp/init-treemacs.el Normal file
View File

@@ -0,0 +1,55 @@
;; -*- lexical-binding: t; -*-
(use-package treemacs
:ensure t
:defer t
:custom-face
(cfrs-border-color ((t (:inherit posframe-border))))
:init
(with-eval-after-load 'winum
(define-key winum-keymap (kbd "M-0") #'treemacs-select-window))
:config
(treemacs-follow-mode t)
(treemacs-filewatch-mode t)
(treemacs-fringe-indicator-mode 'always)
(pcase (cons (not (null (executable-find "git")))
(not (null (executable-find "python3"))))
(`(t . t)
(treemacs-git-mode 'deferred))
(`(t . _)
(treemacs-git-mode 'simple)))
(treemacs-git-commit-diff-mode t)
(treemacs-hide-gitignored-files-mode t)
(setq treemacs-collapse-dirs (if treemacs-python-executable 3 0)
treemacs-missing-project-action 'remove
treemacs-user-mode-line-format 'none
treemacs-sorting 'alphabetic-asc
treemacs-follow-after-init t
treemacs-width 30
treemacs-no-png-images 1)
:bind
(:map global-map
("M-0" . treemacs-select-window)
("C-x t 1" . treemacs-delete-other-windows)
("C-c o p" . treemacs)
("C-x t d" . treemacs-select-directory)
("C-x t B" . treemacs-bookmark)
("C-x t C-t" . treemacs-find-file)
("C-x t M-t" . treemacs-find-tag)))
(use-package treemacs-magit
:hook ((magit-post-commit
git-commit-post-finish
magit-post-stage
magit-post-unstage)
. treemacs-magit--schedule-update))
(use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode
:after (treemacs)
:ensure t
:config (treemacs-set-scope-type 'Tabs))
(use-package treemacs-nerd-icons
:demand t
:config (treemacs-nerd-icons-config))
(provide 'init-treemacs)

50
lisp/init-workspace.el Normal file
View File

@@ -0,0 +1,50 @@
;; -*- lexical-binding: t; -*-
(use-package tabspaces
:functions tabspaces-mode
:hook (elpaca-after-init . tabspaces-mode)
:custom
(tab-bar-show nil)
(tabspaces-use-filtered-buffers-as-default t)
(tabspaces-default-tab "Default")
(tabspaces-remove-to-default t)
(tabspaces-include-buffers '("*scratch*" "*Messages*"))
(tabspaces-exclude-buffers '("*eat*" "*vterm*" "*shell*" "*eshell*"))
;; sessions
(tabspaces-session t)
(tabspaces-session-auto-restore)
:config
(with-no-warnings
;; Filter Buffers for Consult-Buffer
(with-eval-after-load 'consult
;; hide full buffer list (still available with "b" prefix)
(consult-customize consult--source-buffer :hidden t :default nil)
;; set consult-workspace buffer list
(defvar consult--source-workspace
(list :name "Workspace Buffer"
:narrow ?w
:history 'buffer-name-history
:category 'buffer
:state #'consult--buffer-state
:default t
:items (lambda () (consult--buffer-query
:predicate #'tabspaces--local-buffer-p
:sort 'visibility
:as #'buffer-name)))
"Set workspace buffer list for consult-buffer.")
(add-to-list 'consult-buffer-sources 'consult--source-workspace))
(defun my-tabspaces-delete-childframe (&rest _)
"Delete all child frames."
(ignore-errors
(posframe-delete-all)))
(advice-add #'tabspaces-save-session :before #'my-tabspaces-delete-childframe)
(defun my-tabspaces-burry-window (&rest _)
"Burry *Messages* buffer."
(ignore-errors
(quit-windows-on messages-buffer-name)))
(advice-add #'tabspaces-restore-session :after #'my-tabspaces-burry-window)))
(provide 'init-workspace)