4

我想更改(或完全隐藏)出现在 Emacs 边缘(左侧和右侧)中的“弯曲箭头”字符。我在 Mac 上使用 Emacs 24,通过自制软件安装。我发现它在视觉上分散注意力。较小的字符(如中心点)可能效果很好。

对于上下文,这是小弯曲箭头的官方描述(来自http://www.gnu.org/software/emacs/manual/html_node/emacs/Continuation-Lines.html):

有时,缓冲区中的一行文本(逻辑行)太长而无法容纳在窗口中,而 Emacs 将其显示为两个或更多屏幕行。这称为换行或续行,长逻辑行称为续行。在图形显示上,Emacs 用左右窗口边缘的小弯曲箭头指示换行。在文本终端上,Emacs 通过在右边距显示一个 '\' 字符来表示换行。

Emacs LineWrap Wiki 页面没有解决我的问题。

到目前为止,我发现的最佳信息包含在这个 StackOverflow 答案中:

当文本终端 (-nw) Emacs 中的 word-wrap 设置为 nil 时,反斜杠字符出现在右边距。

在文本终端 Emacs 中将 word-wrap 设置为 t 时,不显示反斜杠字符。设置 visual-line-mode 也会将 word-wrap 设置为 true。

这在 Emacs 作为 GUI 窗口运行时不适用:无论 word-wrap 的值如何,小弯曲箭头都会出现在右边距。

是否可以隐藏或更改弯曲的箭头?如果不是,那么或多或少地说“我看过 X 并得出结论认为这是不可能的”的答案也可以。

更新:虽然这不是一个糟糕的解决方法,但改变边缘并不是想要的:我想自定义“弯曲箭头”字符或位图。

4

1 回答 1

7

首先,一些快速的上下文。来自Emacs Fringe Bitmaps:“边缘指示器是显示在窗口边缘的小图标,用于指示截断或连续的行、缓冲区边界等。”

您不能用任意文本替换卷曲箭头。根据lunaryorn对“是否可以在Emacs中用文本替换边缘位图?”的回答。

不它不是。边缘“位图”实际上是位图,即 0/1 位的矢量,覆盖在边缘上。没有办法直接将任意 unicode 字符渲染到边缘。[...] 您可以做的是自己将 unicode 字符渲染为 0/1 位图。

就像它说的那样,您可以更改位图。Fringe Bitmaps 包含一个边缘位图列表;left-curly-arrow并且right-curly-arrow是与这个问题相关的。

这是我画的。根据自己的喜好调整。把它放在你的 Emacs 初始化文件中。

(define-fringe-bitmap 'right-curly-arrow
  [#b00000000
   #b00000000
   #b00000000
   #b00000000
   #b01110000
   #b00010000
   #b00010000
   #b00000000])
(define-fringe-bitmap 'left-curly-arrow
  [#b00000000
   #b00001000
   #b00001000
   #b00001110
   #b00000000
   #b00000000
   #b00000000
   #b00000000])

更多文档可在Customizing Bitmaps获得,包括set-fringe-bitmap-face“为边缘设置面。如果面为 nil,则选择边缘面。位图的面控制绘制它的颜色”。

于 2014-11-09T02:53:27.500 回答