我正在尝试将参数传递给 Emacs (Lisp) 中的 align-regexp 函数:
(defun align-on-comment-char ()
(interactive)
(align-regexp (region-beginning) (region-end) "#")
)
我实际上想专门为我的所有模式执行此操作,对于每种模式,我想绑定一个“对齐到注释字符(;
对于 emacs lisp,%
对于 Latex,#
对于 R)”。
我错过了什么?
comment-start
并且comment-end
是获取当前模式的注释字符串的常用变量。
在调用 align-regexp 时,您还需要附加一些魔法来获得正确的匹配。像奥列格一样,我不得不通过查看源代码来解决这个问题。这里的错误消息并不是真正的描述性,我真的认为这值得一个错误报告或至少一个文档修复。
(defun align-comment (beg end)
(interactive "r")
(align-regexp beg end (concat "\\(\\s-*\\)" comment-start))
)
你应该稍微改变你的代码。
例如像这样:
(defun align-on-comment-char (beg end)
(interactive "r")
(align-regexp beg end "\\(\\s-*\\)#")
)
魔术字符串"\\(\\s-*\\)"
取自align-regexp
.
如果您想为所有模式使用单一功能,请使用comment-start
@pmr 指出的变量。
(align-regexp beg end (concat "\\(\\s-*\\)" comment-start))