Next: 5.2 家計簿計算
Up: 5 Emacslisp
Previous: 5 Emacslisp
家計簿のように項目と金額の
簡単な表があったとしてその集計を
行う例を考える.
ファイルは,<---から
--->までの間の各行の末尾に
数値があるとする.
<---
ガソリン 2500
ケース 200
電車賃 1200
--->
この家計簿の集計を行ってミニバッファへ表示する例としては次のようなコマン
ドを定義する.これを*scratch*バッファで定義するなりmycalc.elなどのファ
イルに保存してM-x load-fileコマンドでこのファイルを読み込んだりした後,
家計簿ファイルのバッファへポイントを移して,M-x my-calcと実行するとミニ
バッファにSum: 3900が表示される.
(defun my-calc ()
"<--- から --->までの行末の数字をすべて足した結果を表示する"
(interactive)
(save-excursion
(let ((sum 0) n)
(goto-char (point-min)) ;; バッファ先頭へ
(re-search-forward "^<---") ;; <---の検索
(while
(re-search-forward
"\\(^--->\\)\\|\\([0-9]+$\\)" nil t)
(cond
((match-beginning 2)
(setq n (buffer-substring
(match-beginning 2)
(match-end 2)))
(message n)
(setq n (string-to-number n))
(goto-char (match-beginning 2))
(end-of-line)
(setq sum (+ sum n)))
((match-beginning 1)
(message (concat "Sum: "
(number-to-string sum)))))))))
generated through LaTeX2HTML. M.Inaba 平成18年5月7日