Function: treesit-parser-included-ranges

treesit-parser-included-ranges is a function defined in treesit.c.

Signature

(treesit-parser-included-ranges PARSER)

Documentation

Return the ranges set for PARSER.

If no ranges are set for PARSER, return nil. See also treesit-parser-set-included-ranges.

Other relevant functions are documented in the treesit group.

View in manual

Shortdoc

;; treesit
(treesit-parser-included-ranges parser)
    e.g. => ((1 . 4) (5 . 8))

Source Code

// Defined in /usr/src/emacs/src/treesit.c
{
  treesit_check_parser (parser);
  treesit_initialize ();

  /* When the parser doesn't have a range set and we call
     ts_parser_included_ranges on it, it doesn't return an empty list,
     but rather return some garbled data. (A single range where
     start_byte = 0, end_byte = UINT32_MAX).  So we need to track
     whether the parser is ranged ourselves.  */
  if (!XTS_PARSER (parser)->has_range)
    return Qnil;

  uint32_t len;
  const TSRange *ranges
    = ts_parser_included_ranges (XTS_PARSER (parser)->parser, &len);

  /* Our return value depends on the buffer state (BUF_BEGV_BYTE,
     etc), so we need to sync up.  */
  treesit_check_buffer_size (XBUFFER (XTS_PARSER (parser)->buffer));
  treesit_sync_visible_region (parser);

  struct buffer *buffer = XBUFFER (XTS_PARSER (parser)->buffer);
  return treesit_make_ranges (ranges, len, buffer);
}