スポンサーリンク

2016年6月14日火曜日

Emacs fill-paragraph を便利にする

Emacs の fill-paragraph コマンドはパラグラフ全体を適切な位置で改行して整形してくれます。地味なコマンドですが、文章を書いていて最もよく使うコマンドの一つです。通常は M-q にバインドされています。なので少し文章を書くと、反射的に M-q を叩く習慣が身についています。

Emacsにはこれと逆の動作をするコマンド、つまり改行で分割されたパラグラフを一行に纏めてくれるコマンドは用意されていません。

例えばブログに文章を貼り付けたりする場合、改行があると半角スペースとして表示されてしまうので、変な所にスペースが入ってしまい見栄えがよくありません。HTML的にはパラグラフ内で改行すべきではなく、改行位置はブラウザのレンダリングに任せるべきです。なので逆動作をするコマンド unfill-paragraph があると便利です。

unfill-paragraph を作ることは簡単ですが、ちょっと一工夫して fill と unfill 動作をトグルするようにしてみました。デフォルトのキーバインド M-q でトグル動作を行なうので、他のキーバインドを消費することもありません。

(defun toggle-fill-and-unfill ()
  "Toggle fill and unfill paragraph."
  (interactive)
  (let ((fill-column
         (if (eq last-command 'toggle-fill-and-unfill)
             (progn (setq this-command nil)
                    (point-max))
           fill-column)))
    (call-interactively #'fill-paragraph)))

(global-set-key [remap fill-paragraph] #'toggle-fill-and-unfill)

1 件のコメント :