diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 87b0a156f..ab1151d3b 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -8,7 +8,7 @@ (set-lookup-handlers! 'emacs-lisp-mode :documentation 'info-lookup-symbol) (set-docset! '(lisp-mode emacs-lisp-mode) "Emacs Lisp") - (set! :rotate 'emacs-lisp-mode + (set-rotate-patterns! 'emacs-lisp-mode :symbols '(("t" "nil") ("let" "let*") ("when" "unless") diff --git a/modules/tools/rotate-text/autoload.el b/modules/tools/rotate-text/autoload.el index 1cae4ba58..dbdbbf4ac 100644 --- a/modules/tools/rotate-text/autoload.el +++ b/modules/tools/rotate-text/autoload.el @@ -1,17 +1,21 @@ ;;; tools/rotate-text/autoload.el -*- lexical-binding: t; -*- -;;;###autoload -(def-setting! :rotate (modes &rest plist) +;;;###autodef +(cl-defun set-rotate-patterns! (modes &key symbols words patterns) "Declare :symbols, :words or :patterns (all lists of strings) that `rotate-text' will cycle through." (declare (indent 1)) - (let* ((modes (doom-enlist (doom-unquote modes))) - (fn-name (intern (format "doom--rotate-%s" (mapconcat #'symbol-name modes "-"))))) - `(progn - (defun ,fn-name () - (require 'rotate-text) - (let ((plist (list ,@plist))) - (setq rotate-text-local-symbols (plist-get plist :symbols) - rotate-text-local-words (plist-get plist :words) - rotate-text-local-patterns (plist-get plist :patterns)))) - (add-hook! ,modes #',fn-name)))) + (dolist (mode (doom-enlist modes)) + (let ((fn-name (intern (format "+rotate-text--init-%s" mode)))) + (fset fn-name + (lambda () + (setq-local rotate-text-local-symbols symbols) + (setq-local rotate-text-local-words words) + (setq-local rotate-text-local-patterns patterns))) + (add-hook (intern (format "%s-hook" mode)) fn-name)))) + +;; FIXME obsolete :rotate +;;;###autoload +(def-setting! :rotate (modes &rest plist) + :obsolete set-rotate-patterns! + `(set-rotate-patterns! ,modes ,@plist))