Backspaceキーでリストをunindentしたい

個人的趣味で恐縮です。
今まで走り書きにはDay Oneを使っていました。
Day Oneでは、箇条書きをunindentするときbackspaceでも行えます。

もっともDayOneではアスタリスクとスペースを入力した時点でリストに変換されるので、テキストエディタである以上、全く同じ挙動はあり得ないのですが、例えば話を聞きながら殴り書きするときはShift-Tabも煩わしいというか、この挙動がむちゃくちゃ効率がよかったので、もしInkdropでも実装されたら最高なんですが。。。

インデントしたこのカーソル位置においてbackspaceを押したとき

* あいうえお
  * |

現状(半角スペースが消える)

* あいうえお
  *|

期待(unindentされる)

* あいうえお
* |

editor:unindentを変更してみようとしましたが、当然キーが重複してうまくいくはずもなく。

エディタ部分はCodeMirrorということなので難しいでしょうね。

こんにちは。

そうですね、その場合は挙動に条件分岐を設ける必要がありますね。
Init fileにて新しいコマンドを定義して、現在のカーソル位置の行を取得(CodeMirrorのdocs参照)し、正規表現でリストを判定、リストの場合は editor:unindentdispatchという挙動になるでしょう。
CodeMirrorインスタンスの取得方法については下記ドキュメントをご参照ください:

リストの正規表現は:

const listRegex = /^(\s*)([*+-]\s|(\d+)([.)]))(\s*)/
1 Like

ありがとうございます。

ぜひ実現したいところでありますが、ひとまず以下のキーバインドで逃げたら、それはそれで慣れてきました(笑)
ただ、スピード感が落ちるので、教えて頂いた方法は、いずれ取り組んでみます。

'.CodeMirror textarea':
  'shift-backspace' : 'core:unindent'