diff options
| author | Yuan Fu | 2024-09-08 17:30:21 -0700 |
|---|---|---|
| committer | Yuan Fu | 2024-09-08 20:52:20 -0700 |
| commit | 3fcec09f754af9822339eff3ea15d43eb7d19014 (patch) | |
| tree | f2c18fa97834987a5ca61534eae19efca6fd54ac | |
| parent | 0fd259d166c0dca4d097ad026ac748748ba88497 (diff) | |
| download | emacs-3fcec09f754af9822339eff3ea15d43eb7d19014.tar.gz emacs-3fcec09f754af9822339eff3ea15d43eb7d19014.zip | |
Add debugging function for treesit.c
* src/treesit.c (treesit_debug_print_parser_list): New function.
| -rw-r--r-- | src/treesit.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/treesit.c b/src/treesit.c index 6e806039df0..351bd65819a 100644 --- a/src/treesit.c +++ b/src/treesit.c | |||
| @@ -485,6 +485,53 @@ treesit_initialize (void) | |||
| 485 | } | 485 | } |
| 486 | 486 | ||
| 487 | 487 | ||
| 488 | /*** Debugging */ | ||
| 489 | |||
| 490 | void treesit_debug_print_parser_list (char *msg, Lisp_Object parser) | ||
| 491 | { | ||
| 492 | struct buffer *buf = XBUFFER (XTS_PARSER (parser)->buffer); | ||
| 493 | char *buf_name = SSDATA (BVAR (buf, name)); | ||
| 494 | printf ("%s (%s) [%s] <%s>: %ld(%ld)-(%ld)%ld {\n", | ||
| 495 | msg == NULL ? "" : msg, | ||
| 496 | SSDATA (SYMBOL_NAME (Vthis_command)), | ||
| 497 | SSDATA (SYMBOL_NAME (XTS_PARSER (parser)->language_symbol)), | ||
| 498 | buf_name, BUF_BEG (buf), | ||
| 499 | BUF_BEGV (buf), BUF_Z (buf), BUF_ZV (buf)); | ||
| 500 | Lisp_Object tail = BVAR (buf, ts_parser_list); | ||
| 501 | |||
| 502 | FOR_EACH_TAIL (tail) | ||
| 503 | { | ||
| 504 | struct Lisp_TS_Parser *parser = XTS_PARSER (XCAR (tail)); | ||
| 505 | printf ("[%s %s %s %ld-%ld T:%ld]\n", SSDATA (SYMBOL_NAME (parser->language_symbol)), | ||
| 506 | SSDATA (SYMBOL_NAME (parser->tag)), | ||
| 507 | parser->need_reparse ? "NEED-R" : "NONEED", | ||
| 508 | parser->visible_beg, parser->visible_end, | ||
| 509 | parser->timestamp); | ||
| 510 | /* Print ranges. */ | ||
| 511 | uint32_t len; | ||
| 512 | const TSRange *ranges | ||
| 513 | = ts_parser_included_ranges (parser->parser, &len); | ||
| 514 | |||
| 515 | if (!(len == 1 && ranges[0].start_byte == 0 && ranges[0].end_byte == -1)) | ||
| 516 | { | ||
| 517 | for (int idx = 0; idx < len; idx++) | ||
| 518 | { | ||
| 519 | TSRange range = ranges[idx]; | ||
| 520 | printf (" [%d, %d)", range.start_byte, range.end_byte); | ||
| 521 | |||
| 522 | /* if (!parser->need_reparse) */ | ||
| 523 | /* { */ | ||
| 524 | /* eassert (BUF_BEGV_BYTE (buf) <= range.start_byte + parser->visible_beg); */ | ||
| 525 | /* eassert (range.end_byte + parser->visible_beg <= BUF_ZV_BYTE (buf)); */ | ||
| 526 | /* } */ | ||
| 527 | } | ||
| 528 | printf ("\n"); | ||
| 529 | } | ||
| 530 | } | ||
| 531 | printf ("}\n\n"); | ||
| 532 | } | ||
| 533 | |||
| 534 | |||
| 488 | /*** Loading language library */ | 535 | /*** Loading language library */ |
| 489 | 536 | ||
| 490 | /* Translate a symbol treesit-<lang> to a C name treesit_<lang>. */ | 537 | /* Translate a symbol treesit-<lang> to a C name treesit_<lang>. */ |