後で読むurlをメモする超簡易スクリプト

Chromeで開きっぱなしでほったらかしてるタブというのは後で読もうと思って放っておいてあるものが多いのだけど、考えてみればメモリの無駄だ。

そんなわけで、後で読むurlをメモする超適当なスクリプトhowm+xyzzy lispででっちあげてみた。

howmが入ったxyzzyなら動くはず。以下を.xyzzyあたりにコピペして再起動すればよい。

(defvar *money-toread-logfile* "c:/docs/howm/etc/toread.howm")

(defun money-toread-push (url note)
  "読もうとしているwebページの管理用。
*money-toread-logfile*(ファイルパスの文字列)に格納。"
  (interactive "swhere? : \nsfor what's this? : ")
  (save-excursion
    (let ((days-to-sink 7))
      (find-file *money-toread-logfile*)
      (end-of-buffer)
      (unless (bolp) (newline))
      (insert (concat (format-date-string "[%Y-%m-%d]") (format nil "-~D " days-to-sink) note " " url))
      (newline))))

(defvar money-map (make-keymap))
(setf (symbol-function 'money-prefix) money-map)
(define-key ctl-x-map #\m 'money-prefix)

(define-key money-map #\p 'money-toread-push)

最初に設定してる変数が記録ファイルへのパスなので適当に書きかえる。

C-x m pでプロンプトが出るのでurlと備考を順に入れる。
すると記録ファイルに

[2010-02-25]-7 科学写真家 http://www.nicheee.com/archives/1256742.html

のように
日付 備考 url
の形式で入力される。それだけといえばそれだけのスクリプトだけど、これでhowmのメニューにタスクとして表示されるのでわりと必要十分に思う。こういうタスク管理系のものを作るときhowmの機能は便利。

ファイル開くとこんな感じ。

下から2番目だけdoneになってる状態。


ちなみに変数名とかにところどころmoneyとかついてるのは小遣い管理用に前作ったやつの流用と言うか拡張として作ったため。どうせなのでそっちも載せておいてみる。

(defvar *money-logfile* "c:/docs/howm/etc/money.txt")

(defun money-balance ()
  (interactive)
  (save-excursion
    (let ((sum 0)
	  (regexp-money (compile-regexp "^\\[[12][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]\\] \\([+-]?[0-9]+\\) ")))
      (find-file *money-logfile*)
      (beginning-of-buffer)
      (scan-buffer regexp-money :tail t)
      (while (match-string 1)
	(setq sum (+ sum (parse-integer (match-string 1))))
	(scan-buffer regexp-money :tail t))
      (message "~A yen available." sum))))

(defun money-deposit (amount note)
  (interactive "nHow much? : \nsfor what? : ")
  (save-excursion
    (find-file *money-logfile*)
    (end-of-buffer)
    (unless (bolp) (newline))
    (insert (concat (format-date-string "[%Y-%m-%d]") (format nil " ~D " amount) note))
    (newline)))

(defun money-spend (amount note)
  (interactive "nHow much? : \nsfor what? : ")
  (money-deposit (- amount) note))

;(define-key money-map #\b 'money-balance)
(define-key money-map #\a 'money-balance) ;bだと押しにくいので。amountのa
(define-key money-map #\d 'money-deposit)
(define-key money-map #\s 'money-spend)

C-x m sで出費、C-x m dで入金を入力。C-x m aで全所持金の表示。