2011-07-06 3 views
9

tôi binded chức năng ngữ nghĩa-symref để chìa khóa Cc Cr như thế này:làm thế nào để trả lời có hoặc không tự động trong emacs

(global-set-key (kbd "C-c C-r") 'semantic-symref)

everytime tôi ép Cc Cr, nó nhắc nhở:

Tìm tài liệu tham khảo cho xxxxx? (y hoặc n)

Tôi có thể trả lời tự động như thế nào? Tôi tryed sử dụng chức năng lambda như thế này, nhưng thất bại

(global-set-key (kbd "C-c C-r") (lambda() (interactive) (semantic-symref "yes")))

Trả lời

1

Câu trả lời của @huitseeker khá gọn gàng và hiệu quả. Sau bốn năm, với fletdefadvice bị lỗi thời, tôi đã viết các chức năng sau để trả lời có tự động. Có thể nó hữu ích cho ai đó.

(defun my/return-t (orig-fun &rest args) 
    t) 
(defun my/disable-yornp (orig-fun &rest args) 
    (advice-add 'yes-or-no-p :around #'my/return-t) 
    (advice-add 'y-or-n-p :around #'my/return-t) 
    (let ((res (apply orig-fun args))) 
    (advice-remove 'yes-or-no-p #'my/return-t) 
    (advice-remove 'y-or-n-p #'my/return-t) 
    res)) 

(advice-add 'projectile-kill-buffers :around #'my/disable-yornp) 
7

Bạn có thể tư vấn ngữ nghĩa-symref với một cái gì đó như:

(defadvice semantic-symref (around stfu activate) 
     (flet ((yes-or-no-p (&rest args) t) 
      (y-or-n-p (&rest args) t)) 
     ad-do-it)) 

Ghi chú rằng bạn đang ở địa phương bỏ qua tất cả các xác nhận, vì vậy bạn có thể bắt các câu hỏi khác (khác) được kích hoạt bởi chính semantic-symref.

+0

không phải là [flet] (https://www.gnu.org/software/emacs/manual/html_node/cl/Obsolete-Macros.html) được coi là lỗi thời? nên sử dụng [cl-flet] (http://www.gnu.org/software/emacs/manual/html_node/cl/Function-Bindings.html) để thay thế? – average