Emacs:如何在特定模式下启用工具栏模式和菜单模式?

时间:2015-01-24 09:33:54

标签: emacs

我使用Emacs。但是,我不熟悉Lisp,虽然我知道一些函数式编程,因此我从未真正理解如何自定义init.el

基本上,我希望只有在R-mode时才能启用工具栏模式和菜单栏模式。

我知道启用这些模式只需要:

(tool-bar-mode 1)(menu-bar-mode 1)

但如果我想在本地执行此操作,即仅在我R-mode时才启用它们。

我应该在init.el中添加什么?

3 个答案:

答案 0 :(得分:3)

这个建议是可能的:

(defadvice select-window (after select-window-change-menubar activate)
  (let ((yes-or-no
         (if (memq major-mode '(r-mode lisp-interaction-mode))
             1 -1)))
    (menu-bar-mode yes-or-no)
    (tool-bar-mode yes-or-no)))

我现在在列表中添加了两种模式,lisp-interaction-mode就是 *scratch*缓冲区的模式,以便测试是否容易 建议工作。

这是非常烦人的,但同时也很酷。我希望是的 你想要什么。

答案 1 :(得分:0)

我在这里描述的功能与您的要求非常接近,但并不完全匹配。如果你真正需要的是在你不需要的时候没有工具栏,那么他们可能会有所帮助。

图书馆Tool-Bar+提供了两种限制工具栏显示时间的可能性:

  1. <强> tool-bar-here-mode

    仅为特定帧启用工具栏。工具栏的存在与否是框架事物,而不是窗口或缓冲/模式事物。如果存在,工具栏的实际内容(其图标)特定于所选窗口及其缓冲区。但是,是否显示工具栏与框架有关。

    使用命令tool-bar-here-mode启用显示所选框架的工具栏。您可以将其添加到模式挂钩,以便在启用给定模式时,工具栏也是如此:

       (add-hook 'info-mode (lambda () (tool-bar-here-mode 1)))
    

    但是当相同的帧不再显示具有该模式的缓冲区时,这不会关闭模式。在这方面,它没有完全回答你的问题。

  2. <强> tool-bar-popup-mode

    隐藏工具栏,只需在菜单栏中输入 Buttons 条目即可。单击它时,弹出工具栏以执行单个工具栏操作。所以:

    一个。点击Buttons - 弹出工具栏。

    湾单击工具栏图标以实现其操作 - 然后再次隐藏工具栏。

答案 2 :(得分:0)

对于工具栏,您可以将其绑定到其中一个鼠标按钮或按键序列。例如,在.emacs文件中尝试此操作:

(global-set-key [mouse-8] 'tool-bar-here-mode)
(tool-bar-pop-up-mode 1)

根据您的鼠标,您需要更改鼠标8&#39;反映您要绑定的鼠标按钮。 (提示,当Emacs有焦点时点击你想要的鼠标按钮,你会在底部看到一条消息,如:

未定义

或者,您可以绑定键盘上的键,例如:

(global-set-key (kbd "C-.") 'tool-bar-here-mode)

将它绑定到CTRL - 。