vim-easymotion/TODO.md
2014-02-07 02:22:07 +09:00

4.7 KiB

  • Fix: "vimの"など、ターゲットキーが"m"でmの次に同様に"m"でマッチするマルチバイト文字("の")が連続していた場合、表示がずれてしまう
    • Hint: todeskingさんがForkしてるvim-easymotionのコードが参考になるかも
      • Attention: todeskingさんの実装はターゲットを押し出してずれてしまうバグがあるっぽいので注意
    • Refactoring: 関連して置換・ハイライトする部分のロジックはもうちょっと綺麗に出来るかも
  • Fix: migemoなどで日本語をターゲットにした場合、右画面端の文字がうまく置換・ハイライトされてない
  • Fix: nostartofline=1かつJK motionをした時に、マルチバイト文字がLineに含まれていると直感的にcolumnがずれているように見える
    • というかずれてるっぽい
    • Hint: strdisplaywidth()などでcol_numを変換
  • Feature: テストをかいてみる
    • vim-specだとmode(1)の値が変わるせいでoperator-pendingやrepeatをうまくテストできない
  • Fix: migemoを使っていると大文字小文字を無視したり、ターゲットが'i'なのに'y'にもマッチしたりしてしまう
    • Hint: migemo辞書改変?
  • Feature & Fix: 折りたたみをスキップさせない時の挙動を安定させる
    • 改善した。が、highlightなどまだ改善の余地はある?
  • ドキュメントをもっとしっかり書く(英語含む)
    • むしろ壊して再構築する勢いでやる
  • ユーザー側から簡単にEasyMotionコマンドを定義できるようにする。
    • EasyMotion#User()
    • is_cancelledを返す。座標を返すかどうか。Enterキーでのキャンセルなどの使い分けが欲しい
  • Fix?: concealを使用する
    • 現状、バッファ書き換えでundotreeが壊れてしまうのを直せるかも
    • Hint: vim-sneakで実装されている
    • :wundo, :rundoで解決したほうが良さそう
    • (パフォーマンスなど場合によってはconcealのほうがいいという可能性も)
    • wundo & rundo で解決。初回時だけundolistがないせいでundoの通し番号が進んでしまう。
    • おそらくマルチバイト文字の幅の分をスペースなどで埋め合わせできないのでconcealはつらそう
  • [] Feature: 1行だけのwithin line モーションを拡張して、指定の行数分を範囲に取れるようにする。
    • ユーザーがvimrcによって何行分指定するかを前後別々に決めれるようにする。
    • ラベルが少なくなるので打ちやすい。上下移動してから使う人などに便利そう。
    • もし、モーションのタイプによって決めたいとなると面倒くさい感じ
  • [] Feature: sticky table,migemoの機能のような、キーによって複数マッチさせれる仕組みをユーザーが作れるようにすると便利そう
    • アルファベット以外の文字やリガチャなどへの対応もできるかも。それぞれもれなくアルファベットと対応していればよさげ
  • Feature: operator-pending motionとして使った際、dot repeatを対応させる。
    • tpope/vim-repeat依存
    • 依存なしでやるには、exprを使わなければならないが、exprだとバッファを書き換えることができない
  • [] Fix: highlightのバグ https://github.com/Lokaltog/vim-easymotion/issues/78
    • syntaxのハイライトとの優先度の関係かもしれない
  • [] Feature: 複数文字でfuzzy matchingができればやってみたい。
    • いらない力
  • Feature: <Plug>(easymotion-next),<Plug>(easymotion-prev)
    • highlightを実装?
    • オプションで欲しい
  • Feature: multi input motionで正規表現を実装する
  • Fix: dot repeatが他のモーション時にリセットされる
    • Problem: b:changedtickがバッファ書き換えで変更されtpope/vim-repeatのg:repeat_tickと値が変わってしまう
    • Solution: g:repeat_tickの値を変える workaround
  • [] 擬似clever-f的モーションが実装できたので、ラベル出さずに最初のマッチに飛ぶモーションがあってもいいのではないか?
    • clever-fやsneakとかぶるけどEasyMotionのrepeat motionと連携ができて便利な気もする
    • 複数文字でrepeatかつハイライトできるモーションプラグインは現状ない
    • 追加プラグインで対応するという手
  • [] Feature: implement jump space first
  • [] Improve: take &ignorecase and &smartcase into account for n key find motion
  • [] Improve: default g:EasyMotion_keys
  • [] Improve: use :h winsaveview()