[質問] 行番号/ルーラーの右クリックポップアップメニューをOFFにする方法

  1. こんにちは。いつも便利に使わせていただいております。
    行番号・ルーラーの右クリックポップアップメニューの挙動について
    質問させてください。

    キーボードのメニューキー押下時に表示される右クリックポップアップメニューですが、
    キー押下時のマウスポインタの位置により、
    行番号のメニュー or ルーラーのメニュー or エディタのメニュー
    と変わってしまい、エディタのメニューに登録してあるマクロをすぐ実行したいのに
    違うメニューが出てきてヤキモキすることが増えました。

    私は基本的にマウスを使いませんが、キーボードのメニューキーは多用します。
    そこで、行番号及びルーラーの右クリックメニューをOFFにしたいのですが、
    やり方がわかりません。
    お忙しいところ大変恐縮ですが、これらのメニューをOFFにする手順、
    もしくはキーボードのメニューキーを押下した時は
    常にエディタの右クリックポップアップメニューが出るようにする設定を教えてください。
    よろしくお願いします。
    ---
    Mery: 3.8.2 (x64)
    Oniguruma: 6.9.10
    C/Migemo: 1.3
    Tidy: 5.8.0
    Hunspell: 1.7.1
    uchardet: 0.0.8
    QuickJS: 0.11.0
    OS: Windows 11 (Version 25H2, OS Build 26200.8037, 64-bit Edition)

     |  mil96  |  返信
  2. ご愛用いただき、ありがとうございます。

    Mery 3.8.2 では、行番号やルーラー、エディター本体の右クリックメニューが、マウスポインターの位置に応じて自動で切り替わるようになっています。

    そのため、キーボードのメニューキーを押しても、マウスポインターの場所によって表示されるメニューが変わってしまいます。

    残念ながら、現バージョンでは行番号やルーラーの右クリックメニューを完全に OFF にする設定はありません。

    この挙動は意図的な仕様ではなく、私自身が普段あまりメニューキーを使っていなかったため、気づいていませんでした。

    実際、キーボードからポップアップメニューを呼び出す場合は、マウスポインターの位置に左右されず、エディターのポップアップメニューに固定されていた方が使いやすいですよね。

    次のバージョンでは、行番号やルーラーの右クリックメニューはそのまま残しつつ、メニューキーから呼び出したときは常にエディターのポップアップメニューが表示されるよう、調整してみます。

    貴重なご意見、ありがとうございました。

     |  Kuro  |  返信
  3. こんにちは。早速のご回答ありがとうございます。

    >次のバージョンでは、行番号やルーラーの右クリックメニューはそのまま残しつつ、
    >メニューキーから呼び出したときは常にエディターのポップアップメニューが表示されるよう、調整してみます。

    ありがとうございます!本当に助かります!!
    シンプルかつマクロやプラグインで自分流に拡張できる(+好きな背景も設定できる)
    ので普段使いのエディタとして手放せないものになりました。
    エディタの右クリックメニューに色々詰め込みすぎな私の使い方もどうかと思いますが、
    本当に便利なのでこうしていただけるとうれしいです。
    対応バージョン楽しみにしております。

    暖かい季節にはなってきましたが寒暖差も激しいので、
    くれぐれもご無理なさらぬようお身体には気を付けてください。
    これからも応援しております。

     |  mil96  |  返信
  4. 暫定処置としてAutoHotkeyでマウスカーソルを動かし回避する方法
    多分Meryのスクリプトでも同じことはできる気がします。

    MoveSend(keycode) {
        MouseMove(160, 160)
        Send(keycode)
    }
    #HotIf WinActive("ahk_exe Mery.exe")
        AppsKey:: MoveSend("{AppsKey}")
    #HotIf
    
     |  enaka  |  返信
  5. >> mil96 さん

    ご返信ありがとうございます。

    > シンプルかつマクロやプラグインで自分流に拡張できる(+好きな背景も設定できる)ので普段使いのエディタとして手放せないものになりました。

    背景を設定できると、やっぱりモチベーションが上がりますよね。

    ただこの機能、どうしても多少の動作速度を犠牲にしてしまうため、テキストエディターガチ勢の方にはあまり好まれない機能でもあります。

    それでも個人的には、「気分よく使えるのも大事」ということで、そこはロックな気持ちで実装しています。実用性とロマンのせめぎ合いですね。

    > 暖かい季節にはなってきましたが寒暖差も激しいので、くれぐれもご無理なさらぬようお身体には気を付けてください。これからも応援しております。

    お気遣いいただきありがとうございます。

    たしかに寒暖差のせいか、くしゃみが止まらない今日この頃です。いや、もしかして花粉でしょうか。もう鼻がぐじょぐじょです。

    そんな状態ではありますが、ようやく次のバージョンが完成しまして、現在、公開に向けて最終調整中です。

    右クリックメニューの調整も組み込みましたので、もう少しだけお待ちいただければ幸いです。

    >> enaka さん

    ご無沙汰しております。

    気づけばほぼ 3 カ月半更新なしということで、Mery 史上いちばん更新間隔が空いている気もしますが、開発者はちゃんと生きております。

    正直なところ、「もう v3.8.2 でファイナルアンサーでもええんちゃう?」と思ったりもしつつ、

    • Google 日本語入力の謎バグと戦ったり
    • 「QuickJS v0.12.0 来てるやん!」と思ったら
    • 「v0.12.1 も来てるやん!」というコンボを食らったり

    などしているうちに、気づけば時間が過ぎておりました。

    ただ、それだけの更新では少し物足りない気もして、ついでに縦線を引く機能などを作ったりしていた感じです。

    次のバージョンも相変わらず地味な更新ではありますが、「お、なんか増えてるやん」くらいの気持ちで見ていただければ嬉しいです。どうかお手柔らかにお願いします。

     |  Kuro  |  返信
  6. > 気づけばほぼ 3 カ月半更新なしということで、Mery 史上いちばん更新間隔が空いている気もしますが、開発者はちゃんと生きております。

    メーテルも星になってしまわれた。
    ソフトウェア界隈だとクイックソートの発明者アントニー・ホーア先生が2週間前に亡くなられました。ドナルド・クヌース先生と並んでソフトウェア理論の創始者ともいえる方です。

    > 正直なところ、「もう v3.8.2 でファイナルアンサーでもええんちゃう?」と思ったりもしつつ、

    いよいよベータが取れてリリース間近ですね。
    最近、ネットワーク越しにファイルを編集する必要があり、TEditorMXというテキストエディタが軽量コンパクトながら、SSH/Telnetを内蔵していてシームレスに編集出来て良い感じでした。
    https://muroix.com/teditormx/gosyokai.html

    > - Google 日本語入力の謎バグと戦ったり

    Mozc IMEのビルド手順が2日前に更新されて、Windows版でも簡単にビルドできるようになったようです。
    手元でビルドしたMozcで直っていたら、Google IMEもそのうち直るだろうから戦わなくてもいいかもです。
    https://github.com/google/mozc/blob/master/docs/build_mozc_in_windows.md

    マイクロソフトの新しいIME「Copilot Keyboard」も、変換ウインドウが小さくできたりユーザー辞書を反映出来たりと、3月の更新で当たり前のことがだいぶまともになりました。
    重いけど。試していませんが、MS-IMEのシステム辞書ファイルをCopilot Keyboardのシステム辞書ファイルで上書きするとそのまま使えるそうです。

    > - 「QuickJS v0.12.0 来てるやん!」と思ったら
    > - 「v0.12.1 も来てるやん!」というコンボを食らったり

    動画ダウンローダーのyt-dlpがJavascriptによるDL回避対応のためQuickJSを利用したり、w3mをリスペクトしたテキストウェブブラウザのchawanがCSSとJavascript対応のためQuickJSを利用したり、と広く使われ始めたので大胆な仕様変更はもうない、と思いたいです。

    chawanをMSYS2/UCRT64でビルド出来ないかいろいろ試したのですが挫折しました。ちょっと不勉強だったせいで使われているNim言語が全然わからん。
    C言語のソースに変換されるので高速でCライブラリとも相性がよく、Modula-3とDelphiの機能をリスペクトしたPython風インデントによる言語らしい。
    20年の歴史があり、Nim自身は最初Pascalで書かれていたそうです。
    https://chawan.net
    https://nim-lang.org

     |  enaka  |  返信
  7. >> enaka さん

    メーテルさんやアントニー・ホーア先生、時代を築いてきた方々がいなくなっていくのは寂しいですね。

    先月は Explzh の開発者様の訃報もあり、フリーウェアを開発している身として、かなりショックを受けました。

    > Mozc IMEのビルド手順が2日前に更新されて、Windows版でも簡単にビルドできるようになったようです。

    情報ありがとうございます。おお、たしかにこれは面白そうですね。

    というわけで、2時間ほどかかりましたが、無事にビルドできました。…が、手順書の最後にあるインストール用の1行、

    python build_tools/open.py bazel-bin/win32/installer/Mozc64.msi
    

    ここだけがうまく動かずにハマってしまい、最初からやり直す羽目に。結果として、さらに2時間ほど余計にかかってしまいました。

    どうやら以下の問題が原因のようで、Mozc64.msi を別フォルダーにコピーしてから実行する、というシンプルな方法で解決しました。(追加の2時間、返してほしいですね…w)

    【参考】https://github.com/google/mozc/issues/1283

    > 手元でビルドしたMozcで直っていたら、Google IMEもそのうち直るだろうから戦わなくてもいいかもです。

    早速試してみたのですが…ぐふっ。

    Mozc でも同じ現象を確認しました。どうやら、まだ修正されていないようです。(Mozc / Google IME の不具合ではない可能性もありますが…ちなみに、Google IME の謎バグは以下のリンクの件です)

    【参考】Google日本語入力での入力モードの表示位置が左上に固定されることがある
    https://www.haijin-boys.com/discussions/9831

    > マイクロソフトの新しいIME「Copilot Keyboard」も、変換ウインドウが小さくできたりユーザー辞書を反映出来たりと、3月の更新で当たり前のことがだいぶまともになりました。

    私もその記事は軽く拝見しましたが、以前試しにインストールした際、CPU ファンが爆音で回り続けるほど重かったのが印象に残っており、変換ウィンドウが小さくなったと聞いても、いまひとつ試す気力が湧かないのが正直なところです。

    > C言語のソースに変換されるので高速でCライブラリとも相性がよく、Modula-3とDelphiの機能をリスペクトしたPython風インデントによる言語らしい。
    > 20年の歴史があり、Nim自身は最初Pascalで書かれていたそうです。

    chawan も Nim もこれまで知らなかったのですが、どちらも興味深いですね。chawan のソースコードを少し見てみたところ、どことなく Delphi っぽさを感じました。

    また、QuickJS のヘッダーが Nim 言語で書き直されているようで、このあたりは Mery と似た構成にも見え、参考になりそうです。

     |  Kuro  |  返信
  8. > どうやら以下の問題が原因のようで、`Mozc64.msi` を別フォルダーにコピーしてから実行する、というシンプルな方法で解決しました。(追加の2時間、返してほしいですね…w)
    >
    > 【参考】https://github.com/google/mozc/issues/1283

    環境変数TEMP=C:\ProgramData\Temp をRAMディスクへのジャンクションにしていて、たまにインストーラーやアンインストーラーで見たエラーです。具体的にはPaint.NETとMiKTeX。

    > Mozc でも同じ現象を確認しました。どうやら、まだ修正されていないようです。(Mozc / Google IME の不具合ではない可能性もありますが…ちなみに、Google IME の謎バグは以下のリンクの件です)
    >
    > 【参考】Google日本語入力での入力モードの表示位置が左上に固定されることがある
    > https://www.haijin-boys.com/discussions/9831

    特定のフォーカスで変換モード変更時のポインタ参照に初期化漏れがあってNULL座標を読んでいるんでしょうね。
    場所さえわかればGoogle IME側の一行パッチで直ってしまう気がします。

     |  enaka  |  返信
  9. > 環境変数TEMP=C:\ProgramData\Temp をRAMディスクへのジャンクションにしていて、たまにインストーラーやアンインストーラーで見たエラーです。具体的にはPaint.NETとMiKTeX。

    うはぁ、まさにそれです。完全にハマりました…。

    Windows だと、シンボリックリンクやジャンクションがうまく扱えないケースがあるのかしら…?

    > 特定のフォーカスで変換モード変更時のポインタ参照に初期化漏れがあってNULL座標を読んでいるんでしょうね。
    > 場所さえわかればGoogle IME側の一行パッチで直ってしまう気がします。

    なるほど、そう言われてみると、以前 Wine の IME で似たような現象があるというご報告をいただいたのを思い出しました。

    【参考】ShowCaretとSetCaretPos関数の呼び出し順序変更依頼。
    https://www.haijin-boys.com/discussions/9718

    ↑ これは Wine の IME 向けの例外的な対応ですが、v3.8.0 で組み込みました。

    Mozc も Windows 専用というより、もともとクロスプラットフォームで開発されているものなので、そのあたりで初期化まわりに抜けがある可能性もありそうですね。

    ひとまず、Mery 側で対策を入れておきますか…。

     |  Kuro  |  返信
  10. 完全に脱線した雑談です。

    > chawan も Nim もこれまで知らなかったのですが、どちらも興味深いですね。

    言語処理系の知識をリフレッシュすべくAIに質問していて、C言語の公式Webサイトからgcc以前の古のCコンパイラ pcc(Portable C Compiler) の公式Webサイトを知りました。
    (残念ながらすでに2023年末に閉鎖していて、Internet Arcaiveへのリンク)

    https://www.c-language.org > tools > compilers > ppc (誤字ってる)
    https://web.archive.org/web/20231212090621/http://pcc.ludd.ltu.se/

    pcc のソースファイルはアーカイブしておらず他を探してみたところ、github で20210810時点までのソースを見つけました。
    (今のところ最終版と思われる20230127は見つかりません)

    https://github.com/pmer/pcc

    少しの修正でMSYS2環境でビルド出来ました。ピッタリ31KBのC99コンパイラです。

    enaka:~/tmp/pcc-main $ ls -l cc/cc/cc.exe
    -rwxr-xr-x 1 enaka none 31744 2026-03-22 20:51 cc/cc/cc.exe

    1、configure スクリプトが MSYS2(Cygwin) に対応していないため、定義を追加

    --- pcc-main.orig/configure 2021-08-10 10:00:02.000000000 +0900
    +++ pcc-main/configure 2026-03-22 18:01:46.627377200 +0900
    @@ -2694,6 +2694,17 @@
    altlibdir="c:/mingw/lib"
    ;;

    + cygwin*)
    + targos=win32
    + abi=pecoff
    + stabs=yes
    + wchar_type=USHORT
    + case "$target_cpu" in
    + i?86) targmach=i386 ;;
    + x86_64) targmach=amd64 ;;
    + esac
    + ;;
    +

    2、compat.h で定義している関数 strlcpy,strlcat,ffs が見つからないため、pcc-main/mip/manifest.h に定義を追加

    --- pcc-main.orig/mip/manifest.h 2021-08-10 10:00:02.000000000 +0900
    +++ pcc-main/mip/manifest.h 2026-03-22 19:55:20.606181300 +0900
    @@ -43,6 +43,10 @@
    #include "node.h"
    #include "compat.h"

    +extern size_t strlcpy (char *, const char *, size_t);
    +extern size_t strlcat (char *, const char *, size_t);
    +extern int ffs(int);
    +

    3、変数 true,false が使われていて今時はエラーになるため、以下のファイルで変数を flag_true,flag_false にリネーム

    pcc-main/cc/ccom/trees.c
    pcc-main/cc/cxxcom/trees.c

    4、ビルド

    enaka:~/tmp/pcc-main $ ./configure ; make

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