2008-11-21
■ Outputz の結果表示について
ぱーまりんく欲しい!
3D円グラフ
3D円グラフによる表示は、あまり望ましくないそうです。時間帯別の表示は、全部棒グラフに統一したほうがわかりやすいと思います。
参考:3D円グラフを使うのはやめよう | Okumura’s Blog
あと、曜日と時刻の表示をしてくれるTweetStatsはなかなかおもしろいので、これも実装されるとうれしいですね。
■ outputz.el を改良しますた
id:antipop さん ++
EmacsからOutputzに文字数を投げる - antipop
気になったところがあったので、いくつか修正しました。CodeReposなのでそのままコミットしてもよかったけど、とりあえず diff をおいておきます。
http://hayamin.com/upload/outputz.diff.el
変更した点は以下のとおり。
outputz-mode をカスタム変数に
このてのユーザーがいじりたい変数は、カスタム変数にしておくのがよさげですね。 M-x customize-variable で変更できるようになります。
url.el の mailcap 問題
url.el が依存している gnus/mailcap.el は、flim の mailcap.el と名前がかぶっているので、load-pathによっては film のほうの mailcap.el が require されてしまって、必要な関数が取得できずエラーになってしまう、という有名な問題があるようです。
oddmuse.elとmailcap.elの問題 - (rubikitch loves (Emacs Ruby CUI Books))
なので、(require 'url)の後に mailcap-parse-mailcaps という関数が束縛されてなかったら、load-path にある mailcap を全部ロードするという強引な回避策をとっておきました。
outputz-count 周りの改良
現状の問題点として考えられるのが以下の2点
- ファイルを開いた段階で outpuz-count 変数が初期化されないので、たとえば 1000文字のファイルを開いて、1文字追加して保存すると、1001文字更新したと Outputz に記録されてしまう
- 文字数が増えたときにしか outputz-count を更新しないので、ファイルの内容を大幅に削除したときなんかに、その後多少内容を書き加えても Outputz に記録しようとしない
前者は、 find-file-hook を使って outputz-count を初期化するようにしました。後者は、outputz関数が呼ばれるたびに、outputz-count は毎回更新するようにしました。
■ outputz.el レシピ
outputz.el で、編集しているマシン、ユーザー名、ファイルの種類、ファイル名を区別するために、こんなことをやってみた。
こんなかんじで記録されて、いいかんじ。
(defun outputz-percent-encode (str &optional coding-system)
(if (or (null coding-system)
(not (coding-system-p coding-system)))
(setq coding-system 'utf-8))
(mapconcat
(lambda (c)
(cond
((outputz-url-reserved-p c)
(char-to-string c))
((eq c ? ) "+")
(t (format "%%%x" c))))
(encode-coding-string str coding-system)
""))
(defun outputz-url-reserved-p (ch)
(or (and (<= ?A ch) (<= ch ?z))
(and (<= ?0 ch) (<= ch ?9))
(eq ?. ch)
(eq ?- ch)
(eq ?_ ch)
(eq ?~ ch)))
(require 'outputz)
(setq outputz-key "**********")
(setq outputz-base-uri
(concat "http://" (user-login-name) "." (system-name) ".emacs.jp/"))
(setq outputz-uri outputz-base-uri)
(defadvice outputz (before outputz-setup-uri)
(setq outputz-uri
(outputz-percent-encode
(concat outputz-base-uri
(symbol-name major-mode) "/"
(file-name-nondirectory (or (buffer-file-name) (buffer-name)))))))
(ad-activate-regexp "outputz-setup-uri")


