仅在非空行上触发的 Emacs 宏
Emacs macro that only fires on non-empty lines
一般来说,我发现自己在编写简短的宏,例如在一行中添加或删除行注释或更正缩进。
但是,启用空白模式后,我仍然需要注意不要在空白行上触发这些宏;如果宏试图删除空行中的一个字符,通常它会弄乱整个文档。
是否有解决此问题的方法,既不涉及在空白行上留一些空格,又不改变我的文档结构?
您可以在宏的开头使用 C-M-s ^.
。即搜索至少包含一个字符的行。
在 上扩展 -- 这是一个版本,它还会通知是否根本没有上一行:
(defun goto-first-previous-non-empty-line ()
(interactive)
(if (re-search-backward "^." nil t)
(message "First previous non-empty line")
(message "Beginning of buffer")
)
)
一般来说,我发现自己在编写简短的宏,例如在一行中添加或删除行注释或更正缩进。
但是,启用空白模式后,我仍然需要注意不要在空白行上触发这些宏;如果宏试图删除空行中的一个字符,通常它会弄乱整个文档。
是否有解决此问题的方法,既不涉及在空白行上留一些空格,又不改变我的文档结构?
您可以在宏的开头使用 C-M-s ^.
。即搜索至少包含一个字符的行。
在
(defun goto-first-previous-non-empty-line ()
(interactive)
(if (re-search-backward "^." nil t)
(message "First previous non-empty line")
(message "Beginning of buffer")
)
)