Saya mendapatkan "Argumen jenis salah: commandp, (lambda nil (baris depan 5))" di sini.
(global-set-key [?\M-n] (lambda () (forward-line 5)))
Apa kesalahannya? Saya cukup yakin itu sederhana & saya kehilangan sesuatu yang jelas.
Saya mendapatkan "Argumen jenis salah: commandp, (lambda nil (baris depan 5))" di sini.
(global-set-key [?\M-n] (lambda () (forward-line 5)))
Apa kesalahannya? Saya cukup yakin itu sederhana & saya kehilangan sesuatu yang jelas.
Jawaban:
global-set-key
mengharapkan perintah interaktif. (lambda () (interactive) (forward-line 5))
harus bekerja.
Omong-omong, C-h f commandp
ini adalah titik awal yang cukup bagus untuk kesalahan seperti itu.
(commandp)
dokumentasi, fungsi lambda dengan panggilan tingkat atas (interactive)
berfungsi, tetapi bagaimana saya bisa mendefinisikan fungsi dengan panggilan (defun)
itu?
Bentuk yang benar harus seperti ini -
(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))
Masalahnya adalah Anda lupa meletakkannya (interactive)
(seperti yang disebutkan brendan).
Ngomong-ngomong, Anda akan melihat bahwa saya menggunakan (kbd)
fungsi untuk menentukan pengikatan kunci. Fungsi itu sangat berguna karena Anda dapat meletakkan key-binding secara harfiah.
Saya juga melihat kesalahan ini pada mesin baru tempat saya menggunakan .emacs
file biasa tetapi belum menginstal paket saya, dan perintah yang akan dijalankan ada di salah satu paket tersebut. (Karena perintah yang tidak dapat dijalankan pasti tidak interaktif!)