2010-03-23 55 views
3

我正在嘗試做一個簡單的「na」函數的鍵綁定。當我執行(na)時,它會在當前緩衝區中插入「å」,它應該是這樣,但是當我嘗試按照第一行中所述的鍵綁定時,會出現錯誤:「錯誤的參數:commandp,na」。 我不確定它是否重要,但我也已將(local-set-key)命令放在代碼的末尾,但它會產生相同的錯誤。新手:Elisp中的鍵綁定錯誤

現在,我確信有一個簡單的解決方案。我看不出它=/

(local-set-key (kbd "C-c C-t") 'na) 

(defun na() 
     "Liten å" 
     (setq varlol "å") 
     (insert varlol)) 
+1

這完全不是你的問題,但FYI「C-x 8/a」與您定義的功能完全相同。 「C-x 8 C-h」將列出用於插入拉丁文-1字符的各種定義的快捷方式 – 2010-03-26 02:59:03

回答

7

什麼你缺少的是interactive呼叫:

(defun na() 
    "Liten å" 
    (interactive) 
    (setq varlol "å") 
    (insert varlol)) 

從文檔吧:

This special form declares that a function is a command, and that it may therefore be called interactively (via M-x or by entering a key sequence bound to it). The argument arg-descriptor declares how to compute the arguments to the command when the command is called interactively.

+0

謝謝!那就是訣竅。我正在閱讀關於GNU的Elisp介紹文章,並且(交互式)符號包含「p」,因此我會自動將其放入偏差中,但出現錯誤。我應該認爲「p」意味着它期望收到數據。不管怎麼說,還是要謝謝你! – bleakgadfly 2010-03-23 15:36:25

+0

@DreamCodeR查看「interactive」的文檔以查看各種參數。 ''p「'表示前綴參數('C-u')被轉換爲數字。但是,你得到的錯誤是函數'na' *沒有任何參數,所以錯誤很可能是你指定的(通過'interactive')函數應該有一個參數,但實際的定義沒有。 – 2010-03-23 16:51:48

2

「互動」 缺失

(defun na() 
    (interactive) 
     "Liten å" 
     (setq varlol "å") 
     (insert varlol))