- (unless gnus-newsgroup-processable
- (error "No articles have been picked"))
- (gnus-summary-limit-to-articles nil)
- (when catch-up
- (gnus-summary-limit-mark-excluded-as-read))
- (gnus-configure-windows (if gnus-pick-display-summary 'summary 'pick) t))
+ (if gnus-newsgroup-processable
+ (progn
+ (gnus-summary-limit-to-articles nil)
+ (when (or catch-up gnus-mark-unpicked-articles-as-read)
+ (gnus-summary-limit-mark-excluded-as-read))
+ (gnus-summary-first-article)
+ (gnus-configure-windows
+ (if gnus-pick-display-summary 'article 'pick) t))
+ (if gnus-pick-elegant-flow
+ (progn
+ (when (or catch-up gnus-mark-unpicked-articles-as-read)
+ (gnus-summary-catchup nil t))
+ (if (gnus-group-quit-config gnus-newsgroup-name)
+ (gnus-summary-exit)
+ (gnus-summary-next-group)))
+ (error "No articles have been picked"))))
+
+(defun gnus-pick-goto-article (arg)
+ "Go to the article number indicated by ARG.
+If ARG is an invalid article number, then stay on current line."
+ (let (pos)
+ (save-excursion
+ (goto-char (point-min))
+ (when (zerop (forward-line (1- (prefix-numeric-value arg))))
+ (setq pos (point))))
+ (if (not pos)
+ (gnus-error 2 "No such line: %s" arg)
+ (goto-char pos))))
+
+(defun gnus-pick-article (&optional arg)
+ "Pick the article on the current line.
+If ARG, pick the article on that line instead."
+ (interactive "P")
+ (when arg
+ (gnus-pick-goto-article arg))
+ (gnus-summary-mark-as-processable 1))
+
+(defun gnus-pick-article-or-thread (&optional arg)
+ "If gnus-thread-hide-subtree is t, then pick the thread on the current line.
+Otherwise pick the article on the current line.
+If