在文件打开或编译模式下重写路径前缀next-error

时间:2011-06-21 18:57:44

标签: emacs tramp

我希望将t/...下的任何路径重写为n/...,而不是一般用于查找文件(或者由下一个错误启动)。我希望我无法打开t/...版本。

动机:我一直在将代码库从NFS(我编辑的地方)发送到/ tmp,所以我的构建速度更快(bjam,这很慢)。我想强制emacs打开NFS版本而不是/ tmp版本ALWAYS。我想有一些可以做到这一点的find-file钩子。有什么建议? Tramp可能不会这样做。

我很乐意改为重写编译缓冲区路径。

1 个答案:

答案 0 :(得分:2)

对于编译,您可以使用变量compilation-finish-functions,如下所示:

(add-hook 'compilation-finish-functions 'my-change-tmp-to-nfs)
(defun my-change-tmp-to-nfs (buffer &optional stat)
  "change tmp to nfs"
  (interactive "b")
  (save-excursion
    (set-buffer buffer)
    (goto-char (point-min))
    (let ((buffer-read-only nil))
      (while (re-search-forward "/tmp/" nil t)
        (replace-match "/nfs/")))))

现在,您可能需要更新"/tmp/"和替换的正则表达式。阅读Regexp Search。你也可以看中并实际检查你用替换创建的路径是否真的存在......