2

When you want to do something, you get sometimes a confirmation prompt in the minibuffer, with pressing yes or no to proceed.

I'm aware that you could change this with typing y instead yes with the following setting.

(fset 'yes-or-no-p 'y-or-n-p)  ;; Ask for y/n instead of yes/no

I'm wondering if you could configure this in a way that he will accept RET as y?

ReneFroger
  • 3,850
  • 23
  • 66
  • 2
    Yes; redefine y-or-n-p to treat RET the same as y. (Personally, I find that if Emacs uses yes-or-no-p it usually has a good reason for it.) – Drew Oct 09 '15 at 23:46
  • Drew, in the source code of y-or-n-p, there is a conditional that reads the input from the string: ((member str '("y" "Y")) (setq answer 'act)) So I need to read the key instead a string. I have looked into the Emacs documentation how to receive key inputs from , without result. Any suggestion? – ReneFroger Oct 10 '15 at 09:44
  • The way the function is written, a blank string "" equals RET -- i.e., read-string. Evaluate: (read-string "Hello-World: ") and then press the return key and watch the echo area. – lawlist Oct 10 '15 at 15:28

1 Answers1

3

As @phils commented simply redefining the key in query-replace-map will effect other things as well. The following copies the key-map to avoid that:

(defun y-or-n-p-with-return (orig-func &rest args)
  (let ((query-replace-map (copy-keymap query-replace-map)))
    (define-key query-replace-map (kbd "RET") 'act)
    (apply orig-func args)))        

(advice-add 'y-or-n-p :around #'y-or-n-p-with-return)
clemera
  • 3,451
  • 14
  • 40
  • It didn't worked out. When I mark multiple files in Dired, and delete it. I need to confirm with yes-or-no to delete the files. When I press RET, then it will not work. When I press y, it will work. So it seems me that there is an error in your solution? – ReneFroger Oct 10 '15 at 11:00
  • @ReneFroger Hm, don't know whats wrong. Does it work when you just eval (y-or-n-p "test")?. I don't use dired, maybe this is not the function which get's called? – clemera Oct 10 '15 at 11:42
  • Are you sure it works properly on your side? – ReneFroger Oct 10 '15 at 14:25
  • @ReneFroger Yes, it works. I tried it with emacs -Q and it works as well. – clemera Oct 10 '15 at 14:38
  • You're right, it turned out that I disabled the (fset 'yes-or-no-p 'y-or-n-p) setting. Now fixed and your snipping works like a charm. – ReneFroger Oct 11 '15 at 16:04