mhc+palmの生活

1999/11からmhcを使っとります。
http://www.quickhack.net/mhc/

そして2000/12に長男が生まれたときに会社の同僚からPalmIIcをプレゼントでいただき、2004/4まで使っとりました。
予定は会社のマシン(unix)で集中管理。履歴はmhcのCVS機能でサーバに保存している。
Palmとunixqマシン間の同期はmhc2palm/palm2mhcでおこなう。
基本的にPalmで予定は入力しない。めんどくさい。
同じ理由でメモ帳も使わない。

で、2004/04、きつかった仕事のひきつぎも終わり、細君の許可も出たので、当時うれまくっていたTH55を購入したのでした。
NetFrontとNNsi以外はPalmIIIcと大して使い方は変わってない。
普段使っているのは以下のとおり(順序に意味はなし)

  • NNsi (暇つぶし)
  • TrainTime (田舎なので20分に1本しか電車がない)
  • NetFront
  • Mergic VPN (社内ネットワークにつなぐときはPPTPが必要なので)
  • MS Backup
  • TVscape (検索機能がないのはなぜだ?)
  • KsDatebook (クリオガ派遅い)
  • 手書きメモ (普段のメモとり)
  • PsMemo (nnsiのメモ帳出力を参照ため)

当初AudioPlayerに期待してたのですが、ヨドバシのポイントで買ったメモステが128MBだったので、ぜんぜん容量が足りん。

全文引用対策 for emacsen

仕事がらみのメイルでリプライに丸ごと引用がくっついてくるのが多いので作った。
mew on emacsで動作確認をしている。なんとなくrmail on emacsにも対応してみた。

;; clearcite.el -- 全文引用をすっきりさせる
;; Copyright (C) 2002, 2003, 2004 KOIE Hidetaka
;; $Id: clearcite.el,v 1.18 2004/06/11 18:13:34 koie Exp $

;; 作者: 鯉江英隆 <hide@koie.org>
;; ライセンス: GPL

;; 効能
;; ながったらしい全文引用をoverlayをつかってすっきりと表示する。

;; 設定
;; ~/.emacsに
;; (eval-after-load 'mew '(require 'clearcite))
;; (eval-after-load 'rmail '(require 'clearcite))
;; を追加する。

;; 操作方法
;; サマリバッファでHをたたく..
;; メッセージバッファでHをたたく..
;; 強調表示になっている引用部分でHをたたく..

;;
;; カスタマイズ
;;
(defvar clearcite-regex-cite-list
  (list "\\([ \t]*\\([>:|]\\|\\w+\\(['._-]+\\w+\\)*>+\\)\\)+.*")
  "*不可視対象の行全体に一致する正規表現のリスト
`^'と`$'は不要")
;(list "\\([ \t]*\\([>:|]\\|\\w+\\(['._-]+\\w+\\)*>+\\)\\)+.*"
;      (concat "M"
;              (apply 'concat (make-list 60 "[!-`]"))
;              "[ \t]*")
;とすればuuencodeも対象になる。
;clearcite-do-buffer: Stack overflow in regexp matcher対策のため
;[!-`]\\=\\{60\\=\\}を展開している

(defvar clearcite-snip-format
  "    (%d lines snipped)"
  "*不可視にした引用を置き換えるformat文字列
%dのところに行数が入る")

(defvar clearcite-highlight 'highlight
  "*不可視にした引用の修飾")
;色をおとなしくするには.emacsに以下を追加
;(custom-set-faces
; '(highlight ((t (:background "gray")))))

(defvar clearcite-count 10
  "*この行数を越えると不可視化の対象となる")

(defvar clearcite-top-margin 2
  "*不可視化せずに残す行数(上)")

(defvar clearcite-bottom-margin 3
  "*不可視化せずに残す行数(下)")

(defvar clearcite-key "H"
  "*不可視化のトグルにつかうキー")

(defvar mew-clearcite-limit 1000000
  "*自動ですっきりさせることができるメッセージサイズの上限")

(defvar rmail-clearcite-limit 1000000
  "*自動ですっきりさせることができるメッセージサイズの上限")

;;
;; 本体
;;

(defvar clearcite-widen nil)

(when (not (functionp 'mapc))
  (defsubst mapc (func seq)
    (mapcar func seq)
    seq))

(defun clearcite-undo ()
  "この不可視になっている引用ブロックを見えるようにする"
  (interactive)
  (mapc (lambda (ov)
          (when (and (overlay-get ov 'clearcite)
                     (not (overlay-get ov 'invisible)))
            (define-key (overlay-get ov 'local-map) clearcite-key 'clearcite-do)
            (overlay-put ov 'face nil)
            (mapcar (lambda (ov2)
                      (when (and (overlay-get ov2 'clearcite)
                                 (overlay-get ov2 'invisible))
                        (delete-overlay ov2)))
                    (overlays-in (overlay-start ov) (overlay-end ov)))))
        (overlays-at (point))))

(defun clearcite-do1 (ov)
  "この引用ブロックを不可視にする"
  (let* ((beg (overlay-start ov))
         (end (overlay-end ov))
         (beg2 (save-excursion (goto-char beg)
                               (forward-line clearcite-top-margin)
                               (beginning-of-line) (point)))
         (end2 (save-excursion (goto-char end)
                               (forward-line (- 0 clearcite-bottom-margin 1))
                               (end-of-line) (point)))
         (ov2 (make-overlay beg2 end2)))
    (overlay-put ov 'face clearcite-highlight)
    (overlay-put ov2 'clearcite t)
    (overlay-put ov2 'evaporate t)
    (overlay-put ov2 'intangible t)
    (overlay-put ov2 'invisible t)
    (when clearcite-snip-format
      (overlay-put ov2 'after-string
                   (when clearcite-snip-format
                     (format clearcite-snip-format (count-lines beg2 end2)))))))

(defun clearcite-do ()
  "この引用ブロックを不可視にする
ただし一度clearcite-do-bufferを実行しておくのが前提"
  (interactive)
  (mapc (lambda (ov)
          (when (and (overlay-get ov 'clearcite)
                     (not (overlay-get ov 'invisible)))
            (define-key (overlay-get ov 'local-map) clearcite-key 'clearcite-undo)
            (clearcite-do1 ov)))
        (overlays-at (point))))

(defun clearcite-do-buffer ()
  "バッファ中の引用でclearcite-count行を越えるものを不可視にする"
  (interactive)
  (save-excursion
    (save-restriction
      (when clearcite-widen (widen))
      (goto-char (point-min))
      (let ((re (format "^\\(%s\\)\\{%d,\\}"
                        (mapconcat (lambda (r)
                                     (concat r "\n"))
                                   clearcite-regex-cite-list
                                   "\\|")
                        clearcite-count))
            (n 0))
        (while (re-search-forward re nil t)
          (beginning-of-line)
          (let* ((beg (match-beginning 0))
                 (end (match-end 0))
                 (ov (make-overlay beg end))
                 (map (make-sparse-keymap)))
            (set-keymap-parent map (current-local-map))
            (define-key map clearcite-key 'clearcite-undo)
            (overlay-put ov 'clearcite t)
            (overlay-put ov 'evaporate t)
            (overlay-put ov 'face clearcite-highlight)
            (overlay-put ov 'local-map map)
            (clearcite-do1 ov)
            (setq n (1+ n))
            (goto-char end)))
        n))))
      
(defun clearcite-undo-buffer ()
  "バッファ中の引用の不可視化をやめる"
  (interactive)
  (save-restriction
    (when clearcite-widen (widen))
    (mapc (lambda (ov)
            (when (overlay-get ov 'clearcite)
              (delete-overlay ov)))
          (overlays-in (point-min) (point-max)))))

(defun clearcite-donep ()
  "clearcite-do-buffer済かどうか判定する"
  (save-restriction
    (when clearcite-widen (widen))
    (catch 'quit
      (progn
        (mapc (lambda (ov)
                (when (overlay-get ov 'clearcite)
                  (throw 'quit t)))
              (overlays-in (point-min) (point-max)))
        nil))))

;;
;; mewからの利用
;;
(defun mew-clearcite ()
  "メッセージバッファの引用をすっきりさせる
すでにすっきりしているならもとにもどす(トグル動作)"
  (interactive)
  (let ((clearcite-widen t)
        (buf (get-buffer (mew-buffer-message))))
    (when buf
      (set-buffer buf)
      (if (clearcite-donep)
          (clearcite-undo-buffer)
        (clearcite-do-buffer)))))
(defun mew-call-clearcite ()
  (let ((size (save-excursion
                (set-buffer (mew-buffer-message))
                (buffer-size))))
    (when (< size mew-clearcite-limit)
      (mew-clearcite))))
(eval-after-load 'mew-key
  '(progn
     (define-key mew-summary-mode-map clearcite-key 'mew-clearcite)
     (define-key mew-message-mode-map clearcite-key 'mew-clearcite)))
(eval-after-load 'mew-vars
  '(add-to-list 'mew-message-hook 'mew-call-clearcite))

;;
;; rmailからの利用
;;
(defun rmail-clearcite ()
  "メッセージバッファの引用をすっきりさせる
すでにすっきりしているならもとにもどす(トグル動作)"
  (interactive)
  (let ((clearcite-widen nil)
        (buf (get-buffer "RMAIL")))
    (when buf
      (set-buffer buf)
      (if (clearcite-donep)
          (clearcite-undo-buffer)
        (clearcite-do-buffer)))))
(defun rmail-call-clearcite ()
  (save-excursion
    (let ((clearcite-widen t))
      (clearcite-undo-buffer)))
  (save-excursion
    (set-buffer "RMAIL")
    (let ((clearcite-widen nil)
          (size (- (point-max) (point-min))))
      (when (and (< size rmail-clearcite-limit)
               (not (clearcite-donep)))
        (clearcite-do-buffer)))))
(eval-after-load 'rmailsum
  '(define-key rmail-summary-mode-map clearcite-key 'rmail-clearcite))
(eval-after-load 'rmail
  '(progn
     (define-key rmail-mode-map clearcite-key 'rmail-clearcite)
     (add-to-list 'rmail-show-message-hook 'rmail-call-clearcite)))

;;
(provide 'clearcite)