diff --git a/core/autoload/editor.el b/core/autoload/editor.el index e6f2fd041..0aeddfa54 100644 --- a/core/autoload/editor.el +++ b/core/autoload/editor.el @@ -281,6 +281,14 @@ with weak native support." ;;;###autoload (defun doom|enable-delete-trailing-whitespace () - "Enables the automatic deletion of trailing whitespaces upon file save, by -attaching `delete-trailing-whitespace' to a buffer-local `before-save-hook'." - (add-hook 'before-save-hook #'delete-trailing-whitespace nil t)) + "Enables the automatic deletion of trailing whitespaces upon file save. + +i.e. adds `delete-trailing-whitespace' to `write-file-functions', buffer-locally." + (add-hook 'write-file-functions #'delete-trailing-whitespace nil t)) + +;;;###autoload +(defun doom|disable-delete-trailing-whitespace () + "Disables the automatic deletion of trailing whitespaces upon file save. + +i.e. removes `delete-trailing-whitespace' from `write-file-functions'." + (remove-hook 'write-file-functions #'delete-trailing-whitespace t)) diff --git a/core/core-editor.el b/core/core-editor.el index 1c7477eb6..bd7d60702 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -81,6 +81,11 @@ fundamental-mode) for performance sake." (add-hook 'after-save-hook #'executable-make-buffer-file-executable-if-script-p) +;; Deleting trailing whitespace is on by default, but must be set on +;; write-file-functions, so that editorconfig can see it (so it doesn't add it +;; redundantly and can remove it when needed). +(add-hook 'write-file-functions #'delete-trailing-whitespace) + ;; revert buffers for changed files (def-package! autorevert :after-call after-find-file diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 7aab19a2c..4449dd255 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -50,7 +50,7 @@ (add-hook! 'emacs-lisp-mode-hook #'(;; 3rd-party functionality - auto-compile-on-save-mode doom|enable-delete-trailing-whitespace + auto-compile-on-save-mode ;; fontification rainbow-delimiters-mode highlight-quoted-mode ;; initialization diff --git a/modules/lang/racket/config.el b/modules/lang/racket/config.el index d86227128..460fd2d47 100644 --- a/modules/lang/racket/config.el +++ b/modules/lang/racket/config.el @@ -18,12 +18,7 @@ (setq racket-smart-open-bracket-enable t) - (add-hook! racket-mode - #'(;; 3rd-party functionality - doom|enable-delete-trailing-whitespace - ;; fontification - rainbow-delimiters-mode - highlight-quoted-mode)) + (add-hook! racket-mode #'(rainbow-delimiters-mode highlight-quoted-mode)) (map! :map racket-mode-map :localleader