gnus-eyecandy を使ってモードラインのアイコンを変えてみる

gnus-eyecandy の話 (http://d.hatena.ne.jp/emacsjjj/20050719/p1) の続き。

行間を揃えてみる

eyecandy でアイコンが表示されたグループは行幅が広がって間延びしちゃいますよね。見てくれが売りのツールなのに…。かなりみっともないので対処。

(defadvice gnus-group-icon-create-glyph
  (around add-center-prop (substring pixmap) activate compile)
  (let ((cached (cdr-safe (assoc pixmap gnus-group-icon-cache))))
    ad-do-it
    (unless cached
      (setcdr (car gnus-group-icon-cache)
	      (setq ad-return-value
		    (append ad-return-value '(:ascent center)))))))

モードラインのアイコンを変えてみる

X 上の Emacs で Gnus を使うと mode-line 上にヌーの顔のアイコンが表示されますが、eyecandy 用のアイコンがあるグループならば *summary* と *article* バッファの mode-line にもそれを使ってみたり。

(defadvice gnus-mode-line-buffer-identification
  (after use-eyecandy-icon activate compile)
  (when (and (memq major-mode '(gnus-summary-mode gnus-article-mode))
	     (get-text-property 0 'display (car ad-return-value)))
    (let ((group gnus-newsgroup-name)
	  (unread 1)			; ここら
	  entry				; へんは
	  active			; それぞれ
	  total				; 調整する
	  info				; 必要あり
	  method			;
	  marked			;
	  mailp				;
	  level				;
	  score				;
	  ticked			;
	  group-age			;
	  (list gnus-group-icon-list))
      (while (and list
		  (not (eval (caar list))))
	(setq list (cdr list)))
      (when list
	(let* ((file (cdar list))
	       (prop (cdr-safe (assoc file gnus-group-icon-cache))))
	  (when prop
	    (put-text-property 0 5 'display prop
			       (car ad-return-value))))))))


なんかだんだん派手になってくな……。