Function: treesit-pattern-expand

treesit-pattern-expand is a function defined in treesit.c.

Signature

(treesit-pattern-expand PATTERN)

Documentation

Expand PATTERN to its string form.

PATTERN can be

    :anchor
    :?
    :*
    :+
    :equal
    :match
    (TYPE PATTERN...)
    [PATTERN...]
    FIELD-NAME:
    @CAPTURE-NAME
    (_)
    _
    "TYPE"

See Info node (elisp)Pattern Matching for detailed explanation.

Other relevant functions are documented in the treesit group.

View in manual

Shortdoc

;; treesit
(treesit-pattern-expand :anchor)
    => "."
  (treesit-pattern-expand '(identifier))
    => "(identifier)"
  (treesit-pattern-expand :equal)
    => "#eq?"

Source Code

// Defined in /usr/src/emacs/src/treesit.c
{
  if (BASE_EQ (pattern, QCanchor))
    return Vtreesit_str_dot;
  if (BASE_EQ (pattern, QCquestion))
    return Vtreesit_str_question_mark;
  if (BASE_EQ (pattern, QCstar))
    return Vtreesit_str_star;
  if (BASE_EQ (pattern, QCplus))
    return Vtreesit_str_plus;
  if (BASE_EQ (pattern, QCequal) || BASE_EQ (pattern, QCeq_q))
    return Vtreesit_str_pound_eq_question_mark;
  if (BASE_EQ (pattern, QCmatch) || BASE_EQ (pattern, QCmatch_q))
    return Vtreesit_str_pound_match_question_mark;
  if (BASE_EQ (pattern, QCpred) || BASE_EQ (pattern, QCpred_q))
    return Vtreesit_str_pound_pred_question_mark;
  Lisp_Object opening_delimeter
    = VECTORP (pattern)
      ? Vtreesit_str_open_bracket : Vtreesit_str_open_paren;
  Lisp_Object closing_delimiter
    = VECTORP (pattern)
      ? Vtreesit_str_close_bracket : Vtreesit_str_close_paren;
  if (VECTORP (pattern) || CONSP (pattern))
    return concat3 (opening_delimeter,
		    Fmapconcat (Qtreesit_pattern_expand,
				pattern,
				Vtreesit_str_space),
		    closing_delimiter);
  if (STRINGP (pattern))
    return treesit_query_string_string (pattern);

  return Fprin1_to_string (pattern, Qnil, Qt);
}