Mercurial > hg > RemoteEditor > emacs
changeset 54:9620bf594a88
(goto-line lineno) の返り値で、lineno と実際の移動先の行番号との
差がわかるので、curline の計算は不要になった
author | gongo |
---|---|
date | Tue, 26 Aug 2008 18:26:39 +0900 |
parents | 0b7ba6b2a0f9 |
children | 563a0c8c5706 |
files | test/buffer-edit/insert-line-to-buffer.el |
diffstat | 1 files changed, 10 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/test/buffer-edit/insert-line-to-buffer.el Tue Aug 26 17:26:13 2008 +0900 +++ b/test/buffer-edit/insert-line-to-buffer.el Tue Aug 26 18:26:39 2008 +0900 @@ -1,6 +1,6 @@ ;; ;; insert-line-to-buffer.el -;; 指定したバッファの、指定した行に、指定した文字列を挿入。 +;; 指定したバッファの指定した行に、指定した文字列を挿入。 ;; バッファの最後尾行が指定した行に足りない場合、その数だけ改行する ;; ;; buffer : 編集するバッファ(名) @@ -9,24 +9,27 @@ (defun insert-line-to-buffer (buffer lineno string) "Insert STRING at line LINENO of BUFFER. The line LINENO is deleted, and STRING is inserted." - (let (curlineno) + (let (diff) (save-excursion (set-buffer (get-buffer-create buffer)) - (goto-line lineno) ;; 指定行番号へ移動 - (setq curlineno (real-count-lines (point))) ;; 現在の行番号 - (if (> lineno curlineno) + ;; 指定行番号へ移動 + ;; diff には、lineno と 実際に移動した行番号の差が入る + ;; バッファの末尾の行が指定した行に足りない場合に diff > 0になる + (setq diff (goto-line lineno)) + + (if (> diff 0) ;; buffer の 最後の行番号が、指定した lineno に足りない場合、 ;; その行数だけ改行し、その行へ移動する。 ;; newline なので、下のようにテキストを削除する必要は無い (progn (end-of-line) - (newline (- lineno curlineno)) + (newline diff) (goto-line lineno)) ;; 行頭から末尾までのテキストを削除 (delete-region (progn (beginning-of-line) (point)) (progn (end-of-line) (point))) - ) + ) ;; 新しい行を挿入 (insert string))))