- (if riece-channel-list-changed
- (save-excursion
- (set-buffer riece-channel-list-buffer)
- (let ((inhibit-read-only t)
- buffer-read-only
- (index 1)
- (channels riece-current-channels))
- (erase-buffer)
- (while channels
- (if (car channels)
- (let ((point (point)))
- (insert (format "%2d: %s\n" index
- (riece-format-identity (car channels))))
- (put-text-property point (point) 'riece-identity
- (car channels))))
- (setq index (1+ index)
- channels (cdr channels))))
- (setq riece-channel-list-changed nil))))
+ (save-excursion
+ (set-buffer riece-channel-list-buffer)
+ (let ((inhibit-read-only t)
+ buffer-read-only
+ (index 1)
+ (channels riece-current-channels))
+ (erase-buffer)
+ (riece-kill-all-overlays)
+ (while channels
+ (if (car channels)
+ (insert (riece-format-channel-list-line
+ index (car channels))))
+ (setq index (1+ index)
+ channels (cdr channels))))))
+
+(defun riece-format-channel-list-line (index channel)
+ (or (run-hook-with-args-until-success
+ 'riece-format-channel-list-line-functions index channel)
+ (concat (format "%2d:%c" index
+ (if (riece-identity-equal channel riece-current-channel)
+ ?*
+ ? ))
+ (riece-format-identity channel)
+ "\n")))