2016-10-13 82 views
0

我試圖綁定到M-b前面帶負面參數的命令。我發佈我的代碼。將關鍵字綁定到emacs中的負面參數+命令

工作

(global-unset-key (kbd "M-f"))               
(global-set-key (kbd "M-f") 'forward-whitespace)          

不工作

(global-unset-key (kbd "M-b"))               
(global-set-key (kbd "M-b") (lambda() (interactive) (negative-argument(forward-whitespace))))  

我怎樣才能使它的工作?

回答

2

你有具體的問題很容易解決:

(global-set-key (kbd "M-b") (lambda() (interactive) (forward-whitespace -1))) 

你可能不知道,如果你能寫會交互調用任意命令負的參數的宏。

這是不是真的很難:

(defmacro call-with-negative-argument (command) 
    `(lambda() 
    (interactive) 
    (prefix-command-preserve-state) 
    (setq prefix-arg '-) 
    (universal-argument--mode) 
    (call-interactively ,command))) 
(global-set-key (kbd "...") (call-with-negative-argument forward-whitespace)) 

但是,說真的,任何兼容功能也將正常工作是這樣的:

(defmacro call-with-negative-argument (command) 
    `(lambda() 
    (interactive) 
    (,command -1))) 
+0

謝謝!關於這個答案,我很遺憾另一個問題:請看看http://stackoverflow.com/questions/40024130/tell-emacs-to-interpret-words-breaking-them-at-newline-and-whitespace – Nisba