从emacs lisp中对齐正则表达式

时间:2013-01-29 13:09:49

标签: emacs elisp

我正在尝试使用以下elisp函数来使用=对齐文本:

(defun align-= ()
  "Align lines by `=`"
  (interactive)
  (align-regexp (region-beginning) (region-end) "="))

我正在努力调整以下文字:

offer = stub('offer')
user = stub('user')

但emacs会返回以下错误:

align-region: Marker does not point anywhere

我做错了什么?

由于

1 个答案:

答案 0 :(得分:8)

我通过这样做得到了它:

(defun align-= (p1 p2)
  "Align lines by =" 
  (interactive "r")
  (align-regexp p1 p2 "\\(\\s-*\\)=" 1 1 nil)
)

据我了解,align-regexp没有收到您认为收到的内容。

您可以通过调用M-x align-regexp <RET> = <RET>手动测试,然后点击C-x ESC ESC(默认情况下repeat-complex-command绑定到C-x ESC ESC,您也可以使用Mn / Mp进入历史)你会看到传递给align-regexp的确切内容。然后我将该行复制到该函数中。 (我也使用了交互式“r”,因为它很方便)

它在Emacs 24上为我工作。

相关但与100%完全相同:

Inconsistent M-x align-regexp vs. C-u M-x align-regexp behaviour

还有:

Marker does not point anywhere from align-regexp (Emacs)