2010-09-03 52 views
11

我希望把這樣的事情在我的.emacs:Emacs的熱鍵來對齊等號

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

但每當我運行它,我得到一個錯誤「錯誤類型參數:numberp,無」。

這個錯誤是什麼意思,我如何得到我正在尋找的效果?

回答

15

在這裏,你是我親愛的夥伴。

(defun align-to-equals (begin end) 
    "Align region to equal signs" 
    (interactive "r") 
    (align-regexp begin end "\\(\\s-*\\)=" 1 1)) 

(\s-*)前綴是由ALIGN-正則表達式內部使用

align.el

(list (concat "\\(\\s-*\\)" 

約翰Wiegley只是忽略了記錄它,我想大多數人只使用ALIGN-正則表達式交互,或者只是記錄並保存一個宏!

+0

毆打到衝... – ocodo 2010-09-03 07:41:16

+0

但更好的解釋! – qrest 2010-09-03 07:55:05

+0

我會給你一個+1雖然:) ... \ s- *前綴很奇怪。 – ocodo 2010-09-03 07:57:31

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))) 
+0

但是當然可以做這個任務而不需要挖出align命令的內部? – qrest 2010-09-03 06:38:13

+0

我會這麼想的,但我不明白'align.el'。 – 2010-09-03 07:02:08

2

「咚」 從#emacs解決它:

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

有人照顧解釋奇怪的前綴「=」?

+0

請注意,最後一個零是可選的,而11不是。 align.el的文檔需要整理。 – ocodo 2010-09-03 07:56:14