Emacs调用align regexp

时间:2012-10-14 19:50:25

标签: regex function emacs alignment

我试图将参数传递给Emacs(Lisp)中的align-regexp函数:

(defun align-on-comment-char ()
  (interactive)
  (align-regexp (region-beginning) (region-end) "#")
)

我真的希望特别为我的所有模式执行此操作,对于每个模式,我想绑定“对齐评论字符(;表示emacs lisp,%表示Latex,{{ 1}}对于R)“。

我错过了什么?

2 个答案:

答案 0 :(得分:4)

comment-startcomment-end是获取当前模式的comment-string的常用变量。

你还需要添加一些魔法来获得正确的匹配 调用align-regexp。像奥列格一样,我不得不用艰难的方式解决这个问题 通过查看来源。这里的错误信息不是真的 描述性的,我真的认为这值得一个错误报告或在 至少是一个文档修复。

(defun align-comment (beg end)
  (interactive "r")
  (align-regexp beg end (concat "\\(\\s-*\\)" comment-start))
)

答案 1 :(得分:4)

您应该稍微更改一下代码。

例如:

(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))