header

2015年12月9日水曜日

Emacs の visual-fill-column.el が便利だった

Emacs の org-mode を使うときの便利拡張を見つけてしまったので紹介する。たぶん markdown 書くときも便利だと思う。

何をする拡張か?

buffer 上で長文を適当なところで折り返してくれる拡張です。今は obsolete 扱いだけど、longlines-mode と同じようなことをしてくれる。大雑把な説明だと、auto-fill-mode が、buffer 上で常時発動している感じ。自分は org-mode でブログを書いているけれど、見やすくするのに改行を入れると Blogger の方でスペースに変換されて見づらくなるので toggle-truncate-lines で我慢しながら使っていたがこの拡張のおかげで 70 文字(fill-column 変数で折り返しする文字数を指定できる)でばっちり折り返ししてくれるので非常に助かっている。

設定

インストールは MELPA 経由でできるみたいなので特にそれについては書かないけど、日本語と一緒に使うのにちょっと不満点があったので自分の設定を紹介する。
;; 折り返えしする文字数を指定
;; (デフォルトは 70 というかデフォルトのままでもいいと思う)
(setq fill-column 80)
(defun my-visual-fill-mode (&optional arg)
  "Show filled sentences by visual line mode.
If ARG is non-nil, turn on visual mode stuff."
  (interactive)
  (let ((toggle (or arg (if visual-line-mode 0 1))))
    (visual-line-mode toggle)
    (when visual-line-mode (setq word-wrap nil))
    (visual-fill-column-mode toggle)))
(global-set-key (kbd "おこのみのキーバインドで") 'my-visual-fill-mode)
上の設定の word-wrap の部分が苦労したポイント、自分は pangu-spacing-mode を使っているけれどスペースが入ったタイミングで勝手に折り返されることがあったのでこの設定をいれた。英語しか書かない人は逆にないほうがいい感じに fill してくれる。(英単語が途切れないように) というわけで状況にあわせて適当に設定してみてください。

おわり

sentence-end 変数をいじったりとか syntax-table で"、。"を punctuation に設定してみましたが結局ダメで、今回の設定に落ち着きました。もし英単語をいい感じに折り返してくれて、なおかつ日本語もいい感じに折り返す設定をご存知の方いたらぜひぜひ教えてください!

0 件のコメント:

コメントを投稿

Popular Posts

Blogger templates

Blogger news