From 7cc0e9e37ef15fd0591c1665a6add0b1c0bafdee Mon Sep 17 00:00:00 2001 From: zekun-shi Date: Sun, 17 Aug 2025 15:15:33 +0800 Subject: [PATCH 1/2] Refactor: Replace defadvice with advice-add for modern Emacs Lisp practice --- config.el | 2 +- core/core-dotspacemacs.el | 36 ++++++++++++-------------- layer/spacemacs-layouts/funcs.el | 32 ++++++++++++----------- layer/spacemacs-layouts/packages.el | 5 ++-- layer/spacemacs-navigation/packages.el | 27 +++++++++---------- 5 files changed, 51 insertions(+), 51 deletions(-) diff --git a/config.el b/config.el index f5395e8..58dd759 100644 --- a/config.el +++ b/config.el @@ -383,7 +383,7 @@ Spacemacs use spacemacs-.*-mode-map, we here use original mode map." "ESC" nil "M-s" nil ) - (compleseus/init-consult-yasnippet )() + (compleseus/init-consult-yasnippet) (compleseus/init-embark) (compleseus/init-embark-consult) (compleseus/init-orderless) diff --git a/core/core-dotspacemacs.el b/core/core-dotspacemacs.el index d97df89..4734070 100644 --- a/core/core-dotspacemacs.el +++ b/core/core-dotspacemacs.el @@ -748,23 +748,20 @@ Informs users of error and prompts for default editing style for use during error recovery." (load (concat dotspacemacs-template-directory ".spacemacs.template")) - (defadvice dotspacemacs/layers - (after error-recover-preserve-packages activate) - (progn - (setq-default dotspacemacs-install-packages 'used-but-keep-unused) - (ad-disable-advice 'dotspacemacs/layers 'after - 'error-recover-preserve-packages) - (ad-activate 'dotspacemacs/layers))) - (defadvice dotspacemacs/init - (after error-recover-prompt-for-style activate) - (progn - (setq-default dotspacemacs-editing-style - (intern - (ido-completing-read - (format - (concat - "Spacemacs encountered an error while " - "loading your `%s' file.\n" + (advice-add 'dotspacemacs/layers :after + (lambda (&rest _args) + (setq-default dotspacemacs-install-packages 'used-but-keep-unused) + (advice-remove 'dotspacemacs/layers + 'error-recover-preserve-packages))) + (advice-add 'dotspacemacs/init :after + (lambda (&rest _args) + (setq-default dotspacemacs-editing-style + (intern + (ido-completing-read + (format + (concat + "Spacemacs encountered an error while " + "loading your `%s' file.\n" "Pick your editing style for recovery " "(use left and right arrows): ") dotspacemacs-filepath) @@ -772,9 +769,8 @@ error recovery." ("emacs" emacs) ("hybrid" hybrid)) nil t nil nil 'vim))) - (ad-disable-advice 'dotspacemacs/init 'after - 'error-recover-prompt-for-style) - (ad-activate 'dotspacemacs/init)))) + (advice-remove 'dotspacemacs/init + 'error-recover-prompt-for-style)))) (defun dotspacemacs//test-dotspacemacs/layers () "Tests for `dotspacemacs/layers'" diff --git a/layer/spacemacs-layouts/funcs.el b/layer/spacemacs-layouts/funcs.el index 0721366..1b94b0f 100644 --- a/layer/spacemacs-layouts/funcs.el +++ b/layer/spacemacs-layouts/funcs.el @@ -747,25 +747,27 @@ graphical frames, and one set for terminal frames." (--zip-with (set-persp-parameter it other persp) param-names workspace-params))) -(defun spacemacs/load-eyebrowse-for-perspective (type &optional frame) +(defun spacemacs/load-eyebrowse-for-perspective (&rest args) "Load an eyebrowse workspace according to a perspective's parameters. FRAME's perspective is the perspective that is considered, defaulting to the current frame's perspective. If the perspective doesn't have a workspace, create one." - (when (eq type 'frame) - (let* ((workspace-params (spacemacs//get-persp-workspace (get-frame-persp frame) frame)) - (window-configs (nth 0 workspace-params)) - (current-slot (nth 1 workspace-params)) - (last-slot (nth 2 workspace-params))) - (if window-configs - (progn - (eyebrowse--set 'window-configs window-configs frame) - (eyebrowse--set 'current-slot current-slot frame) - (eyebrowse--set 'last-slot last-slot frame) - (eyebrowse--load-window-config current-slot)) - (eyebrowse--set 'window-configs nil frame) - (eyebrowse-init frame) - (spacemacs/save-eyebrowse-for-perspective frame))))) + (let ((type (if args (car args) 'frame)) + (frame (if (> (length args) 1) (cadr args) nil))) + (when (eq type 'frame) + (let* ((workspace-params (spacemacs//get-persp-workspace (get-frame-persp frame) frame)) + (window-configs (nth 0 workspace-params)) + (current-slot (nth 1 workspace-params)) + (last-slot (nth 2 workspace-params))) + (if window-configs + (progn + (eyebrowse--set 'window-configs window-configs frame) + (eyebrowse--set 'current-slot current-slot frame) + (eyebrowse--set 'last-slot last-slot frame) + (eyebrowse--load-window-config current-slot)) + (eyebrowse--set 'window-configs nil frame) + (eyebrowse-init frame) + (spacemacs/save-eyebrowse-for-perspective frame)))))) (defun spacemacs/load-eyebrowse-after-loading-layout (_state-file _phash persp-names) "Bridge between `persp-after-load-state-functions' and diff --git a/layer/spacemacs-layouts/packages.el b/layer/spacemacs-layouts/packages.el index 7d26e44..ab2571f 100644 --- a/layer/spacemacs-layouts/packages.el +++ b/layer/spacemacs-layouts/packages.el @@ -223,8 +223,9 @@ :config (progn ;; (spacemacs|hide-lighter persp-mode) - (defadvice persp-activate (before spacemacs//save-toggle-layout activate) - (setq spacemacs--last-selected-layout persp-last-persp-name)) + (advice-add 'persp-activate :before + (lambda (&rest _args) + (setq spacemacs--last-selected-layout persp-last-persp-name))) (add-hook 'persp-mode-hook 'spacemacs//layout-autosave) (advice-add 'persp-load-state-from-file :before 'spacemacs//layout-wait-for-modeline) diff --git a/layer/spacemacs-navigation/packages.el b/layer/spacemacs-navigation/packages.el index 1a9ac02..f11bbc0 100644 --- a/layer/spacemacs-navigation/packages.el +++ b/layer/spacemacs-navigation/packages.el @@ -119,11 +119,12 @@ ahs-back-to-start ahs-change-range)) (let* ((advice (intern (format "spacemacs/%s" (symbol-name sym))))) - (eval `(defadvice ,sym (around ,advice activate) - (spacemacs/ahs-highlight-now-wrapper) - ad-do-it - (spacemacs/ahs-highlight-now-wrapper) - (setq spacemacs-last-ahs-highlight-p (ahs-highlight-p)))))) + (advice-add sym :around + (lambda (orig-fun &rest args) + (spacemacs/ahs-highlight-now-wrapper) + (apply orig-fun args) + (spacemacs/ahs-highlight-now-wrapper) + (setq spacemacs-last-ahs-highlight-p (ahs-highlight-p)))))) ;; transient state (spacemacs|define-transient-state symbol-highlight @@ -201,14 +202,14 @@ (progn ;; fixed a weird issue where toggling display does not ;; swtich to text mode - (defadvice doc-view-toggle-display - (around spacemacs/doc-view-toggle-display activate) - (if (eq major-mode 'doc-view-mode) - (progn - ad-do-it - (text-mode) - (doc-view-minor-mode)) - ad-do-it))))) + (advice-add 'doc-view-toggle-display :around + (lambda (orig-fun &rest args) + (if (eq major-mode 'doc-view-mode) + (progn + (apply orig-fun args) + (text-mode) + (doc-view-minor-mode)) + (apply orig-fun args))))))) (defun spacemacs-navigation/init-golden-ratio () (use-package golden-ratio From e745a623b7767175c1d4214017528ed7c7c64e3d Mon Sep 17 00:00:00 2001 From: Zekun Shi Date: Mon, 13 Oct 2025 13:31:18 +0800 Subject: [PATCH 2/2] Fix Emacs 30.2 compatibility warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace obsolete defadvice with advice-add in spacemacs-editing/packages.el - Fix cl-case quoted symbols in spacemacs-defaults/funcs.el and shell/funcs.el - Update expand-region advice to use modern :around advice syntax These changes eliminate deprecation warnings when running Emacs 30.2. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .gitignore | 1 + layer/shell/funcs.el | 4 ++-- layer/spacemacs-defaults/funcs.el | 10 +++++----- layer/spacemacs-editing/packages.el | 21 ++++++++++++--------- 4 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c531d98 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.elc diff --git a/layer/shell/funcs.el b/layer/shell/funcs.el index 0ab6ccc..86a1afa 100644 --- a/layer/shell/funcs.el +++ b/layer/shell/funcs.el @@ -45,8 +45,8 @@ "Open the default shell in a popup." (interactive) (let ((shell (cl-case shell-default-shell - ('multi-term 'multiterm) - ('shell 'inferior-shell) + (multi-term 'multiterm) + (shell 'inferior-shell) (t shell-default-shell)))) (call-interactively (intern (format "spacemacs/shell-pop-%S" shell))))) diff --git a/layer/spacemacs-defaults/funcs.el b/layer/spacemacs-defaults/funcs.el index f8101d4..d79f2c9 100644 --- a/layer/spacemacs-defaults/funcs.el +++ b/layer/spacemacs-defaults/funcs.el @@ -756,11 +756,11 @@ then apply that major mode to the new buffer." (interactive) (let ((newbuf (generate-new-buffer "untitled"))) (cl-case split - ('left (split-window-horizontally)) - ('below (spacemacs/split-window-vertically-and-switch)) - ('above (split-window-vertically)) - ('right (spacemacs/split-window-horizontally-and-switch)) - ('frame (select-frame (make-frame)))) + (left (split-window-horizontally)) + (below (spacemacs/split-window-vertically-and-switch)) + (above (split-window-vertically)) + (right (spacemacs/split-window-horizontally-and-switch)) + (frame (select-frame (make-frame)))) ;; Prompt to save on `save-some-buffers' with positive PRED (with-current-buffer newbuf (setq-local buffer-offer-save t) diff --git a/layer/spacemacs-editing/packages.el b/layer/spacemacs-editing/packages.el index 9be4773..e0e2d4e 100644 --- a/layer/spacemacs-editing/packages.el +++ b/layer/spacemacs-editing/packages.el @@ -116,14 +116,14 @@ (require 'evil-iedit-state) ;; for "e" key ;; add search capability to expand-region (when (featurep 'helm-ag) - (defadvice er/prepare-for-more-expansions-internal - (around helm-ag/prepare-for-more-expansions-internal activate) - ad-do-it - (let ((new-msg (concat (car ad-return-value) - ", / to search in project, " - "f to search in files, " - "b to search in opened buffers")) - (new-bindings (cdr ad-return-value))) + (defun spacemacs//er-prepare-more-expansions-advice (orig-func &rest args) + "Add helm-ag search capabilities to expand-region." + (let* ((result (apply orig-func args)) + (new-msg (concat (car result) + ", / to search in project, " + "f to search in files, " + "b to search in opened buffers")) + (new-bindings (cdr result))) (cl-pushnew '("/" (lambda () (call-interactively @@ -139,7 +139,10 @@ (call-interactively 'spacemacs/helm-buffers-smart-do-search-region-or-symbol))) new-bindings) - (setq ad-return-value (cons new-msg new-bindings))))) + (cons new-msg new-bindings))) + (advice-add 'er/prepare-for-more-expansions-internal + :around + #'spacemacs//er-prepare-more-expansions-advice)) (setq expand-region-contract-fast-key "V" expand-region-reset-fast-key "r"))))