Search code examples
emacslambdalispelisp

how to answer yes or no automatically in emacs


I binded function semantic-symref to key C-c C-r like this:

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

everytime I pressed C-c C-r, it prompted:

Find references for xxxxx? (y or n)

How can I answer it automatically? I tryed using lambda function like this, but failed

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


Solution

  • The answer by @huitseeker is quite neat and effective. After four years, with flet and defadvice being obsolete, I wrote the following functions to answer yes automatically. Maybe it's useful for someone.

    (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)