diff --git a/modules/emacs/electric/autoload.el b/modules/emacs/electric/autoload.el index dc22a08b0..7ecbaf3b0 100644 --- a/modules/emacs/electric/autoload.el +++ b/modules/emacs/electric/autoload.el @@ -5,18 +5,19 @@ "Declare :words (list of strings) or :chars (lists of chars) in MODES that trigger electric indentation." (declare (indent 1)) - (unless plist - (signal 'wrong-number-of-arguments - (list '(:char :words) plist))) - (cl-destructuring-bind (&key chars words) plist - (dolist (mode (doom-enlist modes)) - (let ((fn (intern (format "+electric|init-%s" mode)))) - (fset fn - (lambda () - (electric-indent-local-mode +1) - (if chars (setq electric-indent-chars chars)) - (if words (setq +electric-indent-words words)))) - (add-hook (intern (format "%s-hook" mode)) fn))))) + (dolist (mode (doom-enlist modes)) + (let ((hook (intern (format "%s-hook" mode))) + (fn (intern (format "+electric|init-%s" mode)))) + (cond ((null (car-safe plist)) + (remove-hook hook fn) + (unintern fn nil)) + ((fset fn + (lambda () + (cl-destructuring-bind (&key chars words) plist + (electric-indent-local-mode +1) + (if chars (setq electric-indent-chars chars)) + (if words (setq +electric-indent-words words))))) + (add-hook hook fn)))))) ;; FIXME obsolete :electric ;;;###autoload