*Article*
(Meadow-version) が返す文字列が "Meadow-2.00Beta2" と "Beta" の前に
スペースが入らなくなり、またも rail で変換できなかったので
微修正。
★
しろたん
★
bbdb-gnus
bbdb-auto-notes-alist に x-face を入れているんだけど、
収集されていないことに気付く。
(remove-hook 'gnus-article-prepare-hook 'bbdb/gnus-pop-up-bbdb-buffer)
していると bbdb-auto-notes-hook が動かないのか。
ってことで、gnus-article-prepare-hook に bbdb/gnus-update-record を
入れてみた。
(bbdb-insinuate-gnus)
(remove-hook 'gnus-article-prepare-hook
'bbdb/gnus-pop-up-bbdb-buffer)
(add-hook 'gnus-article-prepare-hook
#'(lambda ()
(let ((bbdb-silent-running t))
(bbdb/gnus-update-record))))
bbdb-auto-notes-hook は動いたけど、やっぱり x-face は収集されない。
*Article* バッファから X-Face を取得できずにいるようなので、
bbdb-extract-field-value-function-list を設定する。
(add-to-list 'bbdb-extract-field-value-function-list
#'(lambda () #'gnus-fetch-field))
*
gnus-bbdb
やはり bbdb-gnus は捨てて、Gnus でも gnus-bbdb を使いたいところだ。
ということで、ぐぐってみたところ、
小関さんのメールを発見!
今度試してみよう。
★
gnus-bbdb
★
Emacs 22.0.0
久々に emacs-unicode-2 枝をビルドしたので、ちょっとだけ遊んでみた。
(make-char 'chinese-big5-1 77 36)
=> 35486
(make-char 'japanese-jisx0208 56 108)
=> 35486
(split-char (make-char 'chinese-big5-1 77 36))
=> (japanese-jisx0208 56 108)
(decode-coding-string
(encode-coding-string (char-to-string (make-char 'chinese-big5-1 77 36))
'big5)
'big5)
=> #("語" 0 1 (charset big5))
charset は text-property で保持するのかー。
★
gnus-bbdb
コメントを貰ったので、ちょっと bbdb-gnus のイヤだった点を挙げてみます。
- bbdb-gnus/split-method が To や Cc に効かない。 仕方ないから関数を書換えた。
- bbdb-insinuate-gnus で gnus-article-prepare-hook に bbdb/gnus-pop-up-bbdb-buffer が設定されるのは余計なお世話。
- bbdb/gnus-update-record がうるさい。
- データの収集が gnus-article-buffer から行われる。 gnus-bbdb は gnus-original-article-buffer から行われるから、
x-face などのように表示されていないフィールドの取得も容易。
- インデントが変で読みにくい。
ほとんど fancy split と gnus-summary-x-face のためにしか使っていないから、
逆に gnus-bbdb のイヤな点は目に付いていないのでしょうね。
show-sender とか滅多に使ってませんし。
★
Emacs 22.0.0
print-charset-text-propertyなんて変数があるのか。
(defun t1 (coding-system)
(let ((str (decode-coding-string (encode-coding-string "語" coding-system)
coding-system)))
(mapc
#'(lambda (p)
(let ((print-charset-text-property p))
(prin1 (cons p str))))
'(t nil default)))
nil)
(t1 'euc-jp)
(t . #("語" 0 1 (charset japanese-jisx0208)))(nil . "語")(default . "語")
(t1 'big5)
(t . #("語" 0 1 (charset big5)))(nil . #("語" 0 1 (charset big5)))(default . #("語" 0 1 (charset big5)))
t, default は期待通りだけど、nil の場合も charset が出力されちゃうな。
★
biff for Gnus
Meadow で modeline にサーバへのメールの到着を表示するために、
Gnus を使った display-time-mail-function を書いてみた。
(setq display-time-mail-function
(lambda ()
(let ((group "INBOX")
active)
(and (gnus-check-server (gnus-find-method-for-group group))
(let ((gnus-verbose (min gnus-verbose 4)))
(gnus-request-group group))
(setq active (gnus-parse-active))
(null (zerop (cdr active)))))))
★
今日の Emacs 22
CCL を確認してみようかと思ったがうまく動かない。
(define-ccl-program t1-encoder
'(2
(loop
(read-multibyte-character r1 r0)
(write ?1)
(write ?2)
(repeat))))
(define-ccl-program t1-decoder
'(1 (loop (read r0) (write-repeat r0))))
(define-coding-system 't1 "ccl test coding system"
:mnemonic ?t
:coding-type 'ccl
:ccl-decoder 't1-decoder
:ccl-encoder 't1-encoder)
;(make-coding-system 't1 4 ?t "ccl test coding system"
; (cons t1-decoder t1-encoder))
(encode-coding-string "t" 't1)
=> ""
(encode-coding-string "te" 't1)
=> "12"
(encode-coding-string "tes" 't1)
=> "121"
(encode-coding-string "test" 't1)
=> "1212"
うーむ。何か仕様が変わったのか?
★
今日の Emacs22
ccl-execute-on-string だと期待通りの動作をするな。
(ccl-execute-on-string 't1-encoder (make-vector 9 nil) "t")
=> "12"
(ccl-execute-on-string 't1-encoder (make-vector 9 nil) "te")
=> "1212"
(ccl-execute-on-string 't1-encoder (make-vector 9 nil) "tes")
=> "121212"
(ccl-execute-on-string 't1-encoder (make-vector 9 nil) "test")
=> "12121212"
ってことで
実験してみたところ、Emacs22 の CCL はこれまでとは以下のような違いがあるみたい。
- (read-multibyte-character REG_0 REG_1) で REG_0 は変わらず charset_id が 取得される。REG_1 は dimenstion が 2 の場合は ((CODE0 << 8) | CODE1) と
なったみたい。
- (read REG_0) では1文字の
内部コード
*1
(UCS の codepoint) が取得できる。
Emacs22 の CCL で UCS の codepoint と旧来の charset-id/codepoint の変換は
どうやればできるのかな。
*1: 内部コードは utf-8 ベースなものらしいので、UCS とは違うか。
以上、7 日分です。