]> git.eshelyaron.com Git - emacs.git/commitdiff
; * src/treesit.c (treesit_query_string_string): fix last change
authorMattias Engdegård <mattiase@acm.org>
Sat, 17 Jun 2023 09:55:12 +0000 (11:55 +0200)
committerMattias Engdegård <mattiase@acm.org>
Sat, 17 Jun 2023 09:56:22 +0000 (11:56 +0200)
Escape the backslash character itself.

src/treesit.c
test/src/treesit-tests.el

index 680e510b74da1da23230bfa48f0385dc50262dc6..87aa1eeb3772c4ca7ef094f3c8d842fa234b99d1 100644 (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;
        }
     }
index 6e7d0fc48d23b18823de77b1658b0af144da8e08..34540b463cd12322804a2c88d26a7b780d0ac610 100644 (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