Function: internal-complete-buffer

internal-complete-buffer is a function defined in minibuf.c.

Signature

(internal-complete-buffer STRING PREDICATE FLAG)

Documentation

Perform completion on buffer names.

STRING and PREDICATE have the same meanings as in try-completion, all-completions, and test-completion.

If FLAG is nil, invoke try-completion; if it is t, invoke all-completions; otherwise invoke test-completion.

Probably introduced at or before Emacs version 24.4.

Source Code

// Defined in /usr/src/emacs/src/minibuf.c
{
  if (NILP (flag))
    return Ftry_completion (string, Vbuffer_alist, predicate);
  else if (EQ (flag, Qt))
    {
      Lisp_Object res = Fall_completions (string, Vbuffer_alist, predicate);
      if (SCHARS (string) > 0)
	return res;
      else
	{ /* Strip out internal buffers.  */
	  Lisp_Object bufs = res;
	  /* First, look for a non-internal buffer in `res'.  */
	  while (CONSP (bufs) && SREF (XCAR (bufs), 0) == ' ')
	    bufs = XCDR (bufs);
	  if (NILP (bufs))
	    return (list_length (res) == list_length (Vbuffer_alist)
		    /* If all bufs are internal don't strip them out.  */
		    ? res : bufs);
	  res = bufs;
	  while (CONSP (XCDR (bufs)))
	    if (SREF (XCAR (XCDR (bufs)), 0) == ' ')
	      XSETCDR (bufs, XCDR (XCDR (bufs)));
	    else
	      bufs = XCDR (bufs);
	  return res;
	}
    }
  else if (EQ (flag, Qlambda))
    return Ftest_completion (string, Vbuffer_alist, predicate);
  else if (EQ (flag, Qmetadata))
    return list3 (Qmetadata,
                  Fcons (Qcategory, Qbuffer),
                  Fcons (Qcycle_sort_function, Qidentity));
  else
    return Qnil;
}