代码之家  ›  专栏  ›  技术社区  ›  Damian Nadales

让vc修订版其他窗口删除它获取的文件

  •  1
  • Damian Nadales  · 技术社区  · 7 年前

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   legoscia    7 年前

    我看了一下 vc-find-revision ,并发现它实际上跳过了一些限制,将修订内容放入文件中,然后打开该文件。所以我想我可以把它短路:

    (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))))
    

    我在社区维基上回答了这个问题。欢迎改进!