タグ内のダブルクリックですべて選択したい

  1. 最近使い始めさせて頂いています。ありがとうございます。

    で、質問ですが、HTML編集時に、タグ内のテキスト部分をダブルクリックで、単語ではなく、文章全体を選択できるようにするにはどのように設定すれば宜しいのでしょうか。

    例として:<p>どうも始めまして、よろしくお願い致します。</p>
    などの時に、<p>タグ内のどの部分をダブルクリックしても、「ど・・・・・・・す。」全文を選択できるような設定にしたと思っています。

    どのようにすれば宜しいのかご教示頂ければ有難いのですが、よろしくお願い致します。

     |  marumaru  |  返信
  2. ご試用ありがとうございます。
    開始タグと終了タグの間を選択する、という動作には現在のところ対応しておりません。
    同様の御意見が多い場合は対応を検討したいと思います。

     |  Kuro  |  返信
  3. 早々のご返信有難うございました。

    > 開始タグと終了タグの間を選択する、という動作には現在のところ対応しておりません。
    > 同様の御意見が多い場合は対応を検討したいと思います。

    分かりました。
    なんとか大勢の意見が出て対応して頂ければとても嬉しく思います。
    期待しながら待っています。

    実力があれば、マクロで出来そうな気もするのですが、さっぱりわからないものですから待つしかありません。
    お騒がせいたしました。

     |  marumaru  |  返信
  4. > 実力があれば、マクロで出来そうな気もするのですが、さっぱりわからないものですから待つしかありません。
    > お騒がせいたしました。

    残念ながらダブルクリックの動作をマクロで定義することはできませんので,ご期待の動作をマクロで完全に実装することは無理です.
    ただ他の操作(メニューやキー操作)をトリガにしてもよろしければ,下記マクロを試してみて下さい.
    開始タグ終了タグの対応やタグ内対応は全くですが,例題ぐらいでしたら動作します.

    // == ここから ==
    var s = Document.Selection;
    var p = s.GetActivePos();
    var t = Document.Text;
    var b = t.lastIndexOf('>', p);
    var e = t.indexOf('<', p);
    s.SetAnchorPos(b < 0 ? 0 : b+1);
    s.SetActivePos(e < 0 ? t.length : e, true);
    // == ここまで ==

     |  ks  |  返信
  5. ks さん、ご対応ありがとうございます。

    できればマクロなどで対応させて頂きたいところなのですが、タグの対応や入れ子など HTML の構文解析的なものを本格的にやろうとすると結構難しいと思います。

    emmet.js というマクロにその機能があるのですが Mery ではマクロでグローバル変数が使用できないという仕様上の制限があり、残念ながらタグ内の文字列を選択する機能のみ使用不能となっています。

    マクロでグローバル変数を使うことができるようにして emmet.js を使った方が早いかもしれません^^;

     |  Kuro  |  返信
  6. 追記です。

    emmet.js を使用すればタグ内の文字列を選択することができました。

    https://github.com/haijinboys/mery-macro-emmet

    こちらの emmet.js をダウンロードしソース内の emmet_action を "match_pair_inward" (要素の内側を選択) に書き換えてください。下記のような感じ。

    // emmet_actionに文字列を指定することで標準の動作を固定できます
    var emmet_action = "match_pair_inward";

    で、<p>...</p> などの ... の部分にカーソルがあるときにマクロを実行すれば内側の要素を選択することが可能です。<p> タグに限らずあらゆるタグで動作可能ですのでお試しください。

    ただしダブルクリックなどにマクロを登録することはできませんので、キーボード割り当てなどでご対応いただければと思います。

    (グローバル変数が使用できない云々は、マクロ実行後に連続してマクロを実行した際に段階的に選択範囲を広げていくという動作が実現できなかっただけでした)

     |  Kuro  |  返信
  7. > emmet.js を使用すればタグ内の文字列を選択することができました。

    https://github.com/haijinboys/mery-macro-emmet

    > こちらの emmet.js をダウンロードしソース内の emmet_action を "match_pair_inward" (要素の内側を選択) に書き換えてください。下記のような感じ。

    > // emmet_actionに文字列を指定することで標準の動作を固定できます
    > var emmet_action = "match_pair_inward";

    > で、<p>...</p> などの ... の部分にカーソルがあるときにマクロを実行すれば内側の要素を選択することが可能です。<p> タグに限らずあらゆるタグで動作可能ですのでお試しください。

    Kuroさん、素晴らしいご対応本当にありがとうございました。

    一部不備はありますが、ほぼ完ぺきにできるようになりました。
    タグが入れ子になっている場合は、中のタグ内のテキストを選択すると、外のタグからしか認識されないようで
    一番外のタグ内すべてが選択されますが、これはめったに使用することがないので問題なしです。

    emmet.jsは本来の使い方をしていましたので、別ファイル名にしてキーボード割り当てをして活用させて頂きます。

    こんなに早く出来るとは!夢のようです!
    ksさん、お気遣い頂きまして本当に有難うございました!
    皆様のご好意で思うようになりまして感謝致しております。これからも宜しくお願い致します。

     |  marumaru  |  返信