Function: completion-preview-next-candidate
completion-preview-next-candidate is an interactive and byte-compiled
function defined in completion-preview.el.gz.
Signature
(completion-preview-next-candidate N)
Documentation
Cycle the candidate the preview is showing N candidates forward.
If N is negative, cycle -N candidates backward. Interactively, N is the prefix argument and defaults to 1.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/completion-preview.el.gz
(defun completion-preview-next-candidate (n)
"Cycle the candidate the preview is showing N candidates forward.
If N is negative, cycle -N candidates backward. Interactively, N is the
prefix argument and defaults to 1."
(interactive "p" completion-preview-active-mode)
(when completion-preview-active-mode
(let* ((beg (completion-preview--get 'completion-preview-beg))
(end (completion-preview--get 'completion-preview-end))
(all (completion-preview--get 'completion-preview-suffixes))
(com (completion-preview--get 'completion-preview-common))
(cur (completion-preview--get 'completion-preview-index))
(len (length all))
(new (mod (+ cur n) len))
(suf (nth new all))
(lencom (length com)))
;; Skip suffixes that are no longer applicable. This may happen
;; when the user continues typing and immediately runs this
;; command, before the completion backend returns an updated set
;; of completions for the new (longer) prefix, so we still have
;; the previous (larger) set of candidates at hand.
(while (or (<= (+ beg lencom (length suf)) end)
(not (string-prefix-p (buffer-substring beg end)
(concat com suf))))
(setq new (mod (+ new n) len)
suf (nth new all)))
(set-text-properties 0 (length suf)
(list 'face (if (cdr all)
'completion-preview
'completion-preview-exact))
suf)
(let ((aft (completion-preview--propertize-for-mouse
(substring (concat com suf) (- end beg)))))
(add-text-properties 0 1 '(cursor 1) aft)
(overlay-put completion-preview--overlay 'completion-preview-index new)
(overlay-put completion-preview--overlay 'after-string aft))
(when completion-preview-message-format
(message (format-spec completion-preview-message-format
`((?i . ,(1+ new)) (?n . ,len))))))))