- ov 20150311.2228(in MELPA)
- Overlay library for Emacs Lisp
概要
ov.el はhelm-swoop.el(レビュー) の作者による
オーバーレイを扱うライブラリです。
といっても、これだけではよくわかりませんね。
というわけで、ここではひとつの実例を示しましょう。
改行が入っていない長い行のテキストは、どうしても見辛いですよね!
Emacsにはオーバーレイという機能を使って、
実際のテキストの内容を変更することなしに、
表示の変更のみを行えるようになっています。
この ja-period-newline-mode というマイナーモードは、
「。」(句点)の後に改行を入れて読みやすくします。
Fig1: 長い行…
Fig2: 句点の後に改行が入るよ!
僕は何度も読むべきテキストはpandoc(レビュー) によって
orgフォーマットに変更しています。
pandoc の変換結果はこのように長い行がたくさん出てきて、
そのまま読むのは苦痛です。
でも、長い行にもひとつだけメリットがあり、
grep で検索したときに前後の文も表示してくれるので、
文脈がわかります。
そこでオーバーレイの出番です!
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))
初めてovを使う方は
以下のコマンドを実行します。
M-x package-install ov
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name ov
コード mylisp-ja-period-newline.el(以下のコードと同一)
(require 'ov) ;;; バッファローカル変数を宣言 ;;; defvar + make-variable-buffer-local (defvar-local ja-period-newline-overlays nil) (define-minor-mode ja-period-newline-mode "。の後に改行を入れてよみやすくする" nil " 。\\n" nil (if ja-period-newline-mode ;; 有効にしたときは (setq ja-period-newline-overlays ;; [。]をすべて検索し、改行を付加するオーバーレイを作成する (append (ov-set "[。、]\\|[.-]\\{3,\\}" 'after-string "\n") ;; (ov-set "[-。、\n].\\{16,\\}?、" 'after-string "\n") )) ;; 無効にしたときは全オーバーレイを削除する (mapc 'delete-overlay ja-period-newline-overlays))) (provide 'mylisp-ja-period-newline)
実行方法
$ wget http://rubikitch.com/f/mylisp-ja-period-newline.el $ emacs -Q -f package-initialize -l mylisp-ja-period-newline.el
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。