DaigoV2.7

今回のバージョンアップは、機能の追加というよりバグフィックスとなります。

1.アプリによる動作の違い

Daigoの反転表示は、確実にカーソル位置に挿入語が表示されるので分かりやすいのですが、アプリによっては問題があることが分かりました。

以下は、ExcelでDaigoを使っている動画です。

特に問題が無く使えていますが、これはExcelで文字を入力する場合に、F2キーを押してセルの中にカーソルを入れているからです。

これを、セルを選択するだけで操作すると、以下のようになります。

反転表示もおかしくなりますし、2回目ではエスケープを押しても「Cc」を入力することができません。
これは、Excelがセルを選択しているだけの状態では、通常の入力とは異なった動作をするからです。

他にも、このような動作をするアプリはあるかもしれませんが、いちいちF2キーを押すように気を付けるのも大変です。

2.ツールチップによる表示

そこで、カーソル位置にいつも表示することはできなくなりますが、確実にどのアプリでも正しく動作させるためにツールチップに挿入語を表示できるようにしました。以下のような動作になります。

正しく表示されますし、エスケープによる「Cc」 の入力も問題なくできるようになりました。

アプリによっては、カーソル位置を取得できない場合がありますが、そのときはマウスポインターの位置に表示するようにしました。

この動作は、設定できりかえることができますので、アプリで使いわけると便利になると思います。

 

7件のコメント

  1. お世話になります。
    Daigoにつきまして、一点、質問させてください。

    サクラエディタを使ってソフトウェア開発をしております。
    サクラエディタにはコードスニペット機能がなく、
    一般に使えるスニペットツール探している時に、
    Daigoに出会いました。
    すぐに、これは素晴らしいツールだと思い、使い始めました。
    しかし、残念ながら今、使用を断念しつつあります。

    その理由は以下です。
    コードスニペットに使用するには、
    タブによるインデントを含む複数行入力が必要です。
    一方、サクラエディタには、自動インデントという機能があり、
    改行した際に、上の行と同じタブを自動的に入力してくれます。
    ソフトウェア開発にはこれは必須機能です。
    しかし、残念なことにこの機能が{Ent}と非常に相性が悪い。
    複数行の下の方にいくにつれて、タブがどんどん挿入され、整形できません。

    このような現象をどうにかできる機能はないものでしょうか?
    個人的には、ASCIIコード”\n”を直接入力できるか、
    または、バックスペースが入力できれば、
    うまくいくような気がしています。

    1. Daigoをご利用いただいてありがとうございます。
      早速、こちらでもサクラエディタを入れて動作を確認してみました。

      Daigoに次の登録をしました。
      Etest:aaa{Ent}bbb{Ent}ccc{Ent}

      最初に「abcd」と手入力して改行し、次の行でTABでインデントしました。
      そこで「Eent」とキーワードを入れて実行した結果は次の通りでした。

      abcd
      aaa
      bbb
      ccc

      自動インデントのまま入力されているので、何が問題か分かりませんでした。
      お手数ですが、どのような動作が問題か、もう少し詳細をお伝え願えないでしょうか?

      1. すみません。
        コメント欄ではTABは無視されて分かりずらくなりました。
        実際には1段階のインデントがaaa,bbb,cccの行に適用されていました。

        よろしくお願いします。

  2. 早速のご回答ありがとうございます。
    うまく説明できていなくてすみません。
    コーディングに使用する時には、下記のような記述が頻出します。
    ———————
    if (i == 0)
    {
    [タブ]x = 0;
    }
    ———————
    これが、下記のようになり、整形が崩れてしまいます。
    ———————
    if (i == 0)
    {
    [タブ]x = 0;
    [タブ]}
    ———————
    何か良い回避方法ありますでしょうか?

    1. 問題が分かりました。
      というより、これはサクラエディタの仕様で自動インデントという機能でこのようになります。
      これは、手入力しても同じことで「}」を入力しても、自動インデントされてしまいます。

      解決方法は2つあります。

      一つはサクラエディタのスマートインデントを使うという方法です。「}」を見つけると自動的に一つインデントを消してくれます。
      ただし、CとC++にしか対応していないとのことです。

      もう一つは、もっと汎用的な方法で、daigoの仕様を拡張する方法です。daigoでカーソル移動やバックスペースなどを指定できるようにすれば、今回のように「}」を入力したあとに、カーソルを左に一つ移動してバックスペースを入れれば、自動インデントを一つキャンセルできるようになります。

      これはdaigoの仕様を大きく変更することになりますが、とても汎用的になるので、検討してみます。
      おそらく、この機能拡張すると{c}といったカーソルポジションの制御は難しくなるので、別のモードとして使えるように実装しようと思います。

      いずれにせよ、この機能拡張をすれば、daigoで相当汎用的なキー操作指定ができるようになるので、有用だと思います。

      実装にはしばらく時間がかかると思いますので、しばらくお待ちください。

    2. Takeda様

      記事にも書きましたが、Rawモードという機能を追加して、自動インデントのキャンセルをできるようにしました。

      Rawモードは、いつか実装しようと考えていましたが、今回のご要望を機会に追加を試みました。

      思ったより簡単に実装できましたので、近々Vectorに登録いたします。
      マニュアルを書かなければいけませんので、少し時間がかかりそうです。

  3. こんなに迅速に対応していただけるとは、驚きです。
    本当にありがとうございます。
    楽しみにしております。

Takeda にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です