代码之家  ›  专栏  ›  技术社区  ›  Adam Lindberg

在Emacs中,如何根据缓冲区名称自动启用次要模式?

  •  14
  • Adam Lindberg  · 技术社区  · 15 年前

    我有一个emacs扩展,它创建一个名为 *erl-output* . 创建此缓冲区时只使用 fundamental-mode 默认情况下。有自动启用的方法吗 compilation-minor-mode 在那个缓冲区?

    2 回复  |  直到 11 年前
        1
  •  20
  •   Steve Pitchers D V Santhosh Kiran    11 年前

    要自动更改主要模式,可以将以下内容添加到.emacs文件中:

    (add-to-list 'auto-mode-alist '("^\\*erl-output\\*$" . my-major-mode))
    

    这对你不起作用,是为了 专业 模式选择之后 少数的 模式选择。

    你可以试试 Hook . 手册上说:

    hook是一个lisp变量,它包含函数列表,在一些定义良好的场合调用。

    因此,您应该能够编写一个函数,在需要时设置次要模式。看着 List of Standard Hooks 我觉得你应该尝试一下 temp-buffer-setup-hook or temp-buffer-show-hook .

    您必须编写一个函数来检查缓冲区名称并设置模式(如果需要),然后使用下面的代码将其添加到钩子中。 .emacs :

    (add-hook 'temp-buffer-setup-hook 'my-func-to-set-mode)
    
        2
  •  4
  •   Trey Jackson    15 年前

    既然扩展正在创建缓冲区,为什么不添加:

    (compilation-mode)
    

    (或) (compilation-minor-mode) 如果您真的设置了次要模式的想法),在创建 *erl-output* 缓冲器。您可以编辑模式的源代码,或者使用有关创建例程的建议…