EMACS:打开新缓冲区时自动运行函数

3
我该如何在打开新缓冲区时自动运行函数,比如 text-scale-adjust

1
除了特定于模式的钩子之外,还有一个名为“find-file-hook”的钩子。 - abo-abo
@abo-abo:不适用于非文件缓冲区。 - Drew
2个回答

5

abo-abo的答案稍微详细一些:

(add-hook 'find-file-hook
          '(lambda () (text-scale-adjust 1)))

这将对您访问的所有文件运行。如果您想定制哪些类型的文件/缓冲区需要此处理,则可以查看特定模式的钩子。

在最新版本的Emacs中,在(lambda ...)前面放置引号会创建一个错误消息(在启动Emacs或加载文件时),指出有多余的引号。 lambda是自引用的,因此应该将引号移除。 - lawlist
不支持非文件缓冲区。 - Drew
同意@Drew的观点,它对非文件缓冲区没有帮助。 - Truong Ha

3
你可以看看这些“hooks”:
  • after-change-major-mode-hook
  • change-major-mode-hook
  • change-majory-mode-after-body-hook
  • first-change-hook
  • window-configuration-change-hook
但你能否澄清真正的目的是什么呢?
如果你只想让“所有缓冲区显示更大或更小的文字”,那么只需要完成以下“之一”即可:
  • 从菜单栏中选择:选项 > 设置默认字体……

  • 将此放入您的初始文件中:(set-frame-font "所需字体,带有适当的大小" nil t)

  • 在一开始时为所有框架设置您想要的默认字体大小,通过自定义default-frame-alist与框架参数font

换句话说,设置框架的字体大小,而不是缩放所有缓冲区的文本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接