要望:全画面表示時にまつわる要望

  1. いつも大変お世話になってます。
    さりげない美しさ、入力時のストレスのなさを追求しているMeryが大好きです。

    すみません。今日は要望があります。(しかも5つも。。すみません)
    全画面にした場合に関するものです。もし現状でもこうすればできるよとかありましたら、教えてください。お願いします。

    ●要望1
    「指定文字数で折り返し」状態で全画面表示にした際は、左右の余白を同じにしたい。(現状は左詰で、右余白が大きい。希望は画面の中央に文字が並ぶ感じです)

    ●要望2
    全画面表示にしたとき、ウィンドウのタブやスクロールバーも消したい(欲を言えば、ウインドウの枠自体も消したいです)

    ●要望3
    IMEのON/OFFを何らかの方法でキャレット付近に表示したい。
    (ちなみに秀丸はカーソル行の下線の色で表現。xyzzyはキャレットの色で表現。個人的にはキャレットの色がいいです)

    ●要望4
    Emacsの行のセンタリングのように、カーソル行がウインドウの中央にくるようなコマンドがほしい。(ショートカットとして割り当てたい)

    ●要望5
    すべてのコマンドを表示したい。(秀丸の「その他」→「コマンド一覧」みたいな感じ。できればそれをEscなどにショートカットとして割り当てたい。これは全画面表示にしたときに簡単にキーボードから各コマンドにアクセスしたいというのが目的です)

    ●要望6(番外)
    縦書き(は無理ですね…)

    勝手な要望ですが、ご検討いただけるとうれしいです。
    よろしくお願いします。

     |  kk  |  返信
  2. ご愛用ありがとうございます。

    > さりげない美しさ、入力時のストレスのなさを追求しているMeryが大好きです。

    ありがとうございます。

    > ●要望1
    > 「指定文字数で折り返し」状態で全画面表示にした際は、左右の余白を同じにしたい。(現状は左詰で、右余白が大きい。希望は画面の中央に文字が並ぶ感じです)

    技術的には可能だと思いますが、ちょっと美しく実装する自信がありませんね…。文章を集中して書く時のモードみたいなのだと思いますが ^^;

    > ●要望2
    > 全画面表示にしたとき、ウィンドウのタブやスクロールバーも消したい(欲を言えば、ウインドウの枠自体も消したいです)

    「ウィンドウ」→「タブを有効にする」のチェックを外してタブモードを解除して、F11 キーか「表示」→「全画面表示」にすればタブとウィンドウの枠は消えると思います。

    (戻すときは画面の上端にマウスを持っていくか F11 キーをもう一度)

    スクロールバーは仕様的に消せそうにありませんので、上にガムテープでも貼り付けて見えないようにするしかないかと (ォィ

    > ●要望3
    > IMEのON/OFFを何らかの方法でキャレット付近に表示したい。
    > (ちなみに秀丸はカーソル行の下線の色で表現。xyzzyはキャレットの色で表現。個人的にはキャレットの色がいいです)

    これは数回ご要望を頂いたことがありますが、Mery 内部で実装するよりも「SetCaretColor」っていう定番フリーソフトがありますのでそちらをご利用いただければ他のアプリとかにも適用できますし便利ですよ。

    参考リンク: https://yossense.com/set_caret_color/
    ダウンロード: http://www.vector.co.jp/soft/dl/winnt/writing/se429127.html

    > ●要望4
    > Emacsの行のセンタリングのように、カーソル行がウインドウの中央にくるようなコマンドがほしい。(ショートカットとして割り当てたい)

    これはご要望があったため一応隠し機能で実装はしているものの、カーソルが常にウィンドウの中央にくる状態というのはとても使いづらいと思います。

    使いづらさを体験したい場合、Mery.ini の [General] セクションに ScrollMargin=200 みたいに1画面におさまる行数よりデカイ数字を適当に指定してやれば常に画面中央にカーソルが来る感じになります。

    ----
    [General]
    ScrollMargin=200
    ----

    たぶん体験すると、あ、コレいらねーや。ってなると思います ^^;

    > ●要望5
    > すべてのコマンドを表示したい。(秀丸の「その他」→「コマンド一覧」みたいな感じ。できればそれをEscなどにショートカットとして割り当てたい。これは全画面表示にしたときに簡単にキーボードから各コマンドにアクセスしたいというのが目的です)

    「ヘルプ」→「キーボードマップ」でコマンド一覧を表示させることはできますが、そこから機能を呼び出すことはできませんね。

    全画面表示時 (F11) にキーボードから各コマンドにアクセスしたいということでしたら、「ALT + F」や「ALT + E」などの「ファイル(F)」とか「編集(E)」のトップメニューのキーだけ覚えておけば、「ALT + F」でメニューが開いた後に「方向キー」でほかのメニューも開けますよ。

    > ●要望6(番外)
    > 縦書き(は無理ですね…)

    開発に挑戦したことはありまして、技術的には可能だったのですが当時はまだ DirectWrite (文字を美しく描画する機能) が縦書きに対応していなかったので実装には至りませんでした。

    Windows 8 以降では DirectWrite も縦書きに対応しているとの情報がありましたので、技術的に不可能な話ではないと思いますが、情報が少なすぎて厳しいところですね。

    秀〇さんみたいに縦書きのときは DirectWrite 使えません。みたいな限定的な対応ならできるのですが、縦書き使う人って文章を主に書く人だと思うので DirectWrite なしはあまり意味がないかなと思いますし…

     |  Kuro  |  返信
  3. お世話になってます。
    忙しい中、お返事ありがとうございます。

    > > ●要望1 全画面でテキストを中央に配置

    > 技術的には可能だと思いますが、ちょっと美しく実装する自信がありませんね…。文章を集中して書く時のモードみたいなのだと思いますが ^^;

    そうなんですね。せっかく全画面にしたのに、テキストが左に寄っているのがどうしても気になってしまって。でも美しくなかったらMeryらしくないですよね。。。

    > > ●要望2 全画面でウィンドウのタブやスクロールバーも消したい

    > 「ウィンドウ」→「タブを有効にする」のチェックを外してタブモードを解除して、F11 キーか「表示」→「全画面表示」にすればタブとウィンドウの枠は消えると思います。
    > (戻すときは画面の上端にマウスを持っていくか F11 キーをもう一度)

    了解です。そうします!
     
    > スクロールバーは仕様的に消せそうにありませんので、上にガムテープでも貼り付けて見えないようにするしかないかと (ォィ

    やっぱりガムテは万能ツールですね。。。
    了解です。

     
    > > ●要望3  IMEのON/OFFを何らかの方法でキャレット付近に表示したい。

    > これは数回ご要望を頂いたことがありますが、Mery 内部で実装するよりも「SetCaretColor」っていう定番フリーソフトがありますのでそちらをご利用いただければ他のアプリとかにも適用できますし便利ですよ。

    ありがとうございます。使ってみます。

    > > ●要望4 カーソル行がウインドウの中央にくるようなコマンドがほしい。

    > これはご要望があったため一応隠し機能で実装はしているものの、カーソルが常にウィンドウの中央にくる状態というのはとても使いづらいと思います。

    確かにずっと中央に位置してると使いづらいですよね。ただ、いつも中央にあるわけじゃなくて、コマンドを実行したときだけ、カーソル行が中央に来るって感じをイメージしてました。

    [General]
    ScrollMargin=200
    をやってみたんですが、うまくいかなかった。。Mery.exeと同じディレクトリにあるユーザ名のフォルダ内のMery.iniに上記を追加して、Meryを再起動すればいいんですよね。
    (Mery2.6.1 on Windows10Pro(32bit,1703))

    > > ●要望5  すべてのコマンドを表示したい。

    > 「ヘルプ」→「キーボードマップ」でコマンド一覧を表示させることはできますが、そこから機能を呼び出すことはできませんね。
    > 全画面表示時 (F11) にキーボードから各コマンドにアクセスしたいということでしたら、「ALT + F」や「ALT + E」などの「ファイル(F)」とか「編集(E)」のトップメニューのキーだけ覚えておけば、「ALT + F」でメニューが開いた後に「方向キー」でほかのメニューも開けますよ。

    そうですね。そうします!

    > > ●要望6(番外) 縦書き
     
    > 開発に挑戦したことはありまして、技術的には可能だったのですが当時はまだ DirectWrite (文字を美しく描画する機能) が縦書きに対応していなかったので実装には至りませんでした。
    > Windows 8 以降では DirectWrite も縦書きに対応しているとの情報がありましたので、技術的に不可能な話ではないと思いますが、情報が少なすぎて厳しいところですね。

    なんと、挑戦されていたんですね。気長に待ってます!

    > 秀〇さんみたいに縦書きのときは DirectWrite 使えません。みたいな限定的な対応ならできるのですが、縦書き使う人って文章を主に書く人だと思うので DirectWrite なしはあまり意味がないかなと思いますし…

    そうなんですよ。秀〇さんは縦書きにした途端、DirectWriteが切れちゃって、暗い気分になっちゃうんです。

    いろいろありがとうございます。
    要望1(と6)の実装を、Meryを使いながら気長に待ってます。

    これから開発がんばってください!

     |  kk  |  返信
  4. ご返信ありがとうございます。

    > 確かにずっと中央に位置してると使いづらいですよね。ただ、いつも中央にあるわけじゃなくて、コマンドを実行したときだけ、カーソル行が中央に来るって感じをイメージしてました。

    なるほど、そういうことでしたか。
    カーソル行を中央に持ってくるぐらいならマクロでできるような気がしますね。
    (サンプルなのでもうちょっと改善の余地はありそうですが…)

    sample.js
    --------
    Redraw = false;
    with (document.selection) {
        var cx = GetActivePointX(mePosView);
        var cy = GetActivePointY(mePosView);
        var sx = ScrollX;
        var sy = ScrollY;
        SetActivePoint(mePosView, 1, sy, false);
        PageDown(true);
        y = GetBottomPointY(mePosView ) - GetTopPointY(mePosView);
        PageUp(false);
        SetActivePoint(mePosView, cx, cy, false);
        ScrollX = sx;
        ScrollY = cy - y / 2 + 2;
    }
    Redraw = true;
    --------

    適当に「xxxx.js」のような名前を付けて Mery の Macros フォルダに保存して、「マクロ」→「選択」でそのファイルを選択すれば登録完了。「マクロ」メニューの中に表示されるようになります。

    「オプション」からキー割り当ても可能です。

    > Mery.exeと同じディレクトリにあるユーザ名のフォルダ内のMery.iniに上記を追加して、Meryを再起動すればいいんですよね。

    言い忘れていました ^^;
    Mery.ini は Mery を終了させた状態でメモ帳など Mery 以外のエディタで編集してください。(Mery 終了時に Mery.ini は上書きされてしまいますので)

    Mery.ini の場所は「ヘルプ」→「バージョン情報」を開いて Mery のアイコンの絵のところをダブルクリックすればフォルダが開きます。(Mery を終了させるのをお忘れなく)

    でもこれはご希望の動作ではなさそうなので試す必要ないかもですね…。

     |  Kuro  |  返信
  5. お世話になってます。

    > 適当に「xxxx.js」のような名前を付けて Mery の Macros フォルダに保存して、「マクロ」→「選択」でそのファイルを選択すれば登録完了。「マクロ」メニューの中に表示されるようになります。

    やってみました。できました。ありがとうございます。

    > Mery.ini の場所は「ヘルプ」→「バージョン情報」を開いて Mery のアイコンの絵のところをダブルクリックすればフォルダが開きます。(Mery を終了させるのをお忘れなく)

    こんなところに近道が!
    Mery.iniはAppDataのほうにあったんですね。
    それでScrollMargin=200を追加してみたんですが、確かにいらないですね、これは。

    これからもよろしくお願いします。

     |  kk  |  返信