Posted at

Atomでのコメント操作に空気を読ませる comment-dwim-light パッケージをEmacsからパクって作った

More than 3 years have passed since last update.


DWIM (Do what I mean)

Atomに乗り換えて一番不便だったのがコメントの挿入ですよね。

まぁ他にもいろいろあるのですが、凝ったことをしなければなんとかなるかな?

Emacsでは comment-dwim というコマンドがあり、どこにカーソルがあっても同じ操作で空気を読んで良い感じにコメントを入れることが出来たのですが、Atomだと書いたRegionをコメントアウトするくらいしか方法が無さそうのでこれでコードを編集する気がなかなかおきませんでした。

command-dwim についてのナイスな説明はこちらをどうぞ。)

もしかしてパッケージにあるかなと思って探してみたんですが、パッケージにも無さそう。

ということでオリジナルに比べると機能が足り無さそうな劣化版ですが、自分が利用している範囲内でパッケージをでっち上げてみました。

comment-dwim-light package for Atom


FEATURE

機能的には


  1. 複数行の選択範囲があればその行のコメントアウトの切り替えを行う

  2. 新規の行(空文字のみの行含む)の場合にはインデントを考慮してコメントを挿入

  3. すでにコードがある場合は指定したカラム以降にコメントを挿入

  4. すでにコメントがある場合はコメントの最後までジャンプ

というところまで実装しています。


KEYMAP

キーバインドはEmacsで個人的に設定している ctrl-; に設定してあります。

OSXの場合はそのまま利用できますが、Windowsの場合はChromiumのキーバインドが優先されるようで文字の拡大になってしまうようです。

もし挙動がおかしい場合は keyboard-localization パッケージを入れるかキーマップを変更してみてください。


SETTINGS

設定項目は



  • commentColum : インラインコメントの始まるカラム数


  • commentFillColum : コメントの長さ確保数

があり、どちらも初期設定で40となっています。

初期設定のままだと、既にコードがある行のコメントは40桁目から始まりますが、もし editor.preferredLineLength が80以下の場合はコードの最後に追記されるようになります( editor.preferredLineLength < commentColum + commentFillColumn の場合)。

ですので、 commentColumncommentFillColumn をあり得ないくらい大きな数字にすればいつでもコードの最後に追記されるようになります。


UNIMPLEMENTED

さて、機能が足り無さそうとしたのは、comment-dwim コマンドで何が出来るのか全て把握していないからです。

ちなみに、個人的に余り使わない実装していないものとしては


  • コメントアウトマーク?の数指定

  • 空気を読んだコメントマーク?の数

がありますが、Lisp限定っぽいので実装しなくてもいいでしょう :p


SUMMARY

これで簡単にコメントを挿入できるようになって、Atomでコードを書くことも苦ではなくなりました。

ちなみにAtomのハックもCoffeeスクリプトも初めてだったんですが、数時間で作ることが出来ました。

elispでの実装だったらはなから諦める感じなんですけど、流石「21世紀のハッカブルテキストエディタ」ですね。調子にのってたくさんパッケージ作っちゃいいそうな気分にさせてくれますね。

それではよいコメントライフを!!

ps. 楽にコメントを挿入できるようになったとはいえ、相変わらずソースにコメントがないことは内緒です :p