emacsの機能を駆使して,ソースコードを半自動的に整形する方法.
手順はたったの2stepです.具体的には
- step-1 C-c C-q で自動インデント
- step-2 M-x align-regex でキーワードを指定してテキストを整列
という流れになります.
以下例としてC言語で記述されたソースコードを使いますが,同じ手順でC以外の他の言語(C++はもちろんphp,ruby,lispなど)でも整形できます.
元のソース
const char* foo(int code) { const char *msg = NULL; switch (code) { case LS_SUCCESS: msg = "success";break; case LS_NO_RECORD: msg = "no record";break; case LS_NO_TOKEN: msg = "no token";break; } return msg; }
step-1 インデントをそろえる
関数内にカーソルを移動させて,C-c C-q
const char* foo(int code) { const char *msg = NULL; switch (code) { case LS_SUCCESS: msg = "success";break; case LS_NO_RECORD: msg = "no record";break; case LS_NO_TOKEN: msg = "no token";break; } return msg; }
C-c C-q が覚えにくかったら M-x indent-region を使いましょう.
step-2 M-x align-regex で整列
M-x align-regex を使うと,指定した単語(厳密には正規表現)でテキストを整列できます.
たとえば,変数名 msg で整列したい場合は,M-x align-regex して,"msg" と入力します.
const char* foo(int code) { const char *msg = NULL; switch (code) { case LS_SUCCESS: msg = "success";break; case LS_NO_RECORD: msg = "no record";break; case LS_NO_TOKEN: msg = "no token";break; } return msg; }
続けて,break でも整列させると以下のようなすっきりとしたコードになります.
const char* foo(int code) { const char *msg = NULL; switch (code) { case LS_SUCCESS: msg = "success"; break; case LS_NO_RECORD: msg = "no record"; break; case LS_NO_TOKEN: msg = "no token"; break; } return msg; }
入門GNU Emacs (UNIX text processing)
posted with amazlet at 09.04.05
おすすめ度の平均: 



GNU Emacsマニュアル20.6
posted with amazlet at 09.04.05
おすすめ度の平均: 


入門 GNU Emacs 第3版
posted with amazlet at 09.04.05