2011-07-06 15 views
9

I binded función semántica-symref a la clave Cc Cr así:cómo responder sí o no automáticamente en emacs

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

cada vez que presiona Cc Cr, que se le solicite:

¿Busca referencias para xxxxx? (y o n)

¿Cómo puedo responderlo automáticamente? He probado usando la función lambda como este, pero no logró

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

Respuesta

1

La respuesta de @huitseeker es bastante clara y efectiva. Después de cuatro años, con flet y defadvice siendo obsoletos, escribí las siguientes funciones para responder afirmativamente. Tal vez es útil para alguien.

(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

Puede aconsejar semántico-symref con algo como:

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

Tenga en cuenta que usted está pasando por alto todas las confirmaciones de forma local, por lo que puede atrapar otras preguntas (otras) desencadenadas por la semántica semántica misma.

+0

no es [flet] (https://www.gnu.org/software/emacs/manual/html_node/cl/Obsolete-Macros.html) considera obsoleto? ¿Debería usar [cl-flet] (http://www.gnu.org/software/emacs/manual/html_node/cl/Function-Bindings.html) en su lugar? – average

Cuestiones relacionadas