Emacs热键对齐等号

时间:2010-09-03 04:53:00

标签: emacs

我想把这样的东西放在我的.emacs中:

(local-set-key (kbd "C-c a =") 
  (lambda () (interactive) 
    (align-regexp (region-beginning) (region-end) "=")))

但每当我运行它时,我都会收到错误“错误的类型参数:numberp,nil”。

这个错误是什么意思,我如何得到我正在寻找的效果?

3 个答案:

答案 0 :(得分:16)

你是我亲爱的伙伴。

(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,或者只记录并保存一个宏!

答案 1 :(得分:2)

来自#emacs的“thunk”解决了它:

(local-set-key (kbd "C-c a =") 
  (lambda () (interactive) 
    (align-regexp (region-beginning) (region-end) "\\(\\s-*\\)=" 1 1 nil)))

有人在意解释“=”的奇怪前缀吗?

答案 2 :(得分:0)

我挑选了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)))