すべてのメニューへ飛ぶ2009年4月23日Firefoxの"ページのソースを表示"で外部エディタを使うと開けないことがあるのを回避するタイトル長い。WindowsのFirefoxで外部エディタを設定するとまず間違いなくはまるバグをどうにか回避してやろうという試み。このバグは対象のページのソースを一時的なファイルに保存までは正常に行えているものの、指定した外部エディタにそのファイル名がUTF-8(多分)で渡されるのが原因。view_source.editor.pathに外部エディタを指定せずに、ゴニョゴニョするバッチ・ファイルを指定してやるという手法で頑張ってみた。結果、できないことなどないということがわかった。バッチファイルすげー。"%x%"exit以上のバッチ・スクリプトをview-source-editor.batなどというファイル名で適当なフォルダに保存する(notepad.exeのパスは使いたいエディタのパスに変更)。あとはFirefoxでabout:configからview_source.editor.pathに保存したview-source-editor.batのフルパスを設定するだけ(view_source.editor.externalがtrueであることも確認)。"C:\\Path\\to\\view-source-editor.bat");で良い。Source)を実行した時、ソースの表示のためにFirefoxによって作られた一時的なファイルが設定したエディタで開かれるはず(稀にまったく関係ないファイルが開かれる可能性はある)。確実に開かれるわけではない理由は簡単で、Firefoxから送られるファイル名をまったく無視しているから。/odの出力結果を1行ずつxという環境変数にどんどん上書きしながら格納していくコードが肝。/fはファイルや文字列、コマンドの標準出力などを解析する時のforのオプション。delimsは、ParsingKeywordsというforのオプションで、区切り文字をセットするオプション。これは省略可能だが、指定しないとデフォルトで空白(とタブ)が区切り文字として設定されるので、delims=と何も指定しないようにしておく必要がある(空白が含まれるファイル名になることが多いので、デフォルトのままだとまずい)。/fの解析の対象になる。一重引用符の場合はコマンドとして解釈される(引用符がないとファイル名、二重引用符だと文字列として解釈される)ので、この場合dirコマンドの結果が対象になることになる。dirコマンドには、/bファイル名のみの出力にする/od更新日時でソートするというオプションを与えているので、最終的にxには一時フォルダ(%TEMP%)にあるファイルの中で更新日時が一番新しいファイルのファイル名が入ることになる。Source)からこのバッチ・ファイルを呼び出した場合、ほとんどの場合xに入るファイル名はソースの表示のために作られた一時的なファイルであるので、結果としてエディタでソースが表示できることになる。3.5系(3.1b1とか)で直っる予定のバグだったら笑える(3.1b3でちょっと試してみたけど直ってない感じだった)。3.1b2pre以降からview_source.editor.argsとかいう外部エディタに引数を渡す設定が出来、行番号等を渡せるようになってるらしい。(表示)で公開しています。視覚的なデザインについてはスタイル・ガイドを、生成の仕組みについてはGitHubのリポジトリーを参照してください。お問い合わせはメールや、Twitter、GitHubのイシューでお願いします。