日志文件 ansi-color-apply-on-region 保存问题

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)))
2 个赞