Note gnus.general appears *twice* because `gnus-topic-change-level' on a topicless group will blithely add it to gnus-topic-alist without updating the group buffer to reflect its new position in the "topology." emacs-27.1 -Q --batch \ --eval "(custom-set-variables \ '(network-security-level (quote low)) \ '(gnus-interactive-exit (quote quiet)) \ '(gnus-large-newsgroup 4000) \ '(gnus-select-method (quote (nntp \"news.gmane.io\"))) \ '(gnus-add-timestamp-to-message (quote log)) \ '(gnus-before-startup-hook (quote (toggle-debug-on-error))) \ '(gnus-always-read-dribble-file t) \ '(gnus-use-dribble-file nil) \ '(gnus-read-newsrc-file nil) \ '(gnus-parameters (quote ((\"^nntp\" (display . 1000))))) \ '(gnus-summary-prepared-hook (quote (gnus-summary-hide-all-threads))) \ '(gnus-startup-file \"/var/tmp/foo\") \ )" \ -l gnus-topic \ --eval "(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)" \ -f gnus \ --eval "(gnus-server-open-all-servers)" \ --eval "(gnus-fetch-group \"nntp+news.gmane.io:gmane.emacs.gnus.general\")" \ --eval "(with-current-buffer (gnus-summary-buffer-name \"nntp+news.gmane.io:gmane.emacs.gnus.general\") (gnus-summary-exit))" \ --eval "(goto-char (point-min))" \ --eval "(save-excursion (gnus-group-subscribe nil))" \ --eval "(gnus-topic-move-group nil \"misc\")" \ --eval "(princ (buffer-string) #'external-debugging-output)"