如何在Mac OS X上修复emacs弹出对话框?


5

我在这里没有想法 - 当打开弹出对话框时,我的emacs崩溃了。在X-弹出式对话框的功能可能是个原因,但我没有找到解决办法了这一点。我的Emacs版本是23.1.1。不幸的是,emacs的一些功能调用它(ex自定义询问是否应该保存更改)导致崩溃。

有人知道如何解决或禁用它吗?


该bug被标记为moreinfodebbugs.gnu.org/cgi/bugreport.cgi ? bug= 2877也许有人可以让球再次滚动?
legoscia 2010年

Answers:


5

这是一个快速的elisp位,它将完全禁用图形对话框:

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

将此添加到您的.emacs中,它将禁用使用emacs使用的两种形式的yes-or-no提示的图形对话框。


那是我的一天。但是如何防止其他事件弹出对话框?即flymake坚持在遇到致命错误时弹出此对话框 - 再次崩溃emacs。有没有办法在全球范围内做到这一点?
radekg 2010年

实际上,对于flymake而言,就像设置自定义变量一样简单。
radekg 2010年

1
除了上述内容之外,您还需要:( defadvice message-box(防止对话框激活)“阻止消息框激活对话框”(应用#'消息(ad-get-args 0)))
mernst

这个答案对我来说并不完全有效,cmd-T仍打开本机字体选择器
Dustin Getz 2015年

2

哇。我从来没有注意到这一点,但x-popup-dialog对我来说似乎也是一个问题。至少示例对话框崩溃了。如何自定义以显示对话框?我无法重现它。

一般来说,规则是:如果你从键盘上执行它,它将不会用完对话框。例如,使用C-x k鼠标代替鼠标来关闭缓冲区,你就不会得到任何对话框。另外,更严厉的方式,是设置use-dialog-boxnil(虽然这并不能阻止x-popup-dialog从如果直接调用,因此它可能不是解决问题的工作)。要解决这个问题,你可能需要建议x-popup-dialog,例如重新实现它completing-read,永远不要打电话ad-do-it。或者你可以解决这个问题。我不确定哪个更容易:-)


点击“保存进一步的会话”时,自定义询问是否要保存缓冲区的所有更改。我认为在carbon-emacs中它使用迷你缓冲区。:/我会尝试将use-dialog设置为nil并查看它是否有帮助。但是当我回到家时会发生这种情况。谢谢你的回答!

1
如果你点击一个按钮,自定义会弹出一个对话框,如果按下按钮上的Enter键就会使用迷你缓冲区
Justin Smith 2010年

对我来说,主要的问题是当我认为我的浏览器聚焦时“cmd-T”这样的东西
Dustin Getz 2015年

@DustinGetz,这是一个完全不同的问题。您可以通过取消绑定特定键来解决这个问题,例如(global-set-key "\M-t" nil)
Ivan Andrus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.