2009-08-09 21 views
64

Tôi nhận được một "đối số loại sai: commandp, (lambda nil (forward-line 5))" tại đây.Lỗi "đối số loại sai: commandp" khi liên kết một lambda với một khóa

(global-set-key [?\M-n] (lambda() (forward-line 5))) 

Lỗi là gì? Tôi khá chắc chắn nó đơn giản & Tôi đang thiếu một cái gì đó hiển nhiên.

+0

Bạn đang thiếu dấu ngoặc đơn đóng. Có lẽ không có trong mã của bạn mặc dù, chỉ trong câu hỏi. – hsribei

+0

Lưu ý: khi bạn trích dẫn hàm ẩn danh như vậy, nó sẽ không được biên dịch. Tôi tưởng tượng nó không có vấn đề lớn trong trường hợp của bạn, mặc dù. –

Trả lời

96

global-set-key hy vọng một lệnh tương tác. (lambda() (interactive) (forward-line 5)) nên hoạt động.

Nhân tiện, C-h f commandp là điểm khởi đầu khá tốt cho các lỗi tương tự.

30

Hình thức chính xác nên được này -

(global-set-key (kbd "M-n") (lambda() (interactive) (forward-line 5))) 

Vấn đề là bạn quên đặt (interactive) (như Brendan đề cập).

Nhân tiện, bạn sẽ nhận thấy rằng tôi đã sử dụng chức năng (kbd) để chỉ định khóa-ràng buộc. Chức năng đó vô cùng hữu ích vì bạn có thể đặt các ràng buộc chính gần như theo nghĩa đen.

Các vấn đề liên quan