Tôi đang cố gắng kiểm tra xem server-running-p
có sẵn trong tệp .emacs của tôi trước khi gọi không. Tôi đã có những điều sau đây:Cách kiểm tra xem chức năng (ví dụ: máy chủ chạy-p) có sẵn trong Emacs không?
(if (not (server-running-p))
(server-start))
Nhưng trên một số máy tính mà tôi sử dụng Emacs, gọi (server-running-p)
đưa ra một lỗi vì nói gọi là không có sẵn. Vì vậy, tôi muốn kiểm tra xem nếu server-running-p
có sẵn trước khi gọi nó. Tôi nghĩ rằng boundp
sẽ thực hiện việc thử nhưng hãy gọi số (boundp 'server-running-p)
trả lại nil
ngay cả khi cuộc gọi (server-running-p)
thành công. Cách đúng để kiểm tra rằng việc gọi server-running-p
sẽ không thành công ... hoặc ít nhất là để ngăn chặn lỗi nếu cuộc gọi được nói không thành công. (Và loại đối tượng kỳ lạ nào là server-running-p
dù sao rằng boundp
trả về nil
, nhưng gọi nó thành công?)
Đây là trên Emacs 23.2.1, nếu có sự khác biệt.
Thực sự tìm thấy câu trả lời. Bạn phải sử dụng fboundp
cho điều này thay vì boundp
, vì một số lý do.
Lý do là bạn có thể có hàm và biến có cùng tên (ví dụ: 'font-lock-mode'). Do đó bạn cần các hàm khác nhau để hỏi "Đây có phải là một biến không?" và "Đây có phải là một chức năng không?" – cjm
Cảm ơn. Tôi đã hoàn toàn quên mất tính đặc thù của một số ngôn ngữ Lisp. Làm cho ý nghĩa hơn bây giờ. –