Emacsは国際条約で禁止すべきだ、という意見もあるが、私は最近Emacsを見なおした派。文章を書くのは全部Emacs上にしたい。とはいえ、ちょっと厄介なのが改行の扱い。Emacs上ではauto-fill-modeで文章をある文字数で改行したほうが扱いやすい。TeX(これも禁止の声が上がっている)だとこれで問題ないのだけど、HTMLやブログの場合、改行が無視されずそのまま表示される。これはウィンドウ幅に合わせて表示を変えたいとき(普通、HTMLやブログではそうだと思う)にとても困る。
そこで、というかlonglines-modeというものが用意されている。これは、auto-fillではsoft line breakのみを挿入し、改行がEmacs上だけで意味を持つようにするものらしい。soft line breakはコピー・ペーストの時には削除されるようなので、上の問題が解決される、ように思ったのだが。残念なことに、longlines-modeではsoft line breakは削除されるが、その位置に空白が残ってしまうようだ。英文では問題無いだろうが、日本語では問題になる。
そこで、簡単なスクリプトを書いてみた、というのが本題。
(defun unfill ()
(interactive)
(while (re-search-forward ".+$" nil t)
(if (not (= (char-after (+ 1 (point))) ?\n))
(delete-char 1))))
unfillを実行すると、空白行とパラグラフ最後の改行以外の改行が削除される。もっとエレガントに書けるかもしれないけど、とりあえず動いているので満足。
日本語向けの longlines-jp.el があるので,日本語まじりならこちらがいいかと思います.
返信削除http://www.emacswiki.org/LongLinesJpMode
使い方は longlines.el とほぼ同じです.
やっぱり既存の実装がありましたか。ありがとうございます。
返信削除SKKが入っていることを前提にしているらしきコードがあったので、とりあえずコメントアウトした。
削除