如何让Emacs的显示从不同的字符实际存储?(How to let Emacs display a

2019-08-03 06:19发布

我想实现动态文本替换(只显示被替换,实际存储的文件不会被替换)为Emacs,使用elisp的。

例如,在LaTeX文档,我要输入\alpha ,让Emacs的显示它就像α ,所以它更容易阅读。 但在结果.tex文件,我还是想\alpha ,而不是α进行保存。 (注:我可以使用的XeTEX或LuaTEX等程序自己直接支持UTF-8但对于合作和期刊要求的原因,我不希望被直接保存在该UTF-8字符。 .tex文件我也可以。在AUCTeX使用预览。但是,当我在编辑公式并不能帮助)

现有的例子是在组织模式,当我们键入[[link][name]] ,键入最后之后] ,所显示的文本由只是名字取代,超链接。 在另一方面,保存此文件时,所保存的内容是原来的[[link][name]] ,从显示的不同。

任何想法如何实现这一点的?

PS:该显示器规格也替换文本 Emacs手册的部分去接近。 但是,我需要指定的,而不是用于替换所需的字符串的起点和终点。 这意味着我需要每个用户输入后做搜索来决定起点和终点。 这看起来不切实际由于性能和算法的复杂性。

Answer 1:

这样做的一个方法是添加字体锁定关键字的相关模式,并利用compose-region来代替旧的字符串,以显示新的符号:

(font-lock-add-keywords
 'latex-mode `(("\\(\\\\alpha\\)"
                (0 (progn (compose-region (match-beginning 1)
                                          (match-end 1) "α")
                          nil)))))

另请注意, org-mode有这种已经内置,不仅为链接,正如你所说,也为乳液状实体的特征:

(setq org-pretty-entities t)


文章来源: How to let Emacs display a different character from that actually stored?
标签: emacs elisp