

Emacsでファイルを開いた際にディレクトリの移動を **しない** 方法を探しています。  
例えば、ディレクトリ`/path/to/myproject`で作業中にサブディレクトリの`/path/to/myproject/src/foo.py`を開いたときにカレントディレクトリが`/path/to/myproject/src`へと移動してしまうのですが、この移動をせずに`/path/to/myproject`にとどまっていたいのです。

元々vimを長い間つかっていて、最近Emacs(Spacemacs)を試しているのですが、vimには見られないこの挙動に困っています。ディレクトリが勝手に移動してしまうと、`helm-
grep-do-git-grep`などでプロジェクト下のファイルを検索したい場合にいちいち元のプロジェクトディレクトリに戻らねばならず、面倒です。

よろしくお願い致します。


CC BY-SA 3.0
2016-01-26T18:37:21.973
21353
2018-02-23T00:45:23.900
2018-02-23T00:45:23.900
19110
7938
question
emacs spacemacs
Emacsでディレクトリの移動をしない方法


`command-line-default-directory`に起動時の `default-directory`の値が入っているので, 各 hookで
`default-directory`をその値で再設定するというのはどうでしょうか ?

[code]

    (defun my/restore-default-directory ()
      (setq default-directory command-line-default-directory))
    (dolist (hook '(find-file-hook dired-mode-hook dired-after-readin-hook))
      (add-hook hook #'my/restore-default-directory))
    
[/code]

任意のケースではわかりませんが, ファイルを開く, diredを開くぐらいで確認したところ上記だけでもうまくいきました. 不足しているようならその都度
hookを足せばよいかと思います.


CC BY-SA 3.0
2016-01-27T01:45:50.823
21360
2016-01-27T01:45:50.823
3521
21353
answer


`.dir-locals.el` ファイルを使うのはどうでしょうか。

**/path/to/myproject/.dir-locals.el**

[code]

    ((nil . ((default-directory . "/path/to/myproject"))))
    
[/code]

こちらの環境(Emacs 25.1)で試したところ、`/path/to/myproject` 以下の全てのファイルに recursive
に作用する事を確認しています。


CC BY-SA 3.0
2016-01-27T02:06:39.367
21362
2016-01-27T02:06:39.367
21353
answer