我想在我的 .emacs 文件中加入类似这样的内容:
(local-set-key (kbd "C-c a =")
(lambda () (interactive)
(align-regexp (region-beginning) (region-end) "=")))
但是每次我运行它时,都会出现错误“Wrong type argument: numberp, nil”。
这个错误是什么意思,我应该如何达到我想要的效果?
我想在我的 .emacs 文件中加入类似这样的内容:
(local-set-key (kbd "C-c a =")
(lambda () (interactive)
(align-regexp (region-beginning) (region-end) "=")))
但是每次我运行它时,都会出现错误“Wrong type argument: numberp, nil”。
这个错误是什么意思,我应该如何达到我想要的效果?
亲爱的朋友,这是你需要的内容。
(defun align-to-equals (begin end)
"Align region to equal signs"
(interactive "r")
(align-regexp begin end "\\(\\s-*\\)=" 1 1 ))
(\s-*)
前缀是由 align-regexp 在内部使用的。
来自 align.el
(list (concat "\\(\\s-*\\)"
John Wiegley只是没有记录它,我猜大多数人都会交互式地使用align-regexp,或者只是记录并保存一个宏!
(local-set-key (kbd "C-c a =")
(lambda () (interactive)
(align-regexp (region-beginning) (region-end) "\\(\\s-*\\)=" 1 1 nil)))
我分析了align-regexp
的源代码(在debian上安装emacs23-el
),得到了以下结果:
(local-set-key (kbd "C-c a =")
(lambda () (interactive)
(align-region (region-beginning)
(region-end)
'entire
(list (list nil
(cons 'regexp "\\(\\s-*\\)=")
(cons 'group 1)
(cons 'bogus nil)
(cons 'spacing 1)))
nil
nil)))
align.el
并不是很了解。 - Jack Kelly
(rx (group (zero-or-more (syntax whitespace))) "=")
等价于"\\(\\s-*\\)="
- offby1align.el
库文档不完善的情况。 - ocodo