24.4.4 模式行中使用的变量

本节介绍被 mode-line-format 的标准值纳入模式行文本的变量。 这些变量本身并无特殊之处;如果修改 mode-line-format 的值以使用其他变量, 它们同样可以对模式行产生相同效果。但 Emacs 的多个模块在设置这些变量时, 均默认它们会控制模式行的相应部分;因此从实际使用角度来说,模式行必须使用这些变量。 另请参见 Optional Mode Line in The GNU Emacs Manual

Variable: mode-line-mule-info

该变量保存用于显示语言环境、缓冲区编码系统以及当前输入法相关信息的模式行构造值。 See Non-ASCII Characters

Variable: mode-line-modified

该变量保存用于显示当前缓冲区是否已被修改的模式行构造值。其默认值显示规则为: 缓冲区已修改时显示 ‘**’,未修改时显示 ‘--’, 只读时显示 ‘%%’,只读且已修改时显示 ‘%*’。

修改此变量不会强制刷新模式行。

Variable: mode-line-frame-identification

该变量用于标识当前框架。在可显示多个框架的窗口系统下,其默认值显示为 " "; 在同一时间仅显示单个框架的普通终端上,则显示为 "-%F "

Variable: mode-line-buffer-identification

该变量用于标识窗口中正在显示的缓冲区。其默认值显示缓冲区名称, 并使用空格填充至至少 12 列宽度。

Variable: mode-line-position

该变量用于指示缓冲区中的当前位置。其默认值显示缓冲区百分比, 并可选择显示缓冲区大小、行号与列号。

User Option: mode-line-percent-position

该选项在 mode-line-position 中使用,其值同时指定要显示的缓冲区百分比 (可为 nil"%o""%p""%P""%q" 之一, see 模式行中的 %-constucts)以及用于填充或截断的宽度。 建议使用 customize-variable 工具设置该选项。

Variable: vc-mode

每个缓冲区均局部生效的变量 vc-mode,用于记录缓冲区访问的文件是否受版本控制, 以及具体的版本控制类型。其值为显示在模式行中的字符串, 无版本控制时为 nil

Variable: mode-line-modes

该变量用于显示缓冲区的主模式与次要模式。其默认值还会显示递归编辑层级、 进程状态信息以及是否启用了缓冲区收缩。

Variable: mode-line-remote

该变量用于显示当前缓冲区的 default-directory 是否为远程路径。

Variable: mode-line-client

该变量用于标识 emacsclient 框架。

Variable: mode-line-format-right-align

mode-line-format 中,该符号之后的所有内容均会右对齐显示。

Variable: mode-line-right-align-edge

该变量精确控制 mode-line-format-right-align 将内容对齐到哪一侧。

以下三个变量在 mode-line-modes 中使用:

Variable: mode-name

该缓冲区局部变量保存当前缓冲区主模式的 “友好” 名称。 每个主模式都应设置此变量,以便模式名称显示在模式行中。 其值不必是字符串,可以使用模式行构造中合法的任意数据类型(see 模式行的数据结构)。 若要计算最终在模式行中显示的模式名称字符串,可使用 format-mode-line (see 模拟模式行格式化)。

Variable: mode-line-process

该缓冲区局部变量保存与子进程交互的模式中,用于显示进程状态的模式行信息。 它会紧跟在主模式名称后显示,中间无空格。例如,在 *shell* 缓冲区中, 其值为 (":%s"),可让 Shell 随同主模式一起显示状态,形如:‘(Shell:run)’。 通常该变量的值为 nil

Variable: mode-line-front-space

该变量显示在模式行最前端。默认情况下,此构造直接显示在模式行开头, 但若存在内存耗尽提示信息,则该信息会优先显示。

Variable: mode-line-end-spaces

该变量显示在模式行末尾。

Variable: mode-line-misc-info

用于显示杂项信息的模式行构造。默认情况下,它显示由 global-mode-string 指定的内容。

Variable: mode-line-position-line-format

当启用 line-number-mode(see Optional Mode Line in The GNU Emacs Manual)时, 用于显示行号的格式串。格式中的 ‘%l’ 会被替换为当前行号。

Variable: mode-line-position-column-format

当启用 column-number-mode(see Optional Mode Line in The GNU Emacs Manual)时, 用于显示列号的格式串。格式中的 ‘%c’ 会被替换为从 0 开始计数的列号, ‘%C’ 会被替换为从 1 开始计数的列号。

Variable: mode-line-position-column-line-format

当同时启用 line-number-modecolumn-number-mode 时, 用于显示行号与列号的格式串。格式符 ‘%l’、‘%c’ 与 ‘%C’ 的含义 参见前两个变量的说明。

Variable: minor-mode-alist

该变量保存一个关联列表,其元素用于指定模式行如何标识某个次要模式已激活。 minor-mode-alist 中的每个元素应为一个包含两个元素的列表:

(minor-mode-variable mode-line-string)

更一般地,mode-line-string 可以是任意模式行构造。 当 minor-mode-variable 的值非 nil 时,它会显示在模式行中,否则不显示。 这些字符串建议以空格开头,避免与前后内容连在一起。按照惯例, 某个次要模式激活时,其对应的 minor-mode-variable 会被设为非 nil 值。

minor-mode-alist 本身并非缓冲区局部变量。 如果某个次要模式可在各缓冲区独立启用,则列表中对应的变量应设为缓冲区局部生效。

Variable: global-mode-string

该变量保存一个模式行构造,默认情况下作为 mode-line-misc-info 的一部分显示在模式行中: 若启用了 which-function-mode,则显示在该次要模式信息之后; 否则显示在 mode-line-modes 之后。添加到此构造中的元素通常应以空格结尾 (以保证连续的 global-mode-string 元素正常显示)。 例如,命令 display-time 会将 global-mode-string 设置为引用变量 display-time-string,该变量保存包含时间与系统负载信息的字符串。

%M’ 构造会替换为 global-mode-string 的值。 默认模式行并未使用该构造,而是直接在 mode-line-misc-info 中使用此变量本身。

以下是 mode-line-format 默认值的简化版本。 实际默认值还会指定额外的文本属性。

("-"
 mode-line-mule-info
 mode-line-modified
 mode-line-frame-identification
 mode-line-buffer-identification
 "   "
 mode-line-position
 (vc-mode vc-mode)
 "   "
 mode-line-modes
 (which-function-mode ("" which-func-format "--"))
 (global-mode-string ("--" global-mode-string))
 "-%-")

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike