2012-03-18 6 views
2

私はすべてのグローバルキーを.emacsファイルに設定する関数init-set-key-mappingsを書いています。emacsでkeyにバインドされた関数を評価する際に間違った型エラーが発生しました

(defun init-set-key-mappings() 
"All the key mappings go here" 
    (let ((mappings (list 
       '("\C-ca" 'open-fileline)))) 
    (mapcar (lambda (mapping) 
      (let ((key (car mapping)) 
       (func (cadr mapping))) 
      (progn 
       (message (format "map key %s to %s" key func)) 
       (global-set-key key func)))) 
     mappings))) 

それは細かい評価が、私はC-C、Aを押すと、Emacsは

私が間違って何をやっている "(オープンfileline引用符)、間違った型引数のcommandpをを" 文句を言いますか?

編集:私は答えを見つけました。オープンファイルの前に引用符を削除すると、問題が解決されたようです。なぜ はそれがシンボルの問題なのでしょうか?関数がシンボルとして渡されるのはこれではありませんか?

答えて

5

あなたは関数open-filelineを二重引用符で囲みました。表現

(list '("\C-ca" 'open-fileline))) 

では最初の引用符は、以下のリストですべてが引用されていることを示します。その後、の二重引用符をopen-filelineに追加しました。つまり、リストには車の2番目の要素としてのシンボルは含まれていませんが、というシンボルが付いています。比較:

(symbolp (cadar (list '("string" 'open-fileline)))) 

(symbolp (cadar (list '("string" open-fileline)))) 
+0

素晴らしいを!愚かな私.. :) – Ravi

関連する問題