2009-12-06 2 views
8

Я просматривал документацию и пробовал настройку и различные вещи, но независимо от того, что я делаю, кажется, что Flymake всегда помещает свои временные файлы в любой каталог, в котором находится исходный файл.Настройка flymake для использования определенного каталога для временных файлов?

Главная Причина в том, что это большое дело, потому что, когда я перешагиваю свои программы с помощью gdb, иногда я вхожу в файл STL или другой файл в не-пользовательском каталоге. Часто это приводит к тому, что мой gdb-процесс перестает реагировать по какой-то причине, а это значит, что мне нужно вернуться к началу или вообще отключить Flymake или надеяться, что мне не нужно делать другой файл-find в каталоге, который мой процесс emacs не имеет права на запись.

Есть ли хороший способ заставить flymake всегда генерировать свои временные файлы, например. ~/.emacs.d/tmp?

ответ

5

Последние версии Emacs только сохранить "InPlace". Вот быстрый взлом, чтобы сэкономить «intemp»: http://blog.arithm.com/2011/01/27/save-_flymake-files-in-a-temporary-directory/

+0

Мне пришлось немного модифицировать defun для python/flymake., Но это действительно сработало. Я добавил свой измененный defun на эту страницу в качестве комментария. И ему нужно определить «временный файл-каталог», как в ответе Джонатана Линдена. – quodlibetor

+0

@quodlibetor Вы нашли общий способ, который не требует отдельного указания для нескольких режимов, но в целом (LaTeX, Python и т. Д.)? – PascalVKooten

+0

sorry @Dualinity Мне не нужно было этого достаточно, чтобы попытаться сделать это общим. – quodlibetor

0

Не уверен, но для C# flymake переопределяет функцию flymake-get-make-cmdline.

Он возвращает строку, командную строку для запуска flymake. Я полагаю, вы могли бы изменить эту функцию, чтобы вернуть все, что хотите, включая командную строку, которая определит местоположение файлов temp каким-то разумным способом для любого компилятора, который вы используете.

2

Это прекрасно работает для меня:

(setq temporary-file-directory "~/.emacs.d/tmp/") 
+0

Я заметил, но никогда не исправлял тот факт, что когда я обновил emacs, это перестало работать. Ответ nurikabe в сочетании с вашим сделал это для меня. – quodlibetor