30.4.2 初始框架参数

你可以在初始化文件中设置 initial-frame-alist, 以此指定启动时初始框架的参数(see 初始化文件)。

User Option: initial-frame-alist

该变量的值是一个参数关联列表,用于创建初始框架。 你可以设置该变量来指定初始框架的外观,而不影响后续创建的框架。 每个元素的格式为:

(parameter . value)

Emacs 在读取初始化文件之前就会创建初始框架。 读取完该文件后,Emacs 会检查 initial-frame-alist, 并将修改后的参数设置应用到已经创建好的初始框架上。

如果这些设置影响框架的几何属性和外观,你会先看到框架以错误样式显示, 然后再切换为指定的样式。如果对此感到困扰,可以通过 X 资源指定相同的几何与外观设置; X 资源会在框架创建前就生效。See X Resources in The GNU Emacs Manual.

X 资源设置通常对所有框架生效。如果你只想为初始框架设置某些 X 资源, 而不希望它们作用于后续框架,可以按以下方式实现: 在 default-frame-alist 中设置参数,覆盖后续框架的 X 资源; 然后为了避免这些设置影响初始框架,在 initial-frame-alist 中传入与 X 资源一致的参数值。

如果这些参数中包含 (minibuffer . nil), 则表示初始框架不自带迷你缓冲区。 这种情况下,Emacs 会同时创建一个独立的 仅迷你缓冲区框架(minibuffer-only frame)

User Option: minibuffer-frame-alist

该变量的值是一个参数关联列表,用于创建初始的仅迷你缓冲区框架 (即当 initial-frame-alist 指定框架无迷你缓冲区时,Emacs 自动创建的框架)。

User Option: default-frame-alist

这是一个关联列表,用于指定所有 Emacs 框架的默认参数值—— 包括第一个框架以及后续所有框架。 在 X 窗口系统下,很多情况下使用 X 资源也能达到相同效果。

设置该变量不会影响已经存在的框架。 此外,在独立框架中显示缓冲区的函数, 可能会传入自身参数以覆盖默认参数。

如果你通过命令行选项指定框架外观启动 Emacs, 这些选项会通过向 initial-frame-alistdefault-frame-alist 添加元素来生效。只影响初始框架的选项(如 ‘--geometry’ 和 ‘--maximized’) 会添加到 initial-frame-alist;其他选项则添加到 default-frame-alist。 see Command Line Arguments for Emacs Invocation in The GNU Emacs Manual