Dropbox 内部でプログラムを書いていると、頻繁にファイルのアップロードと削除が行われて嫌だったので調べてみた。
結論としては、flymake-create-temp-inplace
ではなく flymake-create-temp-with-folder-structure
を使用すれば良さそうだ。例えば Ruby であればこんな感じ。
(defun flymake-ruby-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
;; 'flymake-create-temp-inplace ← ここを変更
'flymake-create-temp-with-folder-structure))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "ruby" (list "-c" local-file))))
まあ temp-file を書き換えればどうにでもなるわけだけど、わざわざ関数が用意されてるのでそれを使わせてもらうことにする。
ちなみに私の環境だとこの設定によって、/tmp 以下に絶対パスのディレクトリ構成を作成し、そこにソースファイルを作成するようになった。あと、パスの途中にピリオドの入ったディレクトリが存在するとエラーが出るようなので注意。