Mercurial > hg > RemoteEditor > emacs
view test/buffer-edit/insert-line-to-buffer.el @ 54:9620bf594a88
(goto-line lineno) の返り値で、lineno と実際の移動先の行番号との
差がわかるので、curline の計算は不要になった
author | gongo |
---|---|
date | Tue, 26 Aug 2008 18:26:39 +0900 |
parents | 769ebe87cd5a |
children |
line wrap: on
line source
;; ;; insert-line-to-buffer.el ;; 指定したバッファの指定した行に、指定した文字列を挿入。 ;; バッファの最後尾行が指定した行に足りない場合、その数だけ改行する ;; ;; buffer : 編集するバッファ(名) ;; lineno : 編集するbufの行番号 ;; string : lineno行目に挿入する文字列 (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 (diff) (save-excursion (set-buffer (get-buffer-create buffer)) ;; 指定行番号へ移動 ;; diff には、lineno と 実際に移動した行番号の差が入る ;; バッファの末尾の行が指定した行に足りない場合に diff > 0になる (setq diff (goto-line lineno)) (if (> diff 0) ;; buffer の 最後の行番号が、指定した lineno に足りない場合、 ;; その行数だけ改行し、その行へ移動する。 ;; newline なので、下のようにテキストを削除する必要は無い (progn (end-of-line) (newline diff) (goto-line lineno)) ;; 行頭から末尾までのテキストを削除 (delete-region (progn (beginning-of-line) (point)) (progn (end-of-line) (point))) ) ;; 新しい行を挿入 (insert string)))) ;; currentp の位置の行番号を返す (defun real-count-lines (currentp) (+ (count-lines (point-min) currentp) (if (= (save-excursion (goto-char currentp) (current-column)) 0) 1 0)))