在emacs中保存时如何自动压缩(使用自定义脚本)文件?

时间:2014-02-21 21:59:31

标签: emacs elisp

这个问题是我之前的问题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”将原始文件保存回来而不是编辑的缓冲区访问文件。如何将编辑后的缓冲区压缩回文件?

1 个答案:

答案 0 :(得分:2)

删除defadvice黑客而不是tksavetkopen使用作为“unix过滤器”的程序(即从stdin获取输入并将其输出发送到stdout)。

对于tkopen,您可能会因运行tkopen /dev/stdin而逃脱。也许对于tksave,您可能也会使用tksave /dev/stdin。但是这两个命令都完全依赖于这两个命令的工作方式(例如,如果你tkopen /foo/bar在哪里发送了未压缩的结果?tksave /foo/bar相同。