- xah-reformat-code 20170706.339(in MELPA)
- commands to reformat source code.
概要
xah-reformat-code.elは、
たったひとつのコマンド
M-x xah-reformat-lines
を提供しています。
一言でいうと、
プログラミング言語用の
M-x fill-paragraph
です。
以下の2つの働きがあります。
- 長い行は短い複数行に変換する
- 短い行は長い1行に変換する
動作原理は以下のとおりです。
- ホワイトスペースとは以下の3種類
- スペース
- タブ
- 改行文字
- スペース
- 複数のホワイトスペースは1つのスペース・改行と同じ
- 存在しなかったホワイトスペースは作成されない
- ホワイトスペースは取り除かれない
- ホワイトスペース以外の文字は除去・追加されない
regionにも対応しています。
- regionが設定されているときは、
regionに対して作用。 - 設定されていないときは、
現在のパラグラフ(複数の空行)に対して作用。
当然のことながら、
ホワイトスペース(スペース、タブ、改行)を
等価とみなしている言語のみに対応しています。
たとえば
- XML
- HTML
- CSS
- Lisp
- Wolfram
などです。
インデントに意味を持たせている
MakefileやPythonには対応していません。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてxah-reformat-codeを使う方は
以下のコマンドを実行します。
M-x package-install xah-reformat-code
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name xah-reformat-code
使用例
(setq fill-column 40)
を設定した状態で、
以下のコードに対してやってみます。
(if (re-search-forward -blanks-regex nil "NOERROR") (progn (re-search-backward -blanks-regex) (setq -p2 (point))) (setq -p2 (point)))
↓M-x xah-reformat-codeで長い1行になる。
(if (re-search-forward -blanks-regex nil "NOERROR") (progn (re-search-backward -blanks-regex) (setq -p2 (point))) (setq -p2 (point)))
↓再度M-x xah-reformat-code
(if (re-search-forward -blanks-regex nil "NOERROR") (progn (re-search-backward -blanks-regex) (setq -p2 (point))) (setq -p2 (point)))
インデントは乱れてしまいました(笑)
ですが将来的には
きれいに整形できるように
改良する予定とのことです。
- 正しい位置に改行が置かれ
- 正しくインデントされ
- コメントや文字列は処理されない
これからが楽しみですね。
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。