;; -*- emacs-lisp -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; $Id: gnus_group.el,v 1.8 2006-11-06 21:02:42 rscholz Exp $
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Einstellungen für den Group Buffer
;;
;; Die offizielle Quelle dieser Datei ist
;;   <http://www.zonix.de/projects/emacs/config>
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Topics                          (Info-goto-node "(Gnus)Group Topics")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Topics anzeigen
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

;; aber keine leeren Topics
(setq gnus-topic-display-empty-topics nil)

;; Anzeige mit Anzahl der ungelesenen Artikel
(setq gnus-topic-line-format "%i[ %(%{%n%}%) -- %A ]%v\n")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Sortierung                    (Info-goto-node "(Gnus)Sorting Groups")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Sortieren nach wirklichem Namen, d.h. mit Server-Prefix
;;(setq gnus-group-sort-function 'gnus-group-sort-by-real-name)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Sortieren nach Group-Score       (Info-goto-node "(Gnus)Group Score")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; registieren, dass eine Gruppe gelesen wurde
;(add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
;; neu sortieren
;(add-hook 'gnus-summary-exit-hook 'gnus-group-sort-groups-by-score)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Navigation                 (Info-goto-node "(Gnus)Group Maneuvering")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; keine automatische Positionierung auf Gruppen mit ungelesenen Artikeln
(setq gnus-group-goto-unread nil)

;; Schnelles Bewegen mit Control-Cursortasten in den Topics
(defun zonix-topic-next ()
  (interactive)
  (gnus-topic-forward-topic 1))

(defun zonix-topic-prev ()
  (interactive)
  (gnus-topic-forward-topic -1))

(defun zonix-topic-descend ()
  (interactive)
  (gnus-topic-goto-topic
   (gnus-topic-next-topic (gnus-current-topic))))

(defun zonix-topic-ascend ()
  (interactive)
  (gnus-topic-goto-topic
   (gnus-topic-parent-topic (gnus-current-topic))))

;; Navigation auf einer Ebene
(define-key gnus-group-mode-map [(control down)] 'zonix-topic-next)
(define-key gnus-group-mode-map [(control up)] 'zonix-topic-prev)

;; Ebene hoch oder runter
(define-key gnus-group-mode-map [(control right)] 'zonix-topic-descend)
(define-key gnus-group-mode-map [(control left)] 'zonix-topic-ascend)

;; Selektierte Zeile komplett hervorheben
;(add-hook 'gnus-group-mode-hook 'hl-line-mode)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Group Line          (Info-goto-node "(Gnus)Group Line Specification")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Datumsinformation generieren
(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)

;; Anzeige mit Datum und Anzahl von ungelesen/markiert/gesamt Artikeln
(setq gnus-group-line-format
      (concat
       "%M%S%p%P%4y/%4i/%6t"
       ": %(%-40,40G%3O%)%l  "
       "<%2,2~(cut 6)d.%2,2~(cut 4)d.%2,2~(cut 2)d>\n"))

(setq gnus-group-line-format
      (concat
       "    %M%S%p%4y/%4i/%6t"
       ": %(%-40,40G%3O%)%l  "
       "<%2,2~(cut 6)d.%2,2~(cut 4)d.%2,2~(cut 2)d>\n"))

;; Anzeige mit Description
;(setq gnus-group-line-format "%M%S%5y: %(%-35g%) %D\n")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Faces                     (Info-goto-node "(Gnus)Group Highlighting")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(set-face-foreground 'gnus-group-news-1-face "CadetBlue")   
(set-face-foreground 'gnus-group-news-1-empty-face "CadetBlue")   
(set-face-foreground 'gnus-group-news-2-face "ForestGreen")   
(set-face-foreground 'gnus-group-news-2-empty-face "ForestGreen")   
(set-face-foreground 'gnus-group-news-3-face "DarkGreen")   
(set-face-foreground 'gnus-group-news-3-empty-face "DarkGreen")   
(set-face-foreground 'gnus-group-news-4-face "DarkOliveGreen")   
(set-face-foreground 'gnus-group-news-4-empty-face "DarkOliveGreen")   
(set-face-foreground 'gnus-group-news-5-face "DarkSlateGrey")   
(set-face-foreground 'gnus-group-news-5-empty-face "DarkSlateGrey")   
(set-face-foreground 'gnus-group-news-low-face "Black")   
(set-face-foreground 'gnus-group-news-low-empty-face "Black")