我最近在某些编程模式中添加了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