f

2016-03-26

caw.vim was changed command name "i, I, a" -> "hatpos, zeropos, dollarpos" on 2016-03-20 and 2016-03-28

2016-03-26にコメントのオンオフの切り替えVimプラグインcawのバージョンをNeobundleでを久しぶりに更新したところ警告が出るようになった。

caw.vimはtyruさんが作成したコメントのオン/オフを即座に切り替えるVimプラグインだ。前身のCommentAnyWay.vimの最初の公開がとなっており、実に7年の歴史のあるプラグインだ。

tyru/caw.vim: sophisticated comment plugin

Vim pluginに関する情報はネット上ではあまり見つからないので参考のために掲載する。

再現方法

以下のコマンドを実行する。または、このコマンドが既定でマッピングされているgciキーを押下する。tyruさんの指摘を受け、<Plug>(caw:I:toggle)<Plug>(caw:i:toggle)(大文字のIが小文字のiに変更)に修正した

<Plug>(caw:i:toggle)

以下の警告が表示された。

<Plug>(caw:i:toggle) was deprecated. please use <Plug>(caw:tildepos:toggle) instead.

<Plug>(caw:i:toggle)は廃止予定なので、<Plug>(caw:tildepos:toggle)を代わりに使ってくれとのこと。

また、同様に<Plug>(caw:I:uncomment)(既定ではgcI)は<Plug>(caw:zeropos:uncomment)を代わりに使ってくれとの警告がでた。

原因

の以下のコミットでコマンド名を変更したようだ。

Rename small_i,capital_i,a -> tildepos,zeropos,dollarpos · tyru/caw.vim@df19123

また、関連するissueも以下に立っていた(2016-03-27追記)。

Refactoring: write tests, rename <Plug> keymappings, global variables by tyru · Pull Request #35 · tyru/caw.vim

以下のコメント欄にもあるとおり、変数名が間違っていた(tildepos->hatpos)ので(以下のissue)さらに修正があった(2016-03-28追記)。

Wrong mapping name <Plug>(caw:tildepos:toggle) by tyru · Pull Request #48 · tyru/caw.vim

この変更によると、今まで使ってきたコマンド名を以下のように変更したようだ。tyruさんの指摘を受け、と2016-03-28に表を修正した。

caw.vimの2016-03-20と2016-03-28のコマンド名の変更点
変更前 変更後 説明
<Plug>(caw:I:toggle) <Plug>(caw:zeropos:toggle) コマンド0での移動位置(行頭)でのコメントオン/オフ
<Plug>(caw:i:toggle) <Plug>(caw:hatpos:toggle) コマンド^での移動位置(文頭)でのコメントオン/オフ
<Plug>(caw:a:toggle) <Plug>(caw:dollarpos:toggle) コマンド$での移動位置(行末・文末)でのコメントオン/オフ

今まで、i、I、aのように短い単語を使っていたのを、意味のわかりやすい単語に変更されたようだ。きちんとしたコードを書くのなら可読性を考えてこのようにわかりやすい名前を使ったほうがいいので、この変更点には納得だ。

また、help caw.vimhelp cawまたはhelp caw-faq-3 指摘を受け修正)でも確認できるが、コマンド名の変更理由としては以前の変数名の理解が難しいことを挙げている(2015-03-27追記)。

*caw-faq-3*
Q. Why you renamed keymappings and variables?
A. Because old keymappings and variables' names are hard to understand.

caw.vim/caw.txt at release/1.0.0 · tyru/caw.vim

まだ変更していなければ、コマンド実行の度に警告がでてしまうので変更しておこう。

10 件のコメント:

  1. ありがとうございます!
    冒頭の <Plug>(caw:I:toggle) は <Plug>(caw:i:toggle) ではないでしょうか?(分かりにくいですが、大文字のIが小文字のiに変わっています)

    マッピングは次のように変わりました。

    <Plug>(caw:I:toggle) → <Plug>(caw:zeropos:toggle)
    <Plug>(caw:i:toggle) → <Plug>(caw:tildepos:toggle)
    <Plug>(caw:a:toggle) → <Plug>(caw:dollarpos:toggle)

    意味としては zeropos はコマンドの 0 で移動できる位置にコメント/コメント解除、
    同じように tildepos は ^ コマンド、dollarpos は $ コマンドで移動できる位置にコメント/コメント解除する機能です。

    しかしなぜこの名前にしたかに関する記述が help に見当たらないですね…
    互換性なくして名前変更するくらいなら help にも記述があって然るべきだと思うので、追記しておきます。ありがとうございます。

    返信削除
  2. 追記しました。
    近々下記変更は master の方にもマージして vim.org の方にもアップロードするつもりです。

    https://github.com/tyru/caw.vim/pull/42/commits/c4bbf7d4754446bdbcf9829a928f17bb45a1bdb7
    https://github.com/tyru/caw.vim/pull/42

    返信削除
  3. わお!コメントありがとうございます。
    > 冒頭の (caw:I:toggle) は (caw:i:toggle) ではないでしょうか?(分かりにくいですが、大文字のIが小文字のiに変わっています)
    そのとおりですね…。なんか打ち間違えてしまったようです(苦笑)。修正しておきます。

    > 意味としては zeropos はコマンドの 0 で移動できる位置にコメント/コメント解除、
    > 同じように tildepos は ^ コマンド、dollarpos は $ コマンドで移動できる位置にコメント/コメント解除する機能です。
    名前から連想できて、わかりやすくてよいと思います。たぶん、最初のコマンド名もインサートモードに入るときのキーと対応しているのだと想像していました(現dollarposのaはAの間違い?)。

    > しかしなぜこの名前にしたかに関する記述が help に見当たらないですね…
    > 互換性なくして名前変更するくらいなら help にも記述があって然るべきだと思うので、追記しておきます。ありがとうございます。
    最初helpで何か変更理由やいつから変更されたか確認しようとしたのですが、見当たらなかったので結局コミット履歴をたどることになりました。この変更は、caw.vimのユーザー全員に影響がある(コマンド実行時に毎回警告がでるので)ので、helpにもあったほうがよいですね。

    指摘内容を記事本体にも反映させていただきます。

    返信削除
    返信
    1. 記事を更新しました。

      削除
  4. ありがとうございます!最後に1つだけ…
    help caw.vim は help caw.txt か 直接飛ぶには help caw-faq-3 ですね。

    ともあれこういった紹介記事を書いてくれるのはとても助かりますし嬉しいです。
    本当に本当に感謝です。ありがとうございます!

    返信削除
    返信
    1. すみません。ちゃんと試さずに曖昧な記憶で記述してしまいました…。
      即時修正させていただきました。
      今後もcaw.vimを使わせていただきますのでよろしくお願いします。

      削除
  5. 度々申し訳ないのですが、バグというより私の勘違いが発覚しました。

    https://github.com/tyru/caw.vim/issues/48

    > 同じように tildepos は ^ コマンド、dollarpos は $ コマンドで移動できる位置にコメント/コメント解除する機能です。

    「^ はチルダではなくハットだ」というツッコミが入りました…
    自分も記号の名称は知っていたのですが、なぜか脳内で Shift キーを押していたようです…

    なので近い内に tildepos 関連の変数名とマッピングに関してはまた名称が変わります。
    度々申し訳ありません。

    > (現dollarposのaはAの間違い?)

    その通りです。
    この時も名前を間違えたと思ったのですが…
    まぁ今回は早い段階で発覚したのでまだよかったです。
    それも Ken さんが記事を書いてくれた反響のおかげなので、本当にありがとうございます!

    返信削除
    返信
    1. お知らせありがとうございます。まだ変更があってから1週間程度なので変更しても影響は少ないですね。
      そういえば^の読み方はチルダ(~)ではありませんでしたね。気づきませんでした…。

      気になって調べてみたのですが、"^"はU+005Eなので、ASCII(ISO/IEC 8859-1)とUnicodeではサーカムフレックス(CIRCUMFLEX ACCENT)、HTMLの文字参照だとハット(Hat;)と呼ぶのが正しいようです。

      肝心のVimでは `help indent.txt` でcaretと書かれていますね…。
      ISOで定義されているので、一般的にはCIRCUMFLEXが有力ですが、Vim本体で定義されているので、キャレット(caret)とするのがよいですかね。
      ご参考までに。

      * Unicode Utilities: Character Properties http://unicode.org/cldr/utility/character.jsp?a=005E

      * ISO/IEC 8859-1 - Wikipedia, the free encyclopedia(一案したのExternal linksからみれる) https://en.wikipedia.org/wiki/ISO/IEC_8859-1

      * 8 The HTML syntax — HTML5 https://www.w3.org/TR/html5/syntax.html#character-references

      * indent - Vim日本語ドキュメント http://vim-jp.org/vimdoc-ja/indent.html

      削除
    2. なるほど。
      様々な調査本当にありがとうございます…ただ申し訳ないのですがすでに caw.vim 側では hat という用語を使うことに決めました (すでに master にも取り込み済です)。
      https://github.com/tyru/caw.vim/issues/48

      Wikipedia 日本語版からの引用ですが

      > 別名、キャレット (carret)、ハット記号 (hat [symbol])[1]。ただしUnicodeでは、「キャレット」は別の文字 U+028C の名称になっている(そちらが原義)。
      >
      > https://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%BC%E3%82%AB%E3%83%A0%E3%83%95%E3%83%AC%E3%83%83%E3%82%AF%E3%82%B9

      との事で、混同するかもしれないと思い hat (hatpos) を選択しました。
      (「サーカムフレックス」は長いので…)

      削除
    3. ありがとうございます。
      masterの取り込みを確認できたので、記事も更新しました。

      ^の読み方の調査は、趣味なので気にしないでください。
      今まで曖昧だったので、はっきりして勉強になりました。

      削除