Anda kehilangan tanda kurung tutup. Mungkin tidak dalam kode Anda, hanya dalam pertanyaan.
Helder S Ribeiro
Sebagai catatan tambahan: ketika Anda mengutip fungsi anonim seperti itu, itu tidak akan dikompilasi. Saya membayangkan itu bukan masalah besar dalam kasus Anda.
Saya pikir tidak ada sisi negatifnya. Dari dokumentasi: >> "Panggilan" ke 'interaktif' sebenarnya adalah deklarasi, bukan fungsi; itu memberitahu 'panggilan-interaktif' bagaimana membaca argumen untuk diteruskan ke fungsi. Ketika benar-benar dipanggil, 'interaktif' hanya mengembalikan nol.
Dangelov
Jadi menurut (commandp)dokumentasi, fungsi lambda dengan panggilan tingkat atas (interactive)berfungsi, tetapi bagaimana saya bisa mendefinisikan fungsi dengan panggilan (defun)itu?
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 .emacsfile 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!)
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.sumber
(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.sumber
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!)sumber