我有一堆相当冗长的xml文件,它们以某种方式命名,如"verbosefile _*.xml".我有一对python脚本将这些xml文件转换为紧凑的json格式,反之亦然.目前我的工作流程是我首先使用我的脚本将详细的xml文件转换为紧凑的json文件,对该文件进行更改或编辑,然后将紧凑的json版本转换回详细的xml格式.每当我在emacs中访问/打开文件时,我都希望这个过程透明地发生.基本上,我的新工作流程应该是直接从编辑器打开详细的xml文件时,我应该看到紧凑的json表示,并且在写入文件时,json应该在后台转换为详细的xml格式并写入.关于如何做到这一点的一些提示将是伟大的.我是elisp和emacs钩子/函数的新手,即使我已经使用了编辑器一段时间了.
编辑:我可以更改python脚本,使事情更容易.例如,如果处理std输入的脚本使问题更容易解决,我可以这样做.
有各种方法可以做你要求的.
其中之一,意味着"规范的方式"(虽然它似乎不经常使用)是使用format-alist
.在您的情况下,格式的检测基于文件名而不是文件内容,因此您要全局添加format-alist
REGEXP部分为零的条目.然后你设置一个特殊的模式auto-mode-alist
,该模式将通过缓冲区的内容通过你的第一个脚本(带call-process-region
)开始,然后设置buffer-file-format
为表明你正在使用你添加的格式format-alist
.
另一种选择是使用a file-name-handler-alist
,就像我们对.gz文件一样.
另一种选择是使用一种特殊模式(如上),但设立的,而不是format-alist
和buffer-file-format
,你会简单地(add-hook 'write-file-functions #'my-write-hook nil t)
并my-write-hook
使用第二脚本保存文件.