Function: nnmaildir-request-delete-group
nnmaildir-request-delete-group is a byte-compiled function defined in
nnmaildir.el.gz.
Signature
(nnmaildir-request-delete-group GNAME FORCE &optional SERVER)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/nnmaildir.el.gz
(defun nnmaildir-request-delete-group (gname force &optional server)
(let ((group (nnmaildir--prepare server gname))
pgname grp-dir target dir ls deactivate-mark)
(catch 'return
(unless group
(setf (nnmaildir--srv-error nnmaildir--cur-server)
(concat "No such group: " gname))
(throw 'return nil))
(setq gname (nnmaildir--grp-name group)
pgname (nnmaildir--pgname nnmaildir--cur-server gname)
grp-dir (nnmaildir--srv-dir nnmaildir--cur-server)
target (car (file-attributes (concat grp-dir gname)))
grp-dir (nnmaildir--srvgrp-dir grp-dir gname))
(unless (or force (stringp target))
(setf (nnmaildir--srv-error nnmaildir--cur-server)
(concat "Not a symlink: " gname))
(throw 'return nil))
(if (eq group (nnmaildir--srv-curgrp nnmaildir--cur-server))
(setf (nnmaildir--srv-curgrp nnmaildir--cur-server) nil))
(remhash gname (nnmaildir--srv-groups nnmaildir--cur-server))
(if (not force)
(progn
(setq grp-dir (directory-file-name grp-dir))
(nnmaildir--unlink grp-dir))
(setq ls (nnmaildir--group-ls nnmaildir--cur-server pgname))
(if (nnmaildir--param pgname 'read-only)
(progn (delete-directory (nnmaildir--tmp grp-dir))
(nnmaildir--unlink (nnmaildir--new grp-dir))
(delete-directory (nnmaildir--cur grp-dir)))
(nnmaildir--delete-dir-files (nnmaildir--tmp grp-dir) ls)
(nnmaildir--delete-dir-files (nnmaildir--new grp-dir) ls)
(nnmaildir--delete-dir-files (nnmaildir--cur grp-dir) ls))
(setq dir (nnmaildir--nndir grp-dir))
(dolist (subdir `(,(nnmaildir--nov-dir dir) ,(nnmaildir--num-dir dir)
,@(funcall ls (nnmaildir--marks-dir dir)
'full "\\`[^.]" 'nosort)))
(nnmaildir--delete-dir-files subdir ls))
(setq dir (nnmaildir--nndir grp-dir))
(nnmaildir--unlink (concat dir "markfile"))
(nnmaildir--unlink (concat dir "markfile{new}"))
(delete-directory (nnmaildir--marks-dir dir))
(delete-directory dir)
(if (not (stringp target))
(delete-directory grp-dir)
(setq grp-dir (directory-file-name grp-dir)
dir target)
(unless (eq (aref "/" 0) (aref dir 0))
(setq dir (concat (file-truename
(nnmaildir--srv-dir nnmaildir--cur-server))
dir)))
(delete-directory dir)
(nnmaildir--unlink grp-dir)))
t)))