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. 長い行は短い複数行に変換する
  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)))

インデントは乱れてしまいました(笑)

ですが将来的には
きれいに整形できるように
改良する予定とのことです。

  • 正しい位置に改行が置かれ
  • 正しくインデントされ
  • コメントや文字列は処理されない

これからが楽しみですね。

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。