「Emacs」- Fill Column Indicator

  CREATED BY JENKINSBOT

问题描述

在现代编辑器中,比如 Eclipse,一般都会显示 Print Margin 竖线,通常在第 80 列处,以指示代码列宽,告诉我们单行代码不要写的太长。

我们需要使用该功能,以控制单行代码不要写的太长,提高代码可读性。(当然也有人喜欢关闭它,我们这里要介绍开启它)

该笔记将记录:在 GNU Emacs 中,如何启用打印边界(Print Marin)。

解决方案

方案一、使用 Fill Column Indicator 扩展

以前(09/16/2021)我们使用 EmacsWiki: Fill Column Indicator 扩展:
1)安装 fill-column-indicator 插件:M-x package-install RET fill-column-indicator
2)执行 fci-mode 命令:M-x fci-mode

如果希望默认启用,则需要在初始化文件中(~/.emacs),添加如下配置:

(define-globalized-minor-mode global-fci-mode fci-mode (lambda () (fci-mode 1)))
(global-fci-mode 1)

// 如果,仅希望在特定模式中启用,则添加如下配置
(setq enable-fci-mode-in '(groovy-mode nasm-mode shell-mode))
(define-globalized-minor-mode global-fci-mode fci-mode (lambda () (if (member major-mode enable-fci-mode-in) (fci-mode 1))))
(global-fci-mode 1)

# 02/03/2021 由于 Fill Column Indicator 存在问题,比如在 Customize Group 中会破坏页面布局、有时显示也会存在问题,所以我们不再使用它,而是使用 Emacs 27 内置的 Displaying Boundaries 功能。

方案二、使用 Displaying Boundaries 功能(推荐)

推荐原因是,这是 Emacs 27 内置的功能,与 Fill Column Indicator 类似,并且不存在使用 Fill Column Indicator 所遇到的问题。详细说明,参考 14.15 Displaying Boundaries 文档。

启用功能:M-x global-display-fill-column-indicator-mode

默认启用:M-x customize-variable RET global-display-fill-column-indicator-mode RET

参考文献

How can I get a ruler at column 80?
Emacs print margin column
https://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Minor-Modes.html%20
https://www.gnu.org/software/emacs/manual/html_node/eintr/lambda.html%20
emacs – Elisp List Contains a Value – Stack Overflow
elisp – emacs lisp, how to get buffer major mode? – Stack Overflow