Function: gnus-browse-toggle-subscription

gnus-browse-toggle-subscription is a byte-compiled function defined in gnus-srvr.el.gz.

Signature

(gnus-browse-toggle-subscription)

Documentation

Toggle subscription of the current group in the browse buffer.

Aliases

gnus-browse-unsubscribe-group (obsolete since 28.1)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus-srvr.el.gz
(defun gnus-browse-toggle-subscription ()
  "Toggle subscription of the current group in the browse buffer."
  (let ((sub nil)
	(buffer-read-only nil)
	group)
    (save-excursion
      (beginning-of-line)
      ;; If this group it killed, then we want to subscribe it.
      (unless (eq (char-after) ? )
	(setq sub t))
      (setq group (gnus-browse-group-name))
      (when (gnus-server-equal gnus-browse-current-method "native")
	(setq group (gnus-group-real-name group)))
      (if sub
	  (progn
	    ;; Make sure the group has been properly removed before we
	    ;; subscribe to it.
            (if (gnus-ephemeral-group-p group)
		(gnus-kill-ephemeral-group group))
	    (let ((entry (gnus-group-entry group)))
	      (if entry
		  ;; Just change the subscription level if it is an
		  ;; unsubscribed group.
		  (gnus-group-change-level entry
					   gnus-level-default-subscribed)
		;; If it is a killed group or a zombie, feed it to the
		;; mechanism for new group subscription.
		(gnus-call-subscribe-functions
		 gnus-browse-subscribe-newsgroup-method
		 group)
		(gnus-request-update-group-status group 'subscribe)))
	    (delete-char 1)
	    (insert (let ((lvl (gnus-group-level group)))
		      (cond
		       ((< lvl gnus-level-unsubscribed) ? )
		       ((< lvl gnus-level-zombie) ?U)
		       ((< lvl gnus-level-killed) ?Z)
		       (t ?K)))))
	(gnus-group-change-level
	 group gnus-level-unsubscribed gnus-level-default-subscribed)
	(delete-char 1)
	(insert ?U)))
    t))