; * src/treesit.c (treesit_query_string_string): fix last change

Escape the backslash character itself.
This commit is contained in:
Mattias Engdegård 2023-06-17 11:55:12 +02:00
parent 30d5f1e62c
commit c279369a7a
2 changed files with 6 additions and 4 deletions

View file

@ -2312,7 +2312,8 @@ treesit_query_string_string (Lisp_Object str)
for (ptrdiff_t i = 0; i < nbytes; i++)
{
unsigned char c = SREF (str, i);
escapes += (c == '\0' || c == '\n' || c == '\r' || c == '\t' || c == '"');
escapes += (c == '\0' || c == '\n' || c == '\r' || c == '\t'
|| c == '"' || c == '\\');
}
ptrdiff_t nchars = SCHARS (str);
ptrdiff_t extra = escapes + 2; /* backslashes + double quotes */
@ -2331,7 +2332,8 @@ treesit_query_string_string (Lisp_Object str)
case '\n': *d++ = '\\'; *d++ = 'n'; break;
case '\r': *d++ = '\\'; *d++ = 'r'; break;
case '\t': *d++ = '\\'; *d++ = 't'; break;
case '"': *d++ = '\\'; *d++ = '"'; break;
case '"':
case '\\': *d++ = '\\'; *d++ = c; break;
default: *d++ = c; break;
}
}

View file

@ -465,8 +465,8 @@ BODY is the test body."
;; Test string conversion in `treesit-pattern-expand'.
(should (equal
(treesit-pattern-expand "a\nb\rc\td\0e\"f\1g")
"\"a\\nb\\rc\\td\\0e\\\"f\1g\"")))))
(treesit-pattern-expand "a\nb\rc\td\0e\"f\1g\\h\fi")
"\"a\\nb\\rc\\td\\0e\\\"f\1g\\\\h\fi\"")))))
;;; Narrow