emacs的LF占一个空格的位置,并且也会被underline?

如图,设置了org-document-title的underline为t,结果在最后一个字符后面多了一截下划线出来。打开whitespace-mode查看,这个多的部分是在换行符后面的

在evil-mode下,光标移动不到这个空白上,退出evil-mode,光标可以移动上去,describe-char说这是LF。所以LF会显示为一个空白,并且当face设置了underline的时候,LF也会被underline,这个行为有选项能控制吗?能否不显示出这个空白?

这个没什么用的吧,删了就好,一行行的删除太麻烦,要写个脚本,批量删除,我所有的org文件都没有这个,可能有但我也发现不了,因为点保存时的时候每行都执行了rtrim()。不过我的代码是php的,不能通用

whitespace-cleanup 不起作用吗?

我也有这个问题, 我用 C-u C-x = 显示出来就是换行符. 可能要去看看 org 高亮的部分让他不要包含回车

是的,不起作用,whitespace-mode看起来,那后面什么都没有

我的光标都定位不到那里去,没法describe-char

我试着把org相关的插件都关了,只保留org,还是同样的现象。

如果我给 org-document-title 加个 box,打开文档的时候能看到一个动态的过程:

ezgif.com-video-to-gif

1 个赞

有可能只是下划线的显示出bug了,那里其实并没有字符,你开fundermental-mode确认下?

对,那里确实没有字符

我发现如果关掉evil-mode,光标是可以移动过去的,这时候describe char,显示这个位置就是换行 (C-j)

这时候问题变成了:为什么C-j会占一个位置?并且还会被加上下划线?我试了emacs -q,结果是一样的

最终在org-mode下,通过font-lock解决了

给换行定义一个单独的font-lock,禁止underline

(defface org-dont-underline-eol '((t :underline nil))
  "Avoid underlining of eol char")

(defun org-dont-underline-eol ()
  "Remove underlining eol"
  (font-lock-add-keywords 'org-mode '(("\n" 0 'org-dont-underline-eol t))))
1 个赞