主要还是用于在org文件中标记中文,论坛中提供了一些方法,比如
不过过滤空格的正则不太容易写,有些情况容易考虑不到。还有
使用org-extra-emphsis包,我用的时候好像有个什么warning,每次导出都提示‘org-odt-extra-styles’ and ‘org-ods-automatic-styles’ is updated for this session
。
我想重回零宽空格方案,但不想用org-extra-emphsis。我用的是doom-emacs,对whitepsace包的配置是
(setq whitespace-display-mappings
'((tab-mark ?\t [?› ?\t])
(newline-mark ?\n [?¬ ?\n])
(space-mark ?\ [?·] [?.])
(space-mark ?\u200B [?\u2423])))
在org-mode中查看whitespace-display-mappings
这个变量,显示为
((tab-mark 9
[8250 9])
(newline-mark 10
[172 10])
(space-mark 32
[183]
[46])
(space-mark 8203
[9251]))
但好像不工作,无法显示零宽空格。
(setq whitespace-space-regexp "\\( +\\|\u200b\\)")
(add-to-list 'whitespace-display-mappings '(space-mark #x200b [?▾]))
1 个赞
好像还是不能显示,不知道doom-emacs有什么特别的处理。复制你的代码,设置后变量的值为
((space-mark 8203
[9662])
(tab-mark 9
[8250 9])
(newline-mark 10
[172 10])
(space-mark 32
[183]
[46]))
whitespace-space-regexp
值为"\\( +\\|\\)"
,好像又被override了。doom-emacs中没有搜到配置这个变量,不知道又是在什么地方配置的,原来helpful可以显示变量在哪里被引用了,不过还是没有找到:
虽然,贴子中具体问题没有解决,但我把org-extra-emphsis中intraword emphasis相关代码单独提取出来了,够我用了。
下结论之前最好先验证。作为一名 Emacser,会用 Emacs -Q 并编写最小测试代码是基本要求。
$ emacs -Q --eval "\
(progn
(require 'whitespace)
(setq whitespace-space-regexp \"\\( +\\|\u200b\\)\")
(add-to-list 'whitespace-display-mappings '(space-mark #x200b [?▾]))
(let ((zero-width-space \"\u200b\"))
(insert \"foo\" zero-width-space \"bar\"))
(whitespace-mode))"
没有人有义务/能力帮你解决你配置中的问题。
我的意思不是你的代码不对,我原帖中也说了,可能是doom-emacs哪里设置了。我以后弄个空白的配置,专门测试用。
我又看了一下,其实没有被override,值显示就是零宽空格,不是显示\u200b,误导了我以为被override了。
我同意你,也不会认为谁有义务帮助谁,大家都是空闲时间友情帮忙,所以我也自己找问题,原先我以为whitespace-space-regexp
被override了,在.emacs.d和.doom.d文件搜索这个变量,没有发现除
这两个地方以外对这个变量赋值的,所以问题就暂时搁下了。
主要还是因为没有用emacs -Q测试的习惯/意识。我之前基本最多用纯净版的doom-emacs测试,这次也是doom-emacs配置的问题。我的想法是,如果有谁之前正好遇到过这种问题,或者凭借经验指点一下可能的问题,比一点点查找要快的多(很大可能我就找不到问题源头,doom-emacs 的module问题还可以一点注释掉,写在doom-emacs core里面的代码就不知道怎么排查)。感谢建议。
我也用doom一段时间了,doom确实很好用,主要是它其实并不只是一个configuration framework,doom实际上基于各个包自己实现了很多的额外的函数功能。比如 org 的折叠, za,zm,zr 这些
对应 vim 的折叠功能的 keybinding, 我查了一下发现对应的命令实际上都是 doom 自己实现的,而不是我以为只是帮你把 evil-collection,evil-org 之类的东西简单的做一下配置。
但是问题也是很明显的,如果要overriding doom的配置很麻烦,主要是很多常用的 with-eval-after-load 之类的东西都不能用,因为可能会和doom自己的配置打架,有的时候也心累。
等过段时间稍微有点精力,以及对 elisp 更熟悉一些了,打算从头搞自己的配置了,准备把自己使用的doom的modules的内容都看情况搬过来,至于core核心,启动优化的那些部分就太复杂了,打算找一些别人的自用的,不是按照框架标准来配置的抄一抄 (比如purcell,redguardtoo等自用配置的),doom的elisp代码有4万多行,真的复杂度有点太大了 (作为对比,prucell的emacs的配置是2000多行elisp)。