5

I'm out of ideas here - my emacs crashes when popup dialog is opened. The x-popup-dialog function is probably to blame but I found no workaround to this. My Emacs version is 23.1.1 . Unfortunately some functionality of emacs calls this (e.x. customize asks whether it should save the changes) which causes the crash.

Does anybody know how to fix it or disable it?

1

2 Answers 2

5

Here's a quick elisp bit that will completely disable the graphical dialog for you:

(defadvice yes-or-no-p (around prevent-dialog activate)
  "Prevent yes-or-no-p from activating a dialog"
  (let ((use-dialog-box nil))
    ad-do-it))
(defadvice y-or-n-p (around prevent-dialog-yorn activate)
  "Prevent y-or-n-p from activating a dialog"
  (let ((use-dialog-box nil))
    ad-do-it))

Add this to your .emacs and it'll disable the use of the graphical dialog for the two forms of yes-or-no prompts that emacs uses.

4
  • That made my day. However how to prevent other events from poping dialog box? I.e. flymake insist on popping this dialog when it encounters fatal error - which crashes emacs again. Is there a way to do it on global level?
    – radekg
    Mar 31, 2010 at 15:40
  • Actually, for flymake that was as easy as setting the custom-variable.
    – radekg
    Mar 31, 2010 at 16:05
  • 1
    In addition to the above, you also need: (defadvice message-box (around prevent-dialog activate) "Prevent message-box from activating a dialog" (apply #'message (ad-get-args 0)))
    – mernst
    Sep 23, 2014 at 10:15
  • This answer did not completely work for me, cmd-T still opens the native font chooser Feb 14, 2015 at 19:01
2

Wow. I had never noticed that, but x-popup-dialog seems to be a problem for me too. At least the example dialog crashed for me. How do you get customize to bring up a dialog? I can't reproduce it.

In general the rule is: if you do it from the keyboard it won't use up a dialog. e.g. use C-x k instead of the mouse to close a buffer and you'll get no dialog. Another, more heavy-handed way, is to set use-dialog-box to nil (though that doesn't stop x-popup-dialog from working if called directly so it may not fix the problem). To fix that you would probably have to advise x-popup-dialog, reimplement it using for example completing-read and never call ad-do-it. Or you could fix the bug. I'm not sure which would be easier :-)

4
  • Customize asks whether I want to save all changes for the buffer when hitting "Save for futher sessions". I thought in carbon-emacs it uses mini-buffer. :/ I will try setting use-dialog to nil and see whether it helps. But this will happen when I get home. Thanks for the answer!
    – radekg
    Mar 29, 2010 at 7:42
  • 1
    custom pops up a dialog if you mouse click a button, and uses the minibuffer if you hit enter on the button Apr 9, 2010 at 0:43
  • The main problem for me is things like "cmd-T" for when I thought my browser was focused Feb 14, 2015 at 19:02
  • @DustinGetz, that's a completely different problem underneath. You can fix that by unbinding the particular key, e.g. (global-set-key "\M-t" nil) Feb 14, 2015 at 21:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.