从Emacs Lisp对齐正则表达式

8
我会尽力为您翻译以下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个回答

10

我通过以下方法使其工作:

(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,您也可以使用 M-n / M-p 在历史记录中移动),这样您会看到传递给 align-regexp 的确切内容。之后,我将这一行代码复制到函数中。(我还使用了交互式“r”,因为它很方便) 在 Emacs 24 上,这对我有效。
与以下问题相关但不完全相同: Inconsistent M-x align-regexp vs. C-u M-x align-regexp behaviour 还有: Marker does not point anywhere from align-regexp (Emacs)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接