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)))