这个问题是我之前的问题How to automatically decompress a custom compressed file when opened in emacs?的后续问题。基于此,我能够调整我的init.el如下
(defadvice jka-compr-info-compress-args (around eval-args activate)
"Evaluate program arguments"
(setq ad-return-value (mapcar 'eval (aref info 3))))
(defadvice jka-compr-info-uncompress-args (around eval-args activate)
"Evaluate program arguments"
(setq ad-return-value (mapcar 'eval (aref info 6))))
(add-to-list 'jka-compr-compression-info-list
["\\.tk\\'"
"TKing" "tksave" (filename)
"unTKing" "tkopen" (filename)
nil t ""])
“tk”是一个自定义压缩工具,在我的自定义内部使用。 “tksave”和“tkopen”分别是用于压缩和解压缩的相应命令。当我打开文件时,“tkopen”通过自动解压缩工作正常但“tksave”将原始文件保存回来而不是编辑的缓冲区访问文件。如何将编辑后的缓冲区压缩回文件?
答案 0 :(得分:2)
删除defadvice
黑客而不是tksave
和tkopen
使用作为“unix过滤器”的程序(即从stdin获取输入并将其输出发送到stdout)。
对于tkopen
,您可能会因运行tkopen /dev/stdin
而逃脱。也许对于tksave
,您可能也会使用tksave /dev/stdin
。但是这两个命令都完全依赖于这两个命令的工作方式(例如,如果你tkopen /foo/bar
在哪里发送了未压缩的结果?tksave /foo/bar
相同。