ファイル名に半角スペースがあると他のエディタから呼び出せない

  1. Mery 3.38 (64bit)での報告です。(Window10 Home 21H1 64bit)
    Zenモードに興味を持ってMeryを試していて、今は

    「他のエディタで開いているファイルを、
     そのエディタの外部ツール機能からMreyを呼び出して開く」

    ということをやっています。ただ引数で$(Path)を渡しても、
    ファイル名に半角スペースが入っているとMeryが認識しないようです。
    例えば「新規 テキスト ドキュメント.txt」というファイルを開くために
    Meryを呼び出すと、

    「指定したファイルは存在しません。新規作成しますか?」

    というダイアログが出て来て、「はい」を選び続けると、

    「新規」
    「テキスト」
    「ドキュメント.txt」

    という三つのファイルが作成されます。(中身は全て空)
    バグなのか、何らかの制約なのかは分かりませんが、
    回避する方法があれば教えて頂けないでしょうか。

     |  ART  |  返信
  2. 横から失礼します。

    気になったので拙作のエディタを調べましたが、拙作の「BonsMemo」であればバグです。申し訳ありません。
    その他のエディタであれば、ファイル名の指定の箇所を確認してみて下さい。

    拙作の「BonsMemo」であれば、引数の設定の
    /l $(CurLine) "$(FileNameEx)"

    /l $(CurLine) $(FileNameEx)
    に変更して下さい。
    ファイル名の指定の前後に「"」があると誤動作します。

    最新版にバージョンアップ時には修正します。

    よろしくお願いします。

     |  大石剛司  |  返信
  3. 大石剛司さんの返信を参考に$(Path)をダブルクォーテーションで囲ったら、
    問題なくMeryで開けました。ありがとうございます。
    プログラム素人丸出しの書き込みをして申し訳ありませんでした。
    問題は解決したので上記の書き込みは無かったことにして下さい。

     |  ART  |  返信
  4. アプリケーションによって対応が異なるようです。
    拙作のエディタは、コマンドラインのファイル名に空白がある場合には、前後に「"」が無いと誤動作します。

    あるエディタでは「10行目」で「C:\test\123 456.txt」を開きたい場合に、以下のどちらでも正常に開けます。
    「/l 10 C:\test\123 456.txt」
    「/l 10 "C:\test\123 456.txt"」

    今回の報告で、拙作のエディタのバグが見つかり助かりました。
    空白を含むファイル名(フォルダ名)の場合は注意が必要ですね。

    ありがとうございました。

     |  大石剛司  |  返信
  5. >> ART さん

    こんばんは、Mery を開発している者です。このたびは Mery をお試しいただきありがとうございます。

    > 問題なくMeryで開けました。ありがとうございます。

    うまく動作したようで良かったです。

    > プログラム素人丸出しの書き込みをして申し訳ありませんでした。

    いえいえ。大石さんがおっしゃるとおりアプリによって対応が異なるようで、Windows のメモ帳なんかはダブルクォーテーションがなくても認識してくれるみたいですね。

    Mery でもそういった仕様に対応できないか検討してみたいと思います。

    >> 大石剛司 さん

    サポートのご協力ありがとうございます。

    > 拙作のエディタは、コマンドラインのファイル名に空白がある場合には、前後に「"」が無いと誤動作します。

    Windows だと一般的に「"」を付けるものだと思っていましたが、アプリによっては「"」なしでも動作するものがあるのですね。(メモ帳でもいけました)

    > あるエディタでは「10行目」で「C:\test\123 456.txt」を開きたい場合に、以下のどちらでも正常に開けます。
    > 「/l 10 C:\test\123 456.txt」

    ↑ これで「C:\test\123 456.txt」が開けるのはすごいですね。

    メモ帳だと引数にファイルをひとつしか指定できないのでわかりますが、エディターだと引数にファイルを複数指定できるわけですから、上記のパターンは「C:\test\123」と「456.txt」の 2 つのファイルという見方もできそうですよね。

    どういう仕組みになっているのか気になるので、差し支えなければ「あるエディタ」の名前を教えていただけませんでしょうか?

    よろしくお願いします。

     |  Kuro  |  返信
  6. 拙作のエディタからは、「Mery」と「秀丸」の設定を記述しています。

    空白文字があっても動作するのは、昔から使っている「秀丸Ver8.13」です。
    バージョンアップしていませんが、Windows10 32bits版で使っています。

    /J 3 D:\DLPH_SRC\#PERSONAL\XE10-32-BonsMemo\test\utf 8 bom.txt

    起動した時の画像は、以下の私のブログにアップロードしました。
    http://bonworld-bonsfm.sblo.jp/article/189756421.html

    よろしくお願いします。

     |  大石剛司  |  返信
  7. ご返信ありがとうございます。ブログ記事、とても参考になりました。

    なるほど、秀丸エディタさんでしたか。秀丸エディタさんで試してみたら行番号指定と同時に半角スペースを含むファイルも認識されました、すごい!

    気になったので他のエディターでも試してみました。

    サクラエディタさんと EmEditor さんは半角スペースを含むファイル名でダブルクォーテーションなしでいけました。

    でも、行番号指定などのオプションと同時だとダメみたいですね。

    サクラエディタさんの場合:

    【OK】

    sakura.exe C:\test\123 456.txt

    【NG】

    sakura.exe -Y=3 C:\test\123 456.txt

    EmEditor さんの場合:

    【OK】

    EmEditor.exe C:\test\123 456.txt

    【NG】

    EmEditor.exe /l 3 C:\test\123 456.txt

    と、こんな感じでいずれもファイル名のみ渡す場合は OK ですがその他のオプションを同時に指定すると NG でした。

    秀丸エディタさんは非常に高度なコマンドラインオプション解析を実装されているのだと思います。

    私の技術力でできるとしたら、上記のように他のオプションがない場合のみ対応といった感じになりそうです。(秀丸エディタさんのような柔軟さは無理っぽ)

    BonsMemo さんはプログラム側でも ShellExecute の引数で「"」を追加していたとのことですが、お気持ちわかります。

    「"」は昔から付け忘れるひとが多いので、外部ツールを呼び出すアプリ側の親切心といったところでしょうか、さすがだなぁと思いました。

     |  Kuro  |  返信
スポンサーリンク