现象
使用flymake/flycheck的时候,在fringe上有标记的地方,旁边会出现白色的区块挡住代码,如图:
关闭flymake/flycheck:
打开:(vs
,ms
两个变量被遮住了
用region选中看得更清楚些:
point移到字母v
上能看到字母,说明不是childframe:
describe-char
结果:
position: 565 of 830 (68%), column: 4
character: v (displayed as v) (codepoint 118, #o166, #x76)
charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x76
script: latin
syntax: w which means: word
category: .:Base, L:Left-to-right (strong), a:ASCII, l:Latin, r:Roman
to input: type "C-x 8 RET 76" or "C-x 8 RET LATIN SMALL LETTER V"
buffer code: #x76
file code: #x76 (encoded by coding system undecided-unix)
display: by this font (glyph code)
mac-ct:-*-SF Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1 (#x2DB)
Character code properties: customize what to show
name: LATIN SMALL LETTER V
general-category: Ll (Letter, Lowercase)
decomposition: (118) ('v')
There are text properties here:
face font-lock-variable-name-face
fontified t
[back]
displayed as v
那个地方,显示正常(而不是白色)
总结
describe-char
的结果表明也不是overlay或者text property的问题。另外能看到白色区块并不是以字母为单位(比如有的地方遮住一半的字母),也说明不是overlay/text property,而是更底层的问题。但是(visible-frame-list)
只返回了一个frame,加上之前的分析也表明不是childframe。这样一来似乎只能是redisplay的问题了,然而我对emacsredisplay了解基本为零。
有谁遇到过这个问题或是了解么可能的原因的么?
重现
emacs -q
(打开elisp文件)
M-x flymake-mode
Emacs 版本: GNU Emacs 26.1.90 (build 1, x86_64-apple-darwin18.2.0, NS appkit-1671.20 Version 10.14.3 (Build 18D109)) of 2019-06-07
系统:macOS 10.14.3 (18D109)