ansi-color-apply-on-region
会修改文件的内容,关闭修改过的文件,自然就需要你决定是否需要保存。
如果你不想修改文件的内容,可以自己想办法写个不会修改文件的 ansi-color-apply-on-region
(应该是可以的,不过我不清楚怎么实现)。
一个比较容易想到的 work-around 就是用一个临时的 Buffer 显示文件的内容,这样修不修改都无所谓。
(defun my-view-file (file)
"查看包含 Escape 序列的文件."
(interactive "fFile: ")
(with-current-buffer (get-buffer-create (format "*View %s*" file))
(read-only-mode -1)
(erase-buffer)
(insert-file-contents file)
(ansi-color-apply-on-region (point-min) (point-max))
(read-only-mode)
(switch-to-buffer (current-buffer))))
另一个 work-around 就是把当前 Buffer 和文件的关联取消掉,差不多就相当于用一个临时的 Buffer。
(defun my-display-ansi-colors ()
(interactive)
(let ((inhibit-read-only t))
(ansi-color-apply-on-region (point-min) (point-max))
(set-visited-file-name nil)))