Переписывание префиксов пути при открытии файла или в следующей ошибке в режиме компиляции - PullRequest
2 голосов
/ 21 июня 2011

Я хочу, чтобы любые пути в t/... были переписаны в n/... вместо этого для поиска файла вообще (или так же, как инициировано next-error). Я хочу, чтобы я не смог открыть t/... версию.

Мотивация: я перекомпилировал кодовую базу из NFS (где я редактирую) в / tmp, поэтому моя сборка происходит быстрее (bjam, что довольно медленно). Я хочу заставить emacs ВСЕГДА открывать версию NFS вместо версии / tmp. Я предполагаю, что есть какой-то хук поиска файла, который может сделать это. Какие-либо предложения? Бродяга, вероятно, не делает этого.

Я был бы так же рад, если бы вместо этого были переписаны пути моего буфера компиляции.

1 Ответ

2 голосов
/ 22 июня 2011

Для компиляции вы можете использовать переменную 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 . Вы также можете получить фантазию и проверить, существует ли путь, созданный вами подстановкой ...

...