Function: gnus-article-read-summary-keys
gnus-article-read-summary-keys is an autoloaded, interactive and
byte-compiled function defined in gnus-art.el.gz.
Signature
(gnus-article-read-summary-keys &optional ARG KEY NOT-RESTORE-WINDOW)
Documentation
Read a summary buffer key sequence and execute it from the article buffer.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-art.el.gz
(defun gnus-article-read-summary-keys (&optional _arg key not-restore-window)
"Read a summary buffer key sequence and execute it from the article buffer."
(interactive "P" gnus-article-mode)
(gnus-article-check-buffer)
(let ((nosaves
'("q" "Q" "r" "m" "a" "f" "WDD" "WDW"
"Zc" "ZC" "ZE" "ZQ" "ZZ" "Zn" "ZR" "ZG" "ZN" "ZP"
"=" "^" "\M-^" "|"))
(nosave-but-article
'("A " "A<" "A>" "AM" "AP" "AR" "AT" "A\C-?" "A\M-\r" "A\r" "Ab" "Ae"
"An" "Ap" [?A (meta return)] [?A delete]))
(nosave-in-article
'("AS" "\C-d"))
keys new-sum-point gnus-pick-mode func)
(with-current-buffer gnus-article-current-summary
(setq unread-command-events (nconc unread-command-events
(list (or key last-command-event)))
keys (read-key-sequence nil t)
func (key-binding keys t)))
(message "")
(when (eq func 'undefined)
(error "%s is undefined" keys))
(cond
((eq (aref keys (1- (length keys))) ?\C-h)
(gnus-article-describe-bindings (substring keys 0 -1)))
((or (member keys nosaves)
(member keys nosave-but-article)
(member keys nosave-in-article))
(if (or (not func)
(numberp func))
(ding)
(unless (member keys nosave-in-article)
(set-buffer gnus-article-current-summary))
(when (and (symbolp func)
(get func 'disabled))
(error "Function %s disabled" func))
(call-interactively func)
(setq new-sum-point (point)))
(when (member keys nosave-but-article)
(pop-to-buffer gnus-article-buffer)))
(t
;; These commands should restore window configuration.
(let ((obuf (current-buffer))
(owin (current-window-configuration))
win in-buffer selected new-sum-start new-sum-hscroll err)
(cond (not-restore-window
(pop-to-buffer gnus-article-current-summary)
(setq win (selected-window)))
((setq win (get-buffer-window gnus-article-current-summary))
(select-window win))
(t
(let ((summary-buffer gnus-article-current-summary))
(gnus-configure-windows 'article)
(unless (setq win (get-buffer-window summary-buffer 'visible))
(let ((gnus-buffer-configuration
'((article ((vertical 1.0
(summary 0.25 point)
(article 1.0)))))))
(gnus-configure-windows 'article))
(setq win (get-buffer-window summary-buffer 'visible)))
(select-frame-set-input-focus (window-frame win))
(select-window win))))
(setq in-buffer (current-buffer))
(when (and (symbolp func)
(get func 'disabled))
(error "Function %s disabled" func))
(if (and func
(functionp func)
(condition-case code
(progn
(call-interactively func)
t)
(error
(setq err code)
nil)))
(progn
(when (eq win (selected-window))
(setq new-sum-point (point)
new-sum-start (window-start win)
new-sum-hscroll (window-hscroll win)))
(when (or (eq in-buffer (current-buffer))
(when (eq obuf (current-buffer))
(set-buffer in-buffer)
t))
(setq selected (ignore-errors (gnus-summary-select-article)))
(set-buffer obuf)
(unless not-restore-window
(set-window-configuration owin))
(when (and (eq selected 'old)
new-sum-point)
(set-window-start (get-buffer-window (current-buffer))
1)
(set-window-point (get-buffer-window (current-buffer))
(if (article-goto-body)
(1- (point))
(point))))
(when (and (not not-restore-window)
new-sum-point
(window-live-p win)
(with-current-buffer (window-buffer win)
(derived-mode-p 'gnus-summary-mode)))
(set-window-point win new-sum-point)
(set-window-start win new-sum-start)
(set-window-hscroll win new-sum-hscroll))))
(set-window-configuration owin)
(if err
(signal (car err) (cdr err))
(ding))))))))