[括弧/引用符で選択範囲を自動的に囲む] いいですね!

  1. こんばんは~。

    早速、 [括弧/引用符で選択範囲を自動的に囲む] オプションを試してみました。いいですね!
    個人的にVSCodeなどのエディターで重宝している機能の1つであり、大変ありがたいです。

    ざっと試してみたところ、以下の動作であることを確認しています。仕様かなと思う点もあるものの、判別がつかないので羅列させていただきますね。

    - IME OFF かつ入力した記号が ( [ { の場合にのみ、選択範囲の囲む動作が発動する
    - 1文字を選択している場合には、上記括弧記号を入力しても上書き動作になる
    - IME ON の場合にはどの括弧記号であっても上書き動作になる

    一応、入力に関係しそうな私の利用環境について以下に記載します。

    - Windows 11 (23H2)
    - IME: Google日本語入力 (GoogleJapaneseInput-2.29.5370.0+24.11.9)
    - キーボード配列: 英語

    ところで、IME ON時の括弧での囲み動作はやはり、技術的に難しいでしょうか。
    以前、マクロでもできるかなーなんて考えていた時期もあったのですが、強制的に括弧を確定してしまって変換の邪魔になるだろうしダメだろうとボツにした次第です…😅

     |  yuko  |  返信
  2. こんばんは。早速お試しいただき、ありがとうございます。

    > 個人的にVSCodeなどのエディターで重宝している機能の1つであり、大変ありがたいです。

    Visual Studio 2022 の最新版でこの機能が実装され、とても評判が良さそうだったので、開発に挑戦してみました。

    > - IME OFF かつ入力した記号が ( [ { の場合にのみ、選択範囲の囲む動作が発動する

    はい、その通りです。HTML モードの場合は、それに < も追加されます。

    また、[編集モード] の [プロパティ] で [1 重引用符]、[2 重引用符] のオン/オフに応じて、「'」と「"」にも対応します。

    括弧の種類については、設定画面を用意するなど、複雑にしたくなかったので、VSCode の構文ファイルから surroundingPairs の項目をすべて調査し、平均的な括弧の種類を抽出して固定の値としました。

    > - 1文字を選択している場合には、上記括弧記号を入力しても上書き動作になる

    そうですね。VSCode では 1 文字選択でも括弧の補完が発動しますが、Visual Studio 2022 では 2 文字以上の選択が必要です。

    これは、実際に使ってみて、1 文字選択で発動すると使いにくい場面があったためです。

    たとえば、テキストの中の ( を { に置き換えたいとき、( を 1 文字選択して { を入力するだけで括弧の補完が発動されると、ちょっと困ってしまいます。

    > - IME ON の場合にはどの括弧記号であっても上書き動作になる

    そうですね、IME オフの場合にのみ有効な機能です。

    > ところで、IME ON時の括弧での囲み動作はやはり、技術的に難しいでしょうか。

    難しいと思います。

    > 以前、マクロでもできるかなーなんて考えていた時期もあったのですが、強制的に括弧を確定してしまって変換の邪魔になるだろうしダメだろうとボツにした次第です…😅

    そうですね。通常、IME からの入力は変換を確定したときにしか取得できないので、変換中に括弧が入力されたかどうかを確かめるのは難しいですね。

    それから、Mery は IME の入力方式が複数あるので、それぞれの方式において、技術的に可能かどうかを考慮する必要がありますね。

    以下、Visual Studio 2022 と VSCode の仕様を参考にして、検討してみました。

    (1) 通常のインライン入力 (Mery の [変換中の文字列を挿入モードで入力] オフ)

    Visual Studio 2022 の入力方式です。

    Visual Studio 2022 では、IME からの入力が「括弧 1 文字のみ」の場合に、括弧の補完が発動するようです。

    (2) トゥルーインライン入力 (Mery の [変換中の文字列を挿入モードで入力] オン)

    VSCode の入力方式です。

    この方式では、変換中の文字列がリアルタイムでテキストに反映されるため、文字列を選択した状態で IME の入力を始めると、選択範囲の文字列が消えてしまいます。

    VSCode では IME からの入力が「括弧 1 文字のみ」の場合に限り、消えてしまった文字列が復活し、括弧の補完が行われるようです。

    (3) レガシー モード ([General] UndoCharByChar=1)

    これは以前の Mery のデフォルトです。現在は使われていませんが、隠しオプションで設定することができます。

    このモードでは、IME からの入力が 1 文字でも複数文字でも、1 文字単位での処理しかできないため、入力された文字が「括弧 1 文字のみ」かどうかを判断することができません。

    以上のことから、まとめると、次のような感じです。

    (1) は、Visual Studio 2022 のような仕様なら対応できそうです。

    (2) は、VSCode のように消えてしまった文字列を復活させれば、実現はできそうですが、その方法が課題ですね。何か良いアイデアが浮かべばいいのですが…😓

    (3) は、あまり使われていないはずなので、無視しても大丈夫かなと思いました。

     |  Kuro  |  返信
  3. > はい、その通りです。HTML モードの場合は、それに < も追加されます。
    > また、[編集モード] の [プロパティ] で [1 重引用符]、[2 重引用符] のオン/オフに応じて、「'」と「"」にも対応します。

    「あれ、引用符で効かないな…」としばし悩んでいたのですが、編集モードに連動していたのですね。(リリースノートにも記載がありましたね、失礼しました😅)

    編集モードはシンタックスハイライトの設定機能、という意識があるためか、テキスト操作のロジックにも関わってくるとなると「あ、この編集モードでは1重引用符がオフだから囲みは効かなかったか~」などのように、ちょっと混乱があるかもしれません…。

    個人的には、あらかじめ決まった括弧・引用符類 (例: ( [ { < ' " など) で編集モードに依存せずに共通して効く、としていただいた方が仕様としてシンプルで、簡単に理解して扱いやすいような気がしましたが、いかがでしょう?

    > たとえば、テキストの中の ( を { に置き換えたいとき、( を 1 文字選択して { を入力するだけで括弧の補完が発動されると、ちょっと困ってしまいます。

    おお、なるほど、なるほど。たしかにですね。

    > (1) は、Visual Studio 2022 のような仕様なら対応できそうです。
    >
    > (2) は、VSCode のように消えてしまった文字列を復活させれば、実現はできそうですが、その方法が課題ですね。何か良いアイデアが浮かべばいいのですが…😓
    >
    > (3) は、あまり使われていないはずなので、無視しても大丈夫かなと思いました。

    うーむ、たしかに、Meryでは複数の入力モードがあるのでしたね。(3) は初耳でしたが…🙄

    VSCodeで1文字確定で囲みが発動するのも知りませんでした。なかなかやりますな、VSCode。

    もしも1文字確定で囲み発動の仕様を検討されるのでしたら、日本語IME環境下においては変換なしで入力できる囲み系記号ということで、全角 ( [ { 「 < ’ ” が重用されていると思いますので、そちらにも対応してみてはいかがでしょうか?

    私の場合、文章をさらさらっと書いたあと、強調したい箇所や、読みやすくするためにひとまとまりとして表現したい箇所をかいつまんでカギ括弧「」で囲むような修正の仕方をすることが多いため、特に始まりカギ括弧1文字の確定で選択範囲が 「」 で囲まれる動作ができたら、だいぶ嬉しい予感です。
    それに、全角 ( [ { 「 < ’ ” はVSCodeでも対応されていないため、日本語文書に強いMeryとしての差別化要因としても良いのではと想像しています。

     |  yuko  |  返信
  4. あとは本機能、マルチカーソルへの対応も検討いただけると失神するほど嬉しいです…🤤

     |  yuko  |  返信
  5. > 個人的には、あらかじめ決まった括弧・引用符類 (例: ( [ { < ' " など) で編集モードに依存せずに共通して効く、としていただいた方が仕様としてシンプルで、簡単に理解して扱いやすいような気がしましたが、いかがでしょう?

    プログラム的には、その方が実装が楽なんですけどね😅

    ちなみに、VSCode はシンタックス (編集モード) ごとに設定できます。

    Visual Studio 2022 も同様に内部的にはシンタックスごとに補完対象の括弧や引用符が異なるようですが、設定項目は共通項目の [括弧/引用符で選択範囲を自動的に囲む] だけですね。

    しかも、括弧の種類などを設定する画面が見当たらないので、ブラックボックスですね。

    括弧については、私も共通で固定で良いと思いますが、' は必ずしも引用符として使われるわけではなく、英文などではアポストロフィとして使うことも多いので、編集モードが Text のときは引用符の補完を無効にしたかったんです。

    > もしも1文字確定で囲み発動の仕様を検討されるのでしたら、日本語IME環境下においては変換なしで入力できる囲み系記号ということで、全角 ( [ { 「 < ’ ” が重用されていると思いますので、そちらにも対応してみてはいかがでしょうか?

    技術的には可能ですが、そうすると 【 や 『 も対応してほしい、あるいは自由に設定できる機能がほしい、というご要望が出てくる未来が見えますね😱

    > それに、全角 ( [ { 「 < ’ ” はVSCodeでも対応されていないため、日本語文書に強いMeryとしての差別化要因としても良いのではと想像しています。

    そうですね。設定画面が必要なく、どの括弧に対応するかでみんなが納得できるようなバランスが見つかれば、対応してみても良いかもしれませんね。

    > VSCodeで1文字確定で囲みが発動するのも知りませんでした。なかなかやりますな、VSCode。

    いずれにしても、VSCode のようにトゥルーインライン入力で消えちゃった文字列を復活させる仕組みが実装できない限り、対応できないので、当面の課題はそこですね。

     |  Kuro  |  返信
  6. > あとは本機能、マルチカーソルへの対応も検討いただけると失神するほど嬉しいです…🤤

    あらら…。マルチ カーソルには対応したつもりだったのですが、動作してなかったですね😅

    次のバージョンでは修正できるよう、調査して来ますー!

     |  Kuro  |  返信
  7. > ちなみに、VSCode はシンタックス (編集モード) ごとに設定できます。

    そんな機能があったんだ、とこれまた驚き、調べてきました。
    以下の language-configuration.json の、 surroundingPairs という設定項目でしょうか?

    VS Codeの設定: 括弧と引用符の自動補完について #VSCode - Qiita https://qiita.com/BlueSilverCat/items/c245bd098396dc2eb656

    > Markdown ファイルを編集するときの挙動を変える場合は、
    > Windows10 の場合、$InstallDir\resources\app\extensions\markdown-basics フォルダにある language-configuration.json を編集します。

    microsoft/vscode-extension-samples https://github.com/Microsoft/vscode-extension-samples/blob/main/language-configuration-sample/language-configuration.json

    「これがあれば「」の囲みも実現できそう!」と設定してみたのですが、VSCodeのUIからは開くことができないファイルであり、なおかつVSCode自体を再起動しないと反映されないファイルであるあたり、あまり積極的に触ってほしくはなさそうな雰囲気を感じました…🤔 それに、アップデートで設定ファイルがリセットされそうな領域にあるのがウーム…な感じですね。

    ところでVSCode標準搭載の言語モードは、GitHub上で定義ファイルを見ることが見ることができるようだったので、適当に抽出してみました。

    - Markdown: https://github.com/microsoft/vscode/blob/main/extensions/markdown-basics/language-configuration.json
    - Java: https://github.com/microsoft/vscode/blob/main/extensions/java/language-configuration.json
    - HTML: https://github.com/microsoft/vscode/blob/main/extensions/html/language-configuration.json
    - Python: https://github.com/microsoft/vscode/blob/main/extensions/python/language-configuration.json

    上記を眺めるに、以下については共通的に設定されているように見えます

    - 始まり { 終わり }
    - 始まり [ 終わり ]
    - 始まり ( 終わり )
    - 始まり " 終わり "
    - 始まり ' 終わり '

    ちなみに json https://github.com/microsoft/vscode/blob/main/extensions/json/language-configuration.json なんかは、 surroundingPairs の設定値が存在していませんが、 autoClosingPairs と同等の囲みが発動するように見受けられます。省略すると autoClosingPairs が選択範囲囲みでもそのまま使われるのかもしれませんね。

    > 括弧については、私も共通で固定で良いと思いますが、' は必ずしも引用符として使われるわけではなく、英文などではアポストロフィとして使うことも多いので、編集モードが Text のときは引用符の補完を無効にしたかったんです。

    私もMeryでのほとんどの時間をデフォルト編集モード「Text」で過ごす民ですから、 ' は引用符として扱いたくなく、OFFにしているんですよね。英文のように文章中に ' が入ってくると、囲む意図がないのに文末まで色も付いてしまいますし。

    ですが、プログラムやSQLクエリのスニペットをMeryで無題タブを開いてササッと下書きしてコピペ…な使い方をすることも多いので、編集モード「Text」で「範囲選択 → ' を入力して囲み」は、引用符設定を問わずやりたいなぁと感じました。

    また、Markdownのように英文とコード (コードブロック) が混在する文書においては、引用符設定はOFFの方が下手に着色されないことから都合がよいですが、部分的にコードを書くことになるため「範囲選択 → ' を入力して囲み」はやはり発動してほしいように思えます。

    そういう使い方を想定すると、VSCodeのように、前述の共通項5項目 { [ ( " ' は、編集モードに依存せずに共通して効く方が使い勝手がよい気がしています。

    > 技術的には可能ですが、そうすると 【 や 『 も対応してほしい、あるいは自由に設定できる機能がほしい、というご要望が出てくる未来が見えますね😱
    > そうですね。設定画面が必要なく、どの括弧に対応するかでみんなが納得できるようなバランスが見つかれば、対応してみても良いかもしれませんね。

    ああ、なるほど、中途半端にポリシー無く実装してしまうと、そういう反応もたしかにありえますよね😅

    ちなみに 「」 で変換できる括弧たち、Google日本語入力だと20個程度、Microsoft IMEだと25個程度でした。このくらいの数なら全部対応でもまぁ、ありかもしれません。(爪カッコ 〝〟 とか使ったことがありませんが…w)

    > いずれにしても、VSCode のようにトゥルーインライン入力で消えちゃった文字列を復活させる仕組みが実装できない限り、対応できないので、当面の課題はそこですね。

    Kuroさんの技術力、信頼しています!(プレッシャーをかける意図はありませんw)

    > 次のバージョンでは修正できるよう、調査して来ますー!

    ありがとうございます!

     |  yuko  |  返信
  8. > そんな機能があったんだ、とこれまた驚き、調べてきました。

    ご協力ありがとうございます。

    > あまり積極的に触ってほしくはなさそうな雰囲気を感じました…🤔

    そう言われてみると、確かにそうかもしれませんね…😖

    > 上記を眺めるに、以下については共通的に設定されているように見えます
    >
    > - 始まり { 終わり }
    > - 始まり [ 終わり ]
    > - 始まり ( 終わり )
    > - 始まり " 終わり "
    > - 始まり ' 終わり '

    私も実装にあたって、VSCode のすべての定義ファイルを調査しましたが、ほとんどの言語で上記の設定が見られました。

    次に多いのは、上記の項目をベースに、以下の項目が追加されているものですね。

    - 始まり < 終わり >
    - 始まり ` 終わり `

    > 省略すると autoClosingPairs が選択範囲囲みでもそのまま使われるのかもしれませんね。

    ソースを見た感じですと、autoClosingPairs ではなく、surroundingPairs のデフォルト値が適用されているのかもしれません。

    【参考】languageConfigurationRegistry.ts
    https://github.com/microsoft/vscode/blob/5e1674b3082f0141ecbd6fa52799b781ef0428bb/src/vs/editor/common/languages/languageConfigurationRegistry.ts#L314

    - 始まり { 終わり }
    - 始まり [ 終わり ]
    - 始まり ( 終わり )
    - 始まり < 終わり >
    - 始まり " 終わり "
    - 始まり ' 終わり '
    - 始まり ` 終わり `

    < と ` の扱いは難しいところです。

    > そういう使い方を想定すると、VSCodeのように、前述の共通項5項目 { [ ( " ' は、編集モードに依存せずに共通して効く方が使い勝手がよい気がしています。

    確かに、そのような使い方なら、編集モードとは別に考えるべきですね。VSCode に準拠という建前があると強いので、その方向で検討してみたいと思います。

    > ちなみに 「」 で変換できる括弧たち、Google日本語入力だと20個程度、Microsoft IMEだと25個程度でした。このくらいの数なら全部対応でもまぁ、ありかもしれません。(爪カッコ 〝〟 とか使ったことがありませんが…w)

    なるほどー。でも、これ、本当に括弧なの?と疑わしい候補も出てきますね😅

    括弧の一覧も調べてみましたが、結構な数がありますね。これがすべてかどうかも分かりませんし、さすがにすべてに対応するのは難しそうです…。

    【参考】かっこ(括弧)各種 Unicode(ユニコード)一覧 文字 0g0.org
    https://0g0.org/topic/bracket/

    やるとしたら、現在、Mery の [対応する括弧を強調する] や [対応する括弧へ移動] で対象になっている括弧、

    ([{「『【([

    を対象にするというのが無難かもしれません。

    > Kuroさんの技術力、信頼しています!(プレッシャーをかける意図はありませんw)

    なはは…。でも、トゥルーインライン入力への対応 (消えてしまった文字列の復活) については、ちょっと難しい問題ですね。

    IME からの入力前に、選択範囲の文字列とカーソル位置を保持するアイデアがありますが…。

    括弧が必ず入力されるわけではありませんし、使うかどうかも分からないデータのためにメモリを消費するのは…。しかも、選択範囲が大きいとメモリの確保に時間がかかりますし、文字数制限を設けることも考えられますが、結局、括弧以外の文字が入力されたら、これらの処理はすべて無駄になってしまいます… \(^o^)/オワタ

    なんてことになってましたが、昨夜、お風呂の中でコード 1 行で無駄なく実装できる妙案が浮かびました😓

    > > 次のバージョンでは修正できるよう、調査して来ますー!

    マルチ カーソル対応については、現在の、2 文字以上を選択しないと発動しない仕様 (Visual Studio 2022) だと問題が出てきました。

    1 文字選択と 2 文字選択が混在している場合、どうなるの?と…。

    そこで、Visual Studio 2022 でマルチ カーソルを試してみたところ、マルチ カーソルの中に 1 文字選択の部分があっても発動することが確認できました。MS さん、仕様がちょっと曖昧ですね…。

    というわけで、通常の選択や複数選択にかかわらず、1 文字選択でも発動する仕様 (VSCode) に変更する方向で検討してみます。

     |  Kuro  |  返信
  9. Kuroさん

    今週もお疲れさまでした。

    > 私も実装にあたって、VSCode のすべての定義ファイルを調査しましたが、

    おお…あの量をすべて見ているとは、さすがです。

    > 次に多いのは、上記の項目をベースに、以下の項目が追加されているものですね。
    >
    > - 始まり < 終わり >
    > - 始まり ` 終わり `

    なるほどー。Markdownもそうですが、` ` で囲みたくなる言語は多いんでしょうかね。
    身近なところで言えば、LinuxコマンドをMeryで下書き的に書くことも多いのですが、コマンド展開をするときにはよく使います。

    > ソースを見た感じですと、autoClosingPairs ではなく、surroundingPairs のデフォルト値が適用されているのかもしれません。

    おお、TypeScriptも守備範囲だとは…恐れ入ります。
    言われてみれば、たしかにコンストラクタ的なところで読み出している感じがするので、そういうことらしいですね。

    >> そういう使い方を想定すると、VSCodeのように、前述の共通項5項目 { [ ( " ' は、編集モードに依存せずに共通して効く方が使い勝手がよい気がしています。
    > 確かに、そのような使い方なら、編集モードとは別に考えるべきですね。VSCode に準拠という建前があると強いので、その方向で検討してみたいと思います。

    おおっ、ありがとうございます。

    > やるとしたら、現在、Mery の [対応する括弧を強調する] や [対応する括弧へ移動] で対象になっている括弧、 ([{「『【([ を対象にするというのが無難かもしれません。

    おおー、それは仕様として分かりやすくて納得感がありますね。

    > なんてことになってましたが、昨夜、お風呂の中でコード 1 行で無駄なく実装できる妙案が浮かびました😓

    しばらく開発の仕事からは離れた身ですが、お風呂駆動開発、分かりますw
    しかし、1行とはすごいですね。よほどの裏技を見つけたんでしょうか。

    > というわけで、通常の選択や複数選択にかかわらず、1 文字選択でも発動する仕様 (VSCode) に変更する方向で検討してみます。

    ありがとうございます。たしかに、マルチカーソルも考えると統一されていた方が扱いやすそうですね。

     |  yuko  |  返信
  10. こんばんは、ご返信ありがとうございます。

    土日でほぼ実装できた感じです。

    > なるほどー。Markdownもそうですが、` ` で囲みたくなる言語は多いんでしょうかね。

    これは謎ですね。私自身、「`」ってどうやって入力するんですか?と思うほど、あまり使わない記号です😱

    > おお、TypeScriptも守備範囲だとは…恐れ入ります。

    いえいえ、初心者ですよ。Markdown プラグインは TypeScript で書いています。

    > しばらく開発の仕事からは離れた身ですが、お風呂駆動開発、分かりますw
    > しかし、1行とはすごいですね。よほどの裏技を見つけたんでしょうか。

    そうですね。聞いてしまうと「あ、そう」と思われそうですが…。

    消えた選択範囲の文字列とカーソル位置を復活させる方法。

    選択範囲の文字列とカーソル位置を保持しておく…などと複雑に考えず、シンプルに Undo (元に戻す) を呼ぶだけ。という感じですね😅

    とりあえず、現在、テスト中ですがうまく動作しているようです。

    が…、ちょっと、別件で、アップデートしたら設定が消えるという問題のご報告がありました。設定が消えてしまう問題は致命的で、公開停止につながる可能性もあるので、この問題の対応を最優先させていただきます。

    次バージョンのリリースはその問題が解決してからということになりますが、今しばらくお待ちくださいませ。

     |  Kuro  |  返信
  11. > 選択範囲の文字列とカーソル位置を保持しておく…などと複雑に考えず、シンプルに Undo (元に戻す) を呼ぶだけ。という感じですね😅

    おおー、灯台下暗しというか、言われればそれで簡単にいけてしまうわけですね。次のバージョンアップも俄然楽しみです。

    設定ファイルの件、何事もないといいですね。

     |  yuko  |  返信
  12. > なるほどー。Markdownもそうですが、` ` で囲みたくなる言語は多いんでしょうかね。
    > 身近なところで言えば、LinuxコマンドをMeryで下書き的に書くことも多いのですが、コマンド展開をするときにはよく使います。

    ちょっとしたコードを書きながら、「思えばこのへんでも使っていたなぁ」と思い当たったものがちらほらと出てきました。

    例えばJavaScriptならテンプレートリテラルで、MySQLならテーブル名などのオブジェクトで予約語を無視するための囲み (特殊記号ハイフン「-」が入ったテーブル名なんかを指定するときに使ったり) で、BashやMarkdownでは前述のとおり… と、意識してみると、個人的には割と使いどころがそれなりにありました。

    さらにMarkdownのコードブロック記法 ``` なんかは、「複数行選択してからの ` を3回押下」で既存の内容をコードブロックで囲うような使い方もできるかもしれませんね。

    主にプログラミング周りで使い道があり、なおかつ通常の文書作成において利用するのは稀であることを鑑みると、前述の標準5種の囲みに ` を加えてもよさそうな気がしました。
    一般の文書入力における影響は皆無で、プログラミング用途で使っている人には嬉しい、という感じになりそうです。

    ということで、もしバッククォートを共通の囲み文字として含めるかにまだ意見の余地があるようでしたら、含めるに一票とさせてください。

     |  yuko  |  返信
  13. 返信が遅くなってしまい。すみません。

    やはり、データ消失に関するお問い合わせは、ユーザーの皆様もお怒りになると思いますし、そのお気持ちも理解できるので、開発者側としてもメンタル的にきついですね😱

    設定ファイルの問題は解決しましたので、これで安心してプログラミングに取り組めそうです。

    > 例えばJavaScriptならテンプレートリテラルで、MySQLならテーブル名などのオブジェクトで予約語を無視するための囲み (特殊記号ハイフン「-」が入ったテーブル名なんかを指定するときに使ったり) で、BashやMarkdownでは前述のとおり… と、意識してみると、個人的には割と使いどころがそれなりにありました。

    MySQL はニワカですが、ツールとか使うと勝手に ` で囲まれちゃって、うっざ!って思って ' に手動で置き換えていましたが、そんな意味があったのですね😳

    Markdown は、確かに ` は結構使いそう。

    > 主にプログラミング周りで使い道があり、なおかつ通常の文書作成において利用するのは稀であることを鑑みると、前述の標準5種の囲みに ` を加えてもよさそうな気がしました。

    確かに、普段使わないものですし、` を使える人だけが当たり前のように使えると嬉しいですね。

    次のバージョンでは実装する方向で検討してみます!

     |  Kuro  |  返信
  14. > 設定ファイルの問題は解決しましたので、これで安心してプログラミングに取り組めそうです。

    大変ご苦労さまでした。
    ローカルファイルを扱うソフトウェアだから仕方ないのでしょうが、「ファイルが意図せず消えた/書き換わった」系は、なかなかピリピリとしてしまいますね。

    こちらとしては、マクロへのキーマップ盛り盛りな私の環境でも元気に常時安定稼働していますから、安心して利用できています。改めて、ありがとうございます☺️

    > 確かに、普段使わないものですし、` を使える人だけが当たり前のように使えると嬉しいですね。
    >
    > 次のバージョンでは実装する方向で検討してみます!

    やったー、ありがとうございます!

    最近は括弧囲みの操作ができるようになったこともあって、特定文字を囲んで括弧入力できる場面を意識することが増えたため、次の機能強化が間違いなく便利なること請け合いだろうと想像する日々です…🤤

     |  yuko  |  返信
  15. そういえばと思い、念のためお声がけしにきました。

    > やるとしたら、現在、Mery の [対応する括弧を強調する] や [対応する括弧へ移動] で対象になっている括弧、
    > ([{「『【([
    > を対象にするというのが無難かもしれません。

    Kuroさんのいつもの徹底ぶりゆえちゃんと盛り込んでくれているのではないかと思うのですが、IME ON時の入力による囲みでは上記に加え、後から決まった ' " ` でも1文字確定の際に囲まれるようにお願いできればと…🙇‍♂️

     |  yuko  |  返信
  16. > 後から決まった ' " ` でも1文字確定の際に囲まれるようにお願いできればと…🙇‍♂️

    ' " ` ←半角ですよね?その点は大丈夫です😅

    ([{「『【(["'`

    入力された文字に応じて発動する機能なので、↑の文字が入力されたとき、IME のオン/オフにかかわらず、囲みが発動します。

    > Kuroさんのいつもの徹底ぶりゆえちゃんと盛り込んでくれているのではないかと思うのですが

    いやー、いつも凡ミスしてますからねー。お気遣いいただきありがとうございます👍

     |  Kuro  |  返信
  17. > 入力された文字に応じて発動する機能なので、↑の文字が入力されたとき、IME のオン/オフにかかわらず、囲みが発動します。

    おお、IME状態を問わず共通化されていたわけですね。これは失礼しました🙇‍♂️

     |  yuko  |  返信
  18. Kuroさん

    v3.7.2 のリリース、お疲れ様でした。
    そろそろトラックボールマウスにも慣れた頃でしょうか😊

    今日は午後休みだったもので、午前中に新しいMeryをバリバリ使ってみたわけですが、いやぁ、囲み機能がやっぱりいいですね。

    仕事上、検索条件の文字列を バーッ と並べて、ダブルクォーテーションで囲ってSQLを作る…って場面が多く、そんなときにマルチカーソルを便利に使っていたんですが、この機能のおかげでちょっと手数が減ってさらに楽々になりました。

    今回は通常カーソルでの1文字選択時の挙動は従来のままにしたんですね。
    1文字選択で発動する仕様だと、やはり括弧記号を置き換えたいときの誤爆に結構悩まされた感じでしょうか?

    私の方では使っていて逆に以下のような「1文字を囲みたいケース」に遭遇しまして、折角の便利な囲み機能なので、ちょっとご相談したい次第です。

    ~~~ シナリオイメージ ~~~

    文章書き中...

    """
    懸念点:

    1. aaaaaa
    2. bbbbbb
    3. cccccc

    特に2につきましては.....

    """

    ん、"2" はカギ括弧で少し強調するか。

    ── "2" を選択して 「 を入力 ──

    ありゃ、2が消えて 「 だけになってしまった…

    ~~~~~~~~~~~~~~~

    以上のような感じです。(分かりづらかったらすみません…😅)

    以前Kuroさんがおっしゃっていたように、クォーテーション系や括弧系の入れ替えのために「1文字選択→入力」というオペレーションがままあることなのだということを前提として、以下のような仕様としてみたら上記のような状況でも対応できそうと思ったのですが、いかがでしょうか?

    ・「1文字選択 かつ 選択している文字が選択範囲囲み機能に対応している記号」の場合にのみ置き換える

    ちなみに、VSCodeでまた確認してみたところ、' " ` は1文字だけ選択しての入れ替えに対応していました。括弧系については以前から言っていたように1文字だけ選択でも囲まれますね。
    クォーテーションの置き換えはよくあることと見なされてこんな仕様なのかもしれませんね。

     |  yuko  |  返信
  19. 早速お試しいただきありがとうございます。

    トラックボールマウスには、まだ完全には慣れていない状態ですが、Mery で範囲選択をしてもプルプルしないくらいにはなりました😁

    囲み機能について、そう言っていただけると嬉しいです。

    > 今回は通常カーソルでの1文字選択時の挙動は従来のままにしたんですね。
    > 1文字選択で発動する仕様だと、やはり括弧記号を置き換えたいときの誤爆に結構悩まされた感じでしょうか?

    そうなんです。

    1 文字選択で発動する仕様でしばらく使っていたのですが、JavaScript や PHP では " を ' に置き換えたり、ChatGPT で文章チェックすると半角括弧が全角に変換されるので、手動で半角に直す作業が多くて…。そのため、囲み機能の便利さより不便さが目立ってしまいました。

    > ・「1文字選択 かつ 選択している文字が選択範囲囲み機能に対応している記号」の場合にのみ置き換える

    なるほど、それはアリですね。技術的には可能だと思います。(マルチカーソルの場合は難しいですが)

    ちなみに、Mery の 2 文字選択で発動 (マルチカーソルは 1 文字選択で発動) の仕様は Visual Studio 2022 に合わせたものでした。

    …が、Visual Studio 2022 をアップデートしたところ、なんと 1 文字選択で発動の仕様になっていました。

    さらに、ご提案いただいた、選択している文字が囲み機能に対応している記号の場合は、置き換える仕様になっていました。

    また、VSCode とは違って、クオーテーションだけでなく、括弧も置き換えの対象になっているようです。しかも、開き括弧だけでなく閉じ括弧も置き換えの対象になっています。

    なお、Visual Studio 2022 の場合、マルチカーソル時は上記の条件はなく、問答無用で囲みが発動するようです。

    その点、VSCode はマルチカーソルの中に 1 箇所でもクオーテーションが混ざっていると、すべての箇所で囲みが発動しない仕様になっていました。

    そういうわけで、以下のような仕様を検討しています。

    ・「1 文字選択かつ選択している文字が選択範囲囲み機能に対応している記号」の場合にのみ置き換える
    → Visual Studio 2022 方式。クオーテーション、開き括弧、閉じ括弧を対象とする

    【マルチカーソル時】

    ・条件はなく、問答無用で囲みを発動する? (Visual Studio 2022 方式、現状維持)

    ・選択範囲の中に 1 箇所でも条件に当てはまる部分があれば、囲みは発動しない? (VSCode 方式)

    ・選択箇所ごとに条件をチェックして、発動する/しないを分ける?

    というわけで、マルチカーソルの場合、そこまで考えて囲み機能を使うか?という懸念もありますし、選択範囲ごとにチェックする場合、大幅な作り直しが必要になるので、現状維持かなぁと考えています😅

     |  Kuro  |  返信
  20. > トラックボールマウスには、まだ完全には慣れていない状態ですが、Mery で範囲選択をしてもプルプルしないくらいにはなりました😁

    最初プルプルするの、分かりますw 絶対慣れなさそうと思ったものですが、ちゃんと慣れるもんですね。

    > …が、Visual Studio 2022 をアップデートしたところ、なんと 1 文字選択で発動の仕様になっていました。
    >
    > さらに、ご提案いただいた、選択している文字が囲み機能に対応している記号の場合は、置き換える仕様になっていました。

    おお、図らずも、Visual Studioもその仕様になっていたとは。
    巨人の歩いた道を後ろからついていくということで、同じ仕様としても安心ですね!

    マルチカーソルについても、おっしゃるように現行どおりでよいと思います。
    というのも、マルチカーソルって各カーソル位置の文字を意識する認知不可がどうしてもありますが、そこに「文字によっては発動する/しない」という仕様も絡むと、頭の体操にはなりますが、なかなか扱いが難しくなりそうだなと思いました。

     |  yuko  |  返信
  21. > 最初プルプルするの、分かりますw 絶対慣れなさそうと思ったものですが、ちゃんと慣れるもんですね。

    アドバイスいただいた [ポインターの精度を高める] 設定のおかげです😊

    今は徐々にポインターの速度を上げて慣れているところですが、yuko さんはどれぐらいの速度に設定していますか?

    目標があると練習のやりがいが出るので、参考までに教えていただけると嬉しいです🙇‍♂️

    【マウスのプロパティ】(Logicool Options はインストールしていません)
    https://imgur.com/DF2bMLE

    > そこに「文字によっては発動する/しない」という仕様も絡むと、頭の体操にはなりますが、なかなか扱いが難しくなりそうだなと思いました。

    そうなんですよね。どこかのサイトで見かけたレビューで、マルチカーソルはテトリスみたいで楽しいというご意見がありましたが、文字によって条件が付くと、ボンブリスぐらいには難しくなりそうですね。

    それでは、前回検討した仕様のほうで開発を進めたいと思います。

     |  Kuro  |  返信
  22. > ChatGPT で文章チェックすると半角括弧が全角に変換されるので、手動で半角に直す作業が多くて…。そのため、囲み機能の便利さより不便さが目立ってしまいました。

    そういえば最近、無料利用ユーザーとしては嬉しい機能が、ChatGPT競合サービス「Claude」で出てきたので、ちょっぴり雑談程度にご紹介まで。
    https://claude.ai/

    以下の記事で行われているようなことができます (しかも無料で…):

    Claudeの新機能「Artifacts」を使って簡易Todoアプリを作って遊ぶ - NIFTY engineering https://engineering.nifty.co.jp/blog/27182

    この「Artifacts」機能、コーディングだけでなく、Mermaidの作図 & プレビューもチャット画面で完結したりと、業務プロセス図もたたき台を一瞬で表示までできたり。便利だなーと思う気持ちが一周回って引いてしまうほどの機能性でした😅

    その他、「Perprexity」というサービスもなかなか面白いです。
    https://www.perplexity.ai/

    最近ではソフトバンクと手を組んで1年の有料プランサービスなんかをしているので聞いたことがあるかもしれませんが、「検索特化、エビデンスに基づく回答をするAI」を謳うだけに、ハルシネーションが少ないようです。
    こちらも無料で使っていますが、各回答に至っている情報源をしっかり示してくれるので安心感があります。
    また裏側はGPTやClaude含む、複数のAIが処理しているのだとか。

    すごいですねぇ、AIって…🙄

     |  yuko  |  返信
  23. > 今は徐々にポインターの速度を上げて慣れているところですが、yuko さんはどれぐらいの速度に設定していますか?

    私はちょうど速度目盛りど真ん中 (Windowsデフォルト位置) の設定で運用してます!
    私の周りの人は、ど真ん中より +1~+2 程度で使っている人が多いですが、そこまで行くと私には速すぎて… 大きく動かしたいときはトラックボールなら勢いよく シャーッ と転がす使い方ができるので、そこまでは速くしなくてもいいかなーと思っている派です。

    > そうなんですよね。どこかのサイトで見かけたレビューで、マルチカーソルはテトリスみたいで楽しいというご意見がありましたが、文字によって条件が付くと、ボンブリスぐらいには難しくなりそうですね。
    > それでは、前回検討した仕様のほうで開発を進めたいと思います。

    いやぁ、テトリスくらいがちょうどいいですねw
    細かな仕様変更であるもののとても便利になりそうで、楽しみです😉

     |  yuko  |  返信
  24. > そういえば最近、無料利用ユーザーとしては嬉しい機能が、ChatGPT競合サービス「Claude」で出てきたので、ちょっぴり雑談程度にご紹介まで。

    情報ありがとうございます。Claude は初めて聞きました。

    早速、登録して試してみましたが、Artifacts ってすごいですね🤯 まさかアプリまで作ってくれるとは…。

    試しに SVG で Mery のアイコンを作ってもらったら、本当にそれっぽいのが出来上がって驚きました。

    ただ、ハルシネーションはありますね。テキストエディター Mery について聞いてみたら、「テキストエディター Mery の作者は巳上 (みかみ) 氏です」って、誰それ?って感じでしたw

    ふむふむ、Perplexity はきちんと正しい情報を情報元付きで返してくれました。

    最近は EmEditor さんが AI に力を入れているみたいで、私も興味はあるのですが、どのサービスも API を使うには課金が必要なので、ちょっとハードルが高いんですよね。

    > 私はちょうど速度目盛りど真ん中 (Windowsデフォルト位置) の設定で運用してます!

    教えていただきありがとうございます!

    試しに真ん中にしてみましたが、うわっ、速い!ちょっとプルプルしますね😨 でも、ディスプレイが 3 枚あるのでこれくらいの速度に慣れると快適になりそうです。

    私も真ん中を目標に、快適に Mery を開発できるよう、練習がんばります!

    貴重な情報をありがとうございました😊

     |  Kuro  |  返信
  25. Kuro さん

    括弧で囲む機能、アップデートありがとうございました!存分に活用させていただきます😁

     |  yuko  |  返信
  26. 早速お試しいただき、ありがとうございます!

    括弧で囲む機能、おかげさまで良い感じに仕上がりました。うまく動作しているといいのですが…😢

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