как автоматически ответить да или нет в emacs - PullRequest
9 голосов
/ 06 июля 2011

Я связал функцию semantic-symref с ключом C-c C-r вот так:

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

каждый раз, когда я нажимал C-c C-r , запрашивалось:

Найти ссылки на ххххх? (у или н)

Как я могу ответить на него автоматически? Я попытался использовать лямбда-функцию, как это, но не удалось

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

Ответы [ 2 ]

7 голосов
/ 06 июля 2011

Вы можете посоветовать semantic-symref что-то вроде:

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

Остерегайтесь того, что вы локально пропускаете все подтверждения, чтобы вы могли уловить дополнительные (другие) вопросы, вызванные самим semantic-symref.

1 голос
/ 08 февраля 2016

Ответ @huitseeker довольно аккуратный и эффективный. Через четыре года, когда flet и defadvice устарели, я написал следующие функции для автоматического ответа «да». Может быть, это кому-нибудь пригодится.

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