mode-line での日時表示
結論
;; How to display year, date, and time ;; 2009/05/25 (日) 23:40 みたいになるよ。 (setq display-time-format "%Y-%m-%d (%a) %H:%M")
過程
ドキュメントの中で,たらい回しにされました。
display-time-string-forms 変数を見つけて,いや,これを見つけるのも,
大変だったんですが,これをいじろうとしたけど,
大変そう。中身を見てみると,
((if (and (not display-time-format) ; <-- ここに注目 display-time-day-and-date) (format-time-string "%a %b %e " now)...))
と。
む,display-time-format が nil でごにょごにょだと,
format-time-string で表示しているみたい。
で,display-time-format を describe-variable で見てみると,思った通り nil。
んで,最初に書いたように設定して・・・?
変わらん。何秒か経過して時刻が更新されたら,表示形式も変わりました。
なお,表示形式については,format-time-string 関数のドキュメントを参照のこと。
曜日が日本語で表示されるのが気に入らんが,ま,いいか。
locale に従って決定されるみたいだけど,
その変数を弄ると,色々問題がありそう。
あっ! let 君使えばいけるんでね?
ちょっと行ってくる。
帰ってきた。とりあえずできたっぽい。
※適当にインデントしました。
(setq display-time-string-forms '((if (and (not display-time-format) display-time-day-and-date) (format-time-string "%a %b %e " now) "") (let ((system-time-locale "English")) ; <--- これを追加 (propertize (format-time-string (or display-time-format (if display-time-24hr-format "%H:%M" "%-I:%M%p")) now) (quote help-echo) (format-time-string "%a %b %e, %Y" now))) ; <--- 閉じ括弧を忘れずにね load (if mail (concat " " (propertize display-time-mail-string (quote display) (\` (when (and display-time-use-mail-icon (display-graphic-p)) (\,@ display-time-mail-icon) (\,@ (if (and display-time-mail-face (memq (plist-get (cdr display-time-mail-icon) :type) (quote (pbm xbm)))) (let ((bg (face-attribute display-time-mail-face :background))) (if (stringp bg) (list :background bg))))))) (quote face) display-time-mail-face (quote help-echo) "You have new mail; mouse-2: Read mail" (quote mouse-face) (quote mode-line-highlight) (quote local-map) (make-mode-line-mouse-map (quote mouse-2) read-mail-command))) "")))
- system-time-locale を設定すれば,曜日が英語表記になる。
- 意味は分からんが,元々の display-time-string-forms をおじゃんにしたくはない。
だもんで,display-time-string-forms の中身をみると,なんかリストがいっぱい。
で,display-time-format は,さっき設定しているので,2番目のリストが評価されるわけで,
そこに let で,system-time-locale の値を設定してみました。
これで,一応目的は達成されたわけだ・・・。否っ!!
ほんとは,モードラインに,総行数を表示したかったけど,
ドキュメント見てもわかんねーし,考えてもいろいろと大変そうだったので,
妥協。C-x l (count-lines-page) 使えば,改ページが入ってない限り,
総行数はわかるから,良しとしよう。