[xyzzy:06354] Re: 変更行のマーク
- Subject: [xyzzy:06354] Re: 変更行のマーク
- From: Masaaki KANEKO <kaneko@xxxxxxxxxxxx>
- X-mailer: Becky! ver. 2.00.03
亀井さん、こんにちは。名古屋の金子です。
Version 0.2.1.186 ChangeLog.html より
> post-buffer-modified-hookとか。
実装いただきまして、本当にありがとうございます。\(^^)/
いやぁ、本当にすばらしいです。
# ちょっと、興奮気味です。
と、言うことで何となく作ってみました。添削などありましたらお願
いします。ちなみに、アンドゥで戻しても、マークまでは戻りません。
;------------------------------
; 編集された行にマークを付ける
;------------------------------
; フックを有効にする。バッファごとに行う必要があります。
;(enable-post-buffer-modified-hook t)
; text-attribute のセット。色等は適当に。
(defun set-modified-line-mark (pos)
(set-text-attribute pos pos 'modified-line
:foreground 0 :background 2
:prefix #\* :extend t))
; フック関数。
(defun buffer-modified-hook (buffer operation from to undo-p)
; (message "ope:~A undo:~A from:~d to:~d" operation undo-p from to)
(let ((pos from))
(save-excursion
(goto-char pos)
(while (<= pos to)
(progn
(goto-bol)
(set-modified-line-mark (point))
(if (not (next-virtual-line))
(return))
(setq pos (point))
)))))
; フックの登録。
(add-hook 'post-buffer-modified-hook 'buffer-modified-hook)
; 編集行を前方に検索する。
(defun search-mofdified-line-forward ()
(interactive)
(goto-char (or (find-text-attribute
'modified-line
:start (+ 1 (save-excursion (goto-eol) (point))))
(plain-error "編集された行はありません"))))
; 編集行を後方に検索する。
(defun search-mofdified-line-backward ()
(interactive)
(goto-char (or (find-text-attribute
'modified-line
:end (- (save-excursion (goto-bol) (point)) 1)
:from-end t)
(plain-error "編集された行はありません"))))
; 編集行マークの削除
(defun delete-modified-line-mark ()
(interactive)
(delete-text-attributes 'modified-line))
(global-set-key #\M-Down 'search-mofdified-line-forward)
(global-set-key #\M-Up 'search-mofdified-line-backward)
== 金子 真昭 <kaneko@xxxxxxxxxxxx>