マルチストロークモードの解説

と言うわけで、機能として存在はしているのだけれども、実際には何の仕事も当てられていないマルチストロークモード

これって、ヘルプだけ読んでも実際何の機能があるのか全然分からないところがあるので、何か機能を継ぎ足して、開発者側は何の意図でこれを積み込んだのかとかを考えてみましょう

まずは、scriptフォルダのstd.javascript.txtを参照


f.onKeyQ = function (arg, classname, methodname) {
  if (App.Prop('plaintext', '$multi-stroke') == '') {
    App.Prop('plaintext', '$multi-stroke') = 'Ctrl+Q';
    App.Prop('plaintext', '$multi-stroke-count') = 1;
  }
};

基本的に、マルチストロークモードを呼び出しているのはココだけです。

つまりは、呼び出しだけで、その後の機能の追加は現在何も行っていないのですが、自分なりに追加することは出来ます

試しに、こう言うことを行うと


f.onMultiStroke = function (arg, classname, methodname) {
  App.Alert( arg );
};

ショートカットCtrl+Qを押してマルチストロークモードに移行してから、何かキーを押してみましょう

ダイアログが出てきて、押した文字列を表示します

このように、ショートカットの親戚のように機能を追加できるマルチストロークモードですが、ショートカットと違うところは、複数の文字列の入力を待てること


またマルチストロークモードは、複数の文字をスタックしてコマンド受付を行うこともできるので、以下のようなこともできます


f.onMultiStroke = function (arg, classname, methodname) {
  App.Prop('plaintext', '$multi-stroke' ) += arg;
  var stroke = App.Prop('plaintext', '$multi-stroke' );
  // 10文字以内の命令なら受け付けます
  switch( stroke ){
  case '-quit':
    App.Quit();  // 萌ディタの終了
    break;
  case '-save':
    App.Buffer.Save();  // ファイルの保存
    break;
  default:
  }
};

f.onKeyQ = function (arg, classname, methodname) {
  if (App.Prop('plaintext', '$multi-stroke') == '') {
    App.Prop('plaintext', '$multi-stroke') = '-';
    App.Prop('plaintext', '$multi-stroke-count') = 10;  // ここで受け付ける命令の限界文字数を指定します
  }
};

ただ、これだと画面上の1行入力バッファにコマンドを入れるようにしても効果は同じなわけで…、マルチストロークモードをわざわざ作った意味を感じません

で、まぁ総括として、マルチストロークモードは、何のためにあるのかイマイチ掴みかねているというのが実状です。一度作者さんに答えていただきたいところ…