2005-12-11

長〜〜い行を仮想改行する longlines.el

忘月忘日 Linux さんのブログで、「ある種の Web ブラウザーが日本語でも改行を空白として表示するため、見た目が悪くなるので p 要素の中では改行を含めないようにしている」という主旨の記事があった。必然、長〜〜い行が出来てしまって編集に難を抱えることになる。そこらへん、一部抜粋。

パラグラフ中に改行を入れないと,当然,行が折り返して表示される.このときいくらか困るのは,パラグラフの途中を書き換えたくなったとき,そこへカーソルをなかなか移動できないのだ.例えば画面上で見て,現在のカーソル位置の1行上を書き換えたい,と思ってカーソルキーなりControl-pなりでそこへ行こうとすると,10行位上にカーソルが移動してしまうことがある.emacsは改行が入ったところが前の行だと思っているのでパラグラフ中に改行をいれずに入力して行けば当然こうなる.

これは、Emacs が行を論理行として扱っていることが問題。その解決策として、物理行モード physical-line-mode.el を紹介している。

longlines.el

この問題について、別のアプローチで解決を試みているパッケージがあったので紹介しやう。

longlines.el は、長すぎる行に対して「見かけの改行」を入れてくれるパッケージ。具体的には、M-q した時に改行されるはずの場所で、行を折り返して見せる。ユーザーは見た目通りに次行・前行に C-n, C-p で移動できる。もちろん、実際のファイルに改行が入っているわけじゃない。Emacs が突然落ちてしまってもファイルに意図しない改行が残るというようなことはない。

このツール、なかなか面白いと思うのだけど欠点が 2 つある。

一つは日本語に対応していないこと。改行はスペースのある所で行われる。英文だけ書いてるなら、それでいいのだろうけど。日本語の場合は、スペースが現れないことには長い文章のままになる。せめて、句読点で改行してくれるとよいのにね。

もう一つの問題は、このパッケージが Emacs 22.0.50 (開発版) でしか手に入らないこと。Emacs 21 用のコードがどこかに置ちてないものか、少し探してみたけれど見つからなかった。もし見つけた方、いらっしゃったら教えて下さいませ。

Emacs 22.0.50 を使っているなら、設定は必要ない。このパッケージは minor mode として働くので、M-x longlines-mode で機能のトグルができる。

もし、実際の改行コードを目に見えるようにしたければ、.emacs に次のコードを書いておく。

(setq longlines-show-hard-newlines t)

No comments:

Post a Comment