【发布时间】:2020-07-16 17:49:45
【问题描述】:
我希望 Emacs 在指定列(例如第 80 列)而不是在屏幕边缘显示续行。这可能吗?我知道我可以使用visual-line-mode 并可能将其配置为以某种预定义的宽度软断行,但我更喜欢处理逻辑行,因此不想使用visual-line-mode。
【问题讨论】:
标签: emacs
我希望 Emacs 在指定列(例如第 80 列)而不是在屏幕边缘显示续行。这可能吗?我知道我可以使用visual-line-mode 并可能将其配置为以某种预定义的宽度软断行,但我更喜欢处理逻辑行,因此不想使用visual-line-mode。
【问题讨论】:
标签: emacs
设置窗口边距或多或少会这样做,但会导致一些问题(至少会干扰拆分窗口)。
如果您想深入挖掘,这可能是一个起点。
(defvar my-right-margin-column 80
"Used by `my-right-margin-update'.")
(defun my-right-margin-update ()
"Make the right margin occupy all space beyond `my-right-margin-column'.
See `my-right-margin-auto-update'."
(set-window-margins
nil 0 (max 0 (- (+ (window-text-width)
(or (cdr (window-margins)) 0))
my-right-margin-column)))
(set-window-parameter nil 'min-margins '(0 . 0)))
(defun my-right-margin-auto-update ()
"Configure buffer-local `window-configuration-change-hook'."
(add-hook 'window-configuration-change-hook
#'my-right-margin-update nil :local))
(add-hook 'text-mode-hook #'my-right-margin-auto-update)
【讨论】:
C-h i g (elisp)Window Parameters 表示拆分是由窗口参数min-margins 进行的,它本质上是为了支持您的用例而添加的。另见debbugs.gnu.org/cgi/bugreport.cgi?bug=24193。我已经添加了一个……最有效的用法?您可能需要在拆分后重新平衡窗口。该手册还建议window-size-change-functions 将比window-configuration-change-hook 更可靠。