让 vc-revision-other-window 删除它获取的文件

Have vc-revision-other-window delete the file it fetched

在 Emacs 中调用 vc-revision-other-window 命令 (Ctrl-X v ~) 时,会在当前工作目录中下载一个修订版,这最终会污染它。有没有办法配置 emacs 以便将获取的修订存储在其他地方?

我看了一下 vc-find-revision,发现它实际上跳过了一些步骤,将修订版放入文件,然后打开该文件。所以我想我可以 short-circuit 那:

(defun vc-find-revision-in-temporary-buffer (rev)
  "Visit revision REV of the current file in another window.
The revision is showed in a temporary buffer; no file is written
to disk."
  (interactive
   (save-current-buffer
     (vc-ensure-vc-buffer)
     (list
      (vc-read-revision "Revision to visit (default is working revision): "
                        (list buffer-file-name)))))
  (let ((old-buffer-file-name (buffer-file-name)))
    (vc-ensure-vc-buffer)
    (when (string= rev "")
      (setq rev (vc-working-revision old-buffer-file-name)))
    (let ((new-buffer-name (vc-version-backup-file-name old-buffer-file-name rev)))
      (if (get-buffer new-buffer-name)
          (progn
            (message "Switching to existing buffer `%s'" new-buffer-name)
            (switch-to-buffer-other-window new-buffer-name))
        (let ((new-buffer (get-buffer-create new-buffer-name)))
          (vc-call find-revision old-buffer-file-name rev new-buffer)
          (switch-to-buffer-other-window new-buffer))))
    (goto-char (point-min))
    (let ((buffer-file-name old-buffer-file-name))
      (normal-mode))))

我创建了这个答案社区 wiki。欢迎改进!