我最近在某些編程模式中添加了Emacs (delete-trailing-whitespace)
函數給我的'before-save-hook
,但是我覺得它讓人很沮喪,它從我當前正在編輯的行中刪除了空格。有關如何解決這個問題的任何建議?emacs delete-trailing-whitespace except current line
7
A
回答
9
由於delete-trailing-whitespace
方面縮小,一種解決方案是當前行之前縮小緩衝器向部和當前行之後調用它,然後窄於部分並再次調用它:
(defun delete-trailing-whitespace-except-current-line()
(interactive)
(let ((begin (line-beginning-position))
(end (line-end-position)))
(save-excursion
(when (< (point-min) begin)
(save-restriction
(narrow-to-region (point-min) (1- begin))
(delete-trailing-whitespace)))
(when (> (point-max) end)
(save-restriction
(narrow-to-region (1+ end) (point-max))
(delete-trailing-whitespace))))))
將此功能置於您的before-save-hook
而不是delete-trailing-whitespace
。
+0
完美的作品,謝謝! – pariser 2010-08-21 00:09:45
3
此包裝爲delete-trailing-whitespace
可以用來做你想要什麼:
(defun delete-trailing-whitespace-except-current-line()
"do delete-trailing-whitespace, except preserve whitespace of current line"
(interactive)
(let ((current-line (buffer-substring (line-beginning-position) (line-end-position)))
(backward (- (line-end-position) (point))))
(delete-trailing-whitespace)
(when (not (string-equal (buffer-substring (line-beginning-position) (line-end-position))
current-line))
(delete-region (line-beginning-position) (line-end-position))
(insert current-line)
(backward-char backward))))
1
我遇到了同樣的問題,並且發現了ws-butler完美地解決了它。 有一個簡單的示例配置代碼:
;; autoload ws-butler on file open
(add-hook 'find-file-hook #'ws-butler-global-mode)
(setq require-final-newline t)
0
我只是有一個包裝,以使兩個調用`刪除尾隨空白「:
(defun modi/delete-trailing-whitespace-buffer()
"Delete trailing whitespace in the whole buffer, except on the current line.
The current line exception is because we do want to remove any whitespace
on the current line on saving the file (`before-save-hook') while we are
in-between typing something.
Do not do anything if `do-not-delete-trailing-whitespace' is non-nil."
(interactive)
(when (not (bound-and-true-p do-not-delete-trailing-whitespace))
(delete-trailing-whitespace (point-min) (line-beginning-position))
(delete-trailing-whitespace (line-end-position) (point-max))))
(add-hook 'before-save-hook #'modi/delete-trailing-whitespace-buffer)
相關問題
- 1. Emacs hl-line:在本地更改顏色
- 2. Emacs goto-line在終結者不工作
- 3. 使用Emacs Starter Kit時,在Emacs中禁用hl-line?
- 4. SELECT * EXCEPT
- 5. 與CURRENT ROW
- 6. sql show current instance
- 7. 如何通過Emacs + org-mode + visual-line-mode保留縮進?
- 8. hl-line-mode + scroll-step + highlight-括號 - > emacs變瘋狂了
- 9. viper-next-line,viper-previous-line在視覺模式下有問題?
- 10. 從EXCEPT結果
- 11. TSQl EXCEPT驗證
- 12. SQL查詢EXCEPT
- 13. line 3 divs on one line
- 14. Try/Except無法使用TimeoutException
- 15. Onclick slide to current div
- 16. ng-click on current tag
- 17. 改變屬性.Current
- 18. Android Map with current location
- 19. Python - with open()except(FileNotFoundError)?
- 20. 效率與「try ... except」
- 21. Sqlite EXCEPT和ALTER TABLE
- 22. 「line 0」
- 23. 圖Line
- 24. Prinft line by line of file單線程C
- 25. 如果current = base = other,爲什麼'git-merge-file current base other'會生成一個空的'current'文件?
- 26. Emacs抱怨無效功能?
- 27. 將BindingSource Current轉換爲DataRow
- 28. 休眠「ON UDPATE CURRENT TIMESTAMP」列
- 29. jquery weekcalendar resize/drop variables current div
- 30. Emacs TAGS表被lex/yacc文件中的#line僞指令所困惑
我必須說,我不明白爲什麼你想要保留當前行的尾隨空格。 – offby1 2010-08-20 21:15:47
理由:當我在編輯文件的過程中,我強制保存文檔。如果我開始輸入「print」然後保存我的緩衝區,那麼這行會縮小到「打印」並且光標會退出,迫使我輸入另一個空格! – pariser 2010-08-21 00:12:11