Function: nnmh-request-rename-group

nnmh-request-rename-group is a byte-compiled function defined in nnmh.el.gz.

Signature

(nnmh-request-rename-group GROUP NEW-NAME &optional SERVER)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnmh.el.gz
(deffoo nnmh-request-rename-group (group new-name &optional server)
  (nnmh-possibly-change-directory group server)
  (let ((new-dir (nnmail-group-pathname new-name nnmh-directory))
	(old-dir (nnmail-group-pathname group nnmh-directory)))
    (when (ignore-errors
	    (make-directory new-dir t)
	    t)
      ;; We move the articles file by file instead of renaming
      ;; the directory -- there may be subgroups in this group.
      ;; One might be more clever, I guess.
      (let ((files (nnheader-article-to-file-alist old-dir)))
	(while files
	  (rename-file
	   (concat old-dir (cdar files))
	   (concat new-dir (cdar files)))
	  (pop files)))
      (when (<= (length (directory-files old-dir)) 2)
	(ignore-errors
	  (delete-directory old-dir)))
      ;; That went ok, so we change the internal structures.
      (let ((entry (assoc group nnmh-group-alist)))
	(when entry
	  (setcar entry new-name))
	(setq nnmh-current-directory nil)
	t))))