打开一个日志文件,显示为
e[1me[35m (9.6ms)e[0m e[1me[34m
使用
(defun display-ansi-colors ()
(interactive)
(let ((inhibit-read-only t))
(ansi-color-apply-on-region (point-min) (point-max))))
后正常显示日志颜色。
但是同时也生成了一个修改后的备份(原文件是read-only-mode),以至于kill 日志等操作都要提示是否保存该备份。
有没有办法不生成或者默认帮忙杀掉该修改后的文件?
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 个赞