*** empty log message ***
[gnus] / lisp / gnus-group.el
index 71726e5..b1dca09 100644 (file)
@@ -37,6 +37,7 @@
 (require 'gnus-win)
 (require 'gnus-undo)
 (require 'time-date)
+(require 'gnus-ems)
 
 (defcustom gnus-group-archive-directory
   "*ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list/"
@@ -117,8 +118,8 @@ This function will be called with group info entries as the arguments
 for the groups to be sorted.  Pre-made functions include
 `gnus-group-sort-by-alphabet', `gnus-group-sort-by-real-name',
 `gnus-group-sort-by-unread', `gnus-group-sort-by-level',
-`gnus-group-sort-by-score', `gnus-group-sort-by-method', and
-`gnus-group-sort-by-rank'.
+`gnus-group-sort-by-score', `gnus-group-sort-by-method',
+`gnus-group-sort-by-server', and `gnus-group-sort-by-rank'.
 
 This variable can also be a list of sorting functions. In that case,
 the most significant sort function should be the last function in the
@@ -131,6 +132,7 @@ list."
                (function-item gnus-group-sort-by-level)
                (function-item gnus-group-sort-by-score)
                (function-item gnus-group-sort-by-method)
+               (function-item gnus-group-sort-by-server)
                (function-item gnus-group-sort-by-rank)
                (function :tag "other" nil)))
 
@@ -881,7 +883,8 @@ in the minibuffer prompt."
           (default-value 'tool-bar-mode)
           (not gnus-group-toolbar-map))
       (setq gnus-group-toolbar-map
-           (let ((tool-bar-map (make-sparse-keymap)))
+           (let ((tool-bar-map (make-sparse-keymap))
+                 (load-path (mm-image-load-path)))
              (tool-bar-add-item-from-menu
               'gnus-group-get-new-news "get-news" gnus-group-mode-map)
              (tool-bar-add-item-from-menu
@@ -2642,6 +2645,12 @@ If REVERSE, sort in reverse order."
   (interactive "P")
   (gnus-group-sort-groups 'gnus-group-sort-by-method reverse))
 
+(defun gnus-group-sort-groups-by-server (&optional reverse)
+  "Sort the group buffer alphabetically by server name.
+If REVERSE, sort in reverse order."
+  (interactive "P")
+  (gnus-group-sort-groups 'gnus-group-sort-by-server reverse))
+
 ;;; Selected group sorting.
 
 (defun gnus-group-sort-selected-groups (n func &optional reverse)
@@ -2746,6 +2755,15 @@ sort in reverse order."
           (symbol-name (car (gnus-find-method-for-group
                              (gnus-info-group info2) info2)))))
 
+(defun gnus-group-sort-by-server (info1 info2)
+  "Sort alphabetically by server name."
+  (string< (gnus-method-to-server-name
+           (gnus-find-method-for-group
+            (gnus-info-group info1) info1))
+          (gnus-method-to-server-name
+           (gnus-find-method-for-group
+            (gnus-info-group info2) info2))))
+
 (defun gnus-group-sort-by-score (info1 info2)
   "Sort by group score."
   (< (gnus-info-score info1) (gnus-info-score info2)))