从emacs lisp中对齐正则表达式

sim*_*mao 7 emacs elisp

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

(defun align-= ()
  "Align lines by `=`"
  (interactive)
  (align-regexp (region-beginning) (region-end) "="))
Run Code Online (Sandbox Code Playgroud)

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

offer = stub('offer')
user = stub('user')
Run Code Online (Sandbox Code Playgroud)

但是emacs会返回以下错误:

align-region: Marker does not point anywhere
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

谢谢

Tac*_*der 8

我通过这样做得到了它:

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

据我所知,它align-regexp没有收到你认为它收到的东西.

您可以通过调用手动测试M-x align-regexp <RET> = <RET>,然后打C-x ESC ESC(默认情况下repeat-complex-command势必会C-x ESC ESC,你也可以使用锰/ MP在历史移动),你会看到什么传递给align-regexp.然后我将该行复制到该函数中. (我也使用了交互式"r",因为它很方便)

它在Emacs 24上为我工作.

相关但不完全相同:

Mx align-regexp与Cu Mx align-regexp行为不一致

并且:

标记不指向align-regexp(Emacs)