Burada "Yanlış tür bağımsız değişkeni: commandp, (lambda nil (ileri satır 5))" alıyorum.
(global-set-key [?\M-n] (lambda () (forward-line 5)))
Hata nedir? Oldukça basit olduğundan eminim ve bariz bir şeyi kaçırıyorum.
Burada "Yanlış tür bağımsız değişkeni: commandp, (lambda nil (ileri satır 5))" alıyorum.
(global-set-key [?\M-n] (lambda () (forward-line 5)))
Hata nedir? Oldukça basit olduğundan eminim ve bariz bir şeyi kaçırıyorum.
Yanıtlar:
global-set-key
etkileşimli bir komut bekliyor. (lambda () (interactive) (forward-line 5))
çalışmalı.
Bu arada, C-h f commandp
bu tür hatalar için oldukça iyi bir başlangıç noktası.
(commandp)
belgelere göre , lambda üst seviye (interactive)
işe çağrı ile çalışır, ancak bununla çalışacak bir işlevi nasıl tanımlayabilirim (defun)
?
Doğru form bu olmalıdır -
(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))
Sorun, (interactive)
(brendan'ın da bahsettiği gibi) koymayı unutmuş olmanızdı .
Bu arada, (kbd)
anahtar bağlamayı belirlemek için işlevi kullandığımı fark edeceksiniz . Bu işlev son derece kullanışlıdır, çünkü tuş bağlamalarını neredeyse tam anlamıyla koyabilirsiniz.
Bu hatayı, her zamanki dosyamı kullandığım .emacs
ancak paketlerimi yüklemediğim ve yürütülecek komutun bu paketlerden birinde olduğu yeni bir makinede de gördüm . (Çünkü yürütülemeyen bir komut kesinlikle etkileşimli değildir!)