◀Unicode版開発トップへ
  • 1084 カレントディレクトリの厄介なお話(1/2)
    • 1085 カレントディレクトリの厄介なお話(2/2)
  • [1084] カレントディレクトリの厄介なお話(1/2) もか 2009年12月21日 03:42

    とりあえず知っていることをまとめてみました。長いです。ごめんなさい。

    まずいままでの推移。INCMを駆使して探しました。
    INCMで探すのが面倒なのでタイトルと日付つき。
    >>dev:651 テスト版置きました 01/08/28
    コントロールプロセスのカレントをsakuraのディレクトリに。
    >>data:2152 [提案]カレントディレクトリ 02/07/31
    私の妄想。いまだに外部コマンド実行では指定できない。
    なお外部コマンド実行の「カレントディレクトリを設定できるように」の要望はGAEさんが先。>>data:523
    >>dev:2277 fix020818.zip 02/08/22
    要望を書いてから22日たったけど返信がなくてさびしいのでパッチを書いた。
    実ははるか昔はダイアログを開くと勝手に変わるので、
    「たまたまファイル=カレントディレクトリ」になってた。
    コマンドプロンプトで、 C:\>sakura.exe D:\folder\file.txt
    とするとカレントディレクトリ=C:\のままファイルを開いた。
    このときの相対タグジャンプおよび外部コマンド実行はもちろんC:\からの相対だった。
    それはそれで便利な気もするけど。
    もともとエクスプローラは開いているパスをカレントにしてプログラムを実行しているのでそれと食い違う。(たぶん)
    それをファイルの場所=カレントディレクトリに固定するようにした。
    リリースでいうと1.3.3.0で統合されたみたい。
    >>data:2699 要望:新規保存時のダイアログの初期フォルダ 03/02/05
    カレントディレクトリにして欲しい。
    返信で「最近使ったファイルの一番上のファイル」に2002/9/9に変更したという記述。
    >>dev:2638 1.3.8.1の取り込み&修正 03/03/30
    これはカレントディレクトリにしたという確認
    >>data:2848 1.3.8.1 03/03/30
    そのリリース記事。
    >>data:3028 1.3.10.1 03/06/23
    タスクバー(Ctrl+Alt+Z)からの新規作成はカレントディレクトリがMRU0番目になるように変更
    1.3.8.1より前はカレントディレクトリ=sakura.exeでファイル保存の初期フォルダがMRU0という動作だったはず。
    (違いは後述)
    >>data::6576 【不具合】フォルダが削除できない 08/02/06
    ウィンドウを開いているとカレントディレクトリになって削除できないフォルダがあるという話
    • [1085] カレントディレクトリの厄介なお話(2/2) もか 2009年12月21日 03:46

      続きです。
      新規ウィンドウは、>>unicode:1072 anonymouseさんの解説のようになってます。

      カレントディレクトリに依存している部分というのがいくつかあって
      ・相対タグジャンプ(たぶんctagsダイレクトタグジャンプを含む)
      ・外部コマンド実行
      ・(無題)時の「開く」コマンドのダイアログの初期値
      ・「名前をつけて保存」のダイアログの初期値
      ・Grepの現フォルダ(ソース見てないけどファイルを開いてないとき限定)
      ・もしかしたらtagsの作成
      ・DLL類の検索パス(設定できるものは設定依存)
      これらはファイルを開いていようが無題だろうが同じです。
      だからファイルを開いている途中で変更するとあんまり良くない現象がおきます。
      ちなみに今どこよ?ってときは、 外部コマンド実行で「cd」でわかります。
      特殊な場合で、存在しないフォルダ内の存在しないファイルを新規で開くという場合もあります。
      コマンドラインから指定可能です。その場合は上書き保存に失敗しますし、カレントディレクトリの移動にも失敗しています。

      編集中のカレントディレクトリ変更機能は、(無題)のときだけにするほうが良いと個人的には思います。
      各カレントディレクトリ依存機能を依存しないように変更するというのもいいと思います。
      新規ウィンドウは、xxxxフォルダをカレントにするオプションというのもいいかもしれません。
      ファイルを開くダイアログの初期値は、オプションを追加すれば良いと思います。
      どういうオプションにするかは詰める必要があります。
      ・必ず指定フォルダへ
      ・カレントディレクトリ
      ・MRU0番目(ないときはどうするかしりません)
      と3択にしてあればある程度の要求にこたえられるでしょう。
      あと、インストーラが作ってくれるショートカットの作業フォルダは空っぽなので、それをマイドキュメントとかにできたらいいかなーとは思います。
      じつはそれだけで解決するような気がしてきました。
      ちなみに、OFN_NOCHANGEDIR はOSの種類と使う関数で違うので信用できない上、指定してあってもダイアログ表示中は、
      その表示中のフォルダに勝手に変わるダメ仕様なのでシングルプロセス版にするときに注意です。
      最新OSなら大丈夫かもしれないです。