Function: gnus-group-rename-group

gnus-group-rename-group is an interactive and byte-compiled function defined in gnus-group.el.gz.

Signature

(gnus-group-rename-group GROUP NEW-NAME)

Documentation

Rename group from GROUP to NEW-NAME.

When used interactively, GROUP is the group under point and NEW-NAME will be prompted for.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus-group.el.gz
(defun gnus-group-rename-group (group new-name)
  "Rename group from GROUP to NEW-NAME.
When used interactively, GROUP is the group under point
and NEW-NAME will be prompted for."
  (interactive
   (let ((group (gnus-group-group-name))
	 method new-name)
     (unless (gnus-check-backend-function 'request-rename-group group)
       (error "This back end does not support renaming groups"))
     (setq new-name (gnus-read-group
		     "Rename group to: "
		     (gnus-group-real-name group))
	   method (gnus-info-method (gnus-get-info group)))
     (list group (gnus-group-prefixed-name new-name method)))
   gnus-group-mode)

  (unless (gnus-check-backend-function 'request-rename-group group)
    (error "This back end does not support renaming groups"))
  (unless group
    (error "No group to rename"))
  (when (equal (gnus-group-real-name group) new-name)
    (error "Can't rename to the same name"))

  ;; We find the proper prefixed name.
  (setq new-name
	(if (gnus-group-native-p group)
	    ;; Native group.
	    new-name
	  ;; Foreign group.
	  (gnus-group-prefixed-name
	   (gnus-group-real-name new-name)
	   (gnus-info-method (gnus-get-info group)))))

  (when (gnus-active new-name)
    (error "The group %s already exists" new-name))

  (gnus-message 6 "Renaming group %s to %s..." group new-name)
  (prog1
      (if (progn
	    (gnus-group-goto-group group)
	    (not (when (< (gnus-group-group-level) gnus-level-zombie)
		   (gnus-request-rename-group group new-name))))
	  (gnus-error 3 "Couldn't rename group %s to %s"
		      group new-name)
	;; We rename the group internally by killing it...
	(gnus-group-kill-group)
	;; ... changing its name ...
	(setcar (cdar gnus-list-of-killed-groups) new-name)
	;; ... and then yanking it.  Magic!
	(gnus-group-yank-group)
	(gnus-set-active new-name (gnus-active group))
	(gnus-message 6 "Renaming group %s to %s...done" group new-name)
	new-name)
    (setq gnus-killed-list (delete group gnus-killed-list))
    (gnus-set-active group nil)
    (gnus-dribble-touch)
    (gnus-group-position-point)))