Function: completion--insert-strings

completion--insert-strings is a byte-compiled function defined in minibuffer.el.gz.

Signature

(completion--insert-strings STRINGS &optional GROUP-FUN)

Documentation

Insert a list of STRINGS into the current buffer.

The candidate strings are inserted into the buffer depending on the completions format as specified by the variable completions-format. Runs of equal candidate strings are eliminated. GROUP-FUN is a group-function used for grouping the completion candidates.

Source Code

;; Defined in /usr/src/emacs/lisp/minibuffer.el.gz
(defun completion--insert-strings (strings &optional group-fun)
  "Insert a list of STRINGS into the current buffer.
The candidate strings are inserted into the buffer depending on the
completions format as specified by the variable `completions-format'.
Runs of equal candidate strings are eliminated.  GROUP-FUN is a
`group-function' used for grouping the completion candidates."
  (when (consp strings)
    (let* ((length (apply #'max
			  (mapcar (lambda (s)
				    (if (consp s)
                                        (apply #'+ (mapcar #'string-width s))
				      (string-width s)))
				  strings)))
	   (window (get-buffer-window (current-buffer) 0))
	   (wwidth (if window (1- (window-width window)) 79))
	   (columns (min
		     ;; At least 2 spaces between columns.
		     (max 1 (/ wwidth (+ 2 length)))
		     ;; Don't allocate more columns than we can fill.
		     ;; Windows can't show less than 3 lines anyway.
		     (max 1 (/ (length strings) 2))))
	   (colwidth (/ wwidth columns)))
      (unless (or tab-stop-list (null completion-tab-width)
                  (zerop (mod colwidth completion-tab-width)))
        ;; Align to tab positions for the case
        ;; when the caller uses tabs inside prefix.
        (setq colwidth (- colwidth (mod colwidth completion-tab-width))))
      (funcall (intern (format "completion--insert-%s" completions-format))
               strings group-fun length wwidth colwidth columns))))