Replace delete-trailing-whitespace with ws-butler
ws-butler only strips trailing spaces on lines that have been modified. + ws-butler is disabled if editorconfig enables trim_trailing_whitespace, which resorts to delete-trailing-whitespace instead. + Updates doom|(enable|disable)-delete-trailing-whitespace hooks to use ws-butler-mode.
This commit is contained in:
parent
a33165d47a
commit
d80e79203a
4 changed files with 20 additions and 9 deletions
|
@ -283,12 +283,12 @@ with weak native support."
|
||||||
(defun doom|enable-delete-trailing-whitespace ()
|
(defun doom|enable-delete-trailing-whitespace ()
|
||||||
"Enables the automatic deletion of trailing whitespaces upon file save.
|
"Enables the automatic deletion of trailing whitespaces upon file save.
|
||||||
|
|
||||||
i.e. adds `delete-trailing-whitespace' to `write-file-functions', buffer-locally."
|
i.e. enables `ws-butler-mode' in the current buffer."
|
||||||
(add-hook 'write-file-functions #'delete-trailing-whitespace nil t))
|
(ws-butler-mode +1))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun doom|disable-delete-trailing-whitespace ()
|
(defun doom|disable-delete-trailing-whitespace ()
|
||||||
"Disables the automatic deletion of trailing whitespaces upon file save.
|
"Disables the automatic deletion of trailing whitespaces upon file save.
|
||||||
|
|
||||||
i.e. removes `delete-trailing-whitespace' from `write-file-functions'."
|
i.e. disables `ws-butler-mode' in the current buffer."
|
||||||
(remove-hook 'write-file-functions #'delete-trailing-whitespace t))
|
(ws-butler-mode -1))
|
||||||
|
|
|
@ -81,11 +81,6 @@ fundamental-mode) for performance sake."
|
||||||
|
|
||||||
(add-hook 'after-save-hook #'executable-make-buffer-file-executable-if-script-p)
|
(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
|
;; revert buffers for changed files
|
||||||
(def-package! autorevert
|
(def-package! autorevert
|
||||||
:after-call after-find-file
|
:after-call after-find-file
|
||||||
|
@ -300,5 +295,12 @@ savehist file."
|
||||||
[remap describe-variable] #'helpful-variable
|
[remap describe-variable] #'helpful-variable
|
||||||
[remap describe-key] #'helpful-key)
|
[remap describe-key] #'helpful-key)
|
||||||
|
|
||||||
|
;; `ws-butler' --- a better `delete-trailing-whitespaces'
|
||||||
|
(def-package! ws-butler
|
||||||
|
:after-call (after-find-file)
|
||||||
|
:config
|
||||||
|
(nconc ws-butler-global-exempt-modes '(special-mode comint-mode term-mode eshell-mode))
|
||||||
|
(ws-butler-global-mode))
|
||||||
|
|
||||||
(provide 'core-editor)
|
(provide 'core-editor)
|
||||||
;;; core-editor.el ends here
|
;;; core-editor.el ends here
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
(package! pcre2el)
|
(package! pcre2el)
|
||||||
(package! smartparens)
|
(package! smartparens)
|
||||||
(package! undo-tree)
|
(package! undo-tree)
|
||||||
|
(package! ws-butler)
|
||||||
|
|
||||||
;; core-projects.el
|
;; core-projects.el
|
||||||
(package! projectile)
|
(package! projectile)
|
||||||
|
|
|
@ -42,7 +42,15 @@ extension, try to guess one."
|
||||||
(apply orig-fn args)))
|
(apply orig-fn args)))
|
||||||
(advice-add #'editorconfig-call-editorconfig-exec :around #'doom*editorconfig-smart-detection)
|
(advice-add #'editorconfig-call-editorconfig-exec :around #'doom*editorconfig-smart-detection)
|
||||||
|
|
||||||
|
(defun +editorconfig|disable-ws-butler-maybe (props)
|
||||||
|
"Disable `ws-butler-mode' if trim_trailing_whitespace is true."
|
||||||
|
(when (equal (gethash 'trim_trailing_whitespace props) "true")
|
||||||
|
(ws-butler-mode -1)))
|
||||||
|
(add-hook 'editorconfig-custom-hooks #'+editorconfig|disable-ws-butler-maybe)
|
||||||
|
|
||||||
(defun +editorconfig|disable-indent-detection (props)
|
(defun +editorconfig|disable-indent-detection (props)
|
||||||
|
"Inhibit `dtrt-indent' if an explicit indent_style and indent_size is
|
||||||
|
specified by editorconfig."
|
||||||
(when (or (gethash 'indent_style props)
|
(when (or (gethash 'indent_style props)
|
||||||
(gethash 'indent_size props))
|
(gethash 'indent_size props))
|
||||||
(setq doom-inhibit-indent-detection t)))
|
(setq doom-inhibit-indent-detection t)))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue