diff options
author | Yuan Fu <casouri@gmail.com> | 2023-01-12 17:07:21 -0800 |
---|---|---|
committer | Yuan Fu <casouri@gmail.com> | 2023-01-12 17:11:38 -0800 |
commit | 956889d8ff1c79db45ca9b1711f406961e71c272 (patch) | |
tree | 4d44cc819db4ff7433ac2a02bf61f693182de00f /src/fns.c | |
parent | 8f446c2d39736d752829e37100eede3f484b827e (diff) | |
download | emacs-956889d8ff1c79db45ca9b1711f406961e71c272.tar.gz |
Equal now recognizes tree-sitter nodes (bug#60659)
Now equal uses ts_node_eq to check equality between nodes.
* doc/lispref/parsing.texi:
(Accessing Node Information): Update manual.
* src/fns.c (internal_equal): Handle tree-sitter nodes.
* src/treesit.c (treesit_node_eq): New function.
(Ftreesit_node_eq): Factor out. Update docstring.
* src/treesit.h (treesit_node_eq): Declare new function.
Diffstat (limited to 'src/fns.c')
-rw-r--r-- | src/fns.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/fns.c b/src/fns.c index 1aaf17914a2..d5f7565d3d7 100644 --- a/src/fns.c +++ b/src/fns.c @@ -38,6 +38,10 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include "puresize.h" #include "gnutls.h" +#ifdef HAVE_TREE_SITTER +#include "treesit.h" +#endif + enum equal_kind { EQUAL_NO_QUIT, EQUAL_PLAIN, EQUAL_INCLUDING_PROPERTIES }; static bool internal_equal (Lisp_Object, Lisp_Object, enum equal_kind, int, Lisp_Object); @@ -2822,6 +2826,10 @@ internal_equal (Lisp_Object o1, Lisp_Object o2, enum equal_kind equal_kind, && !memcmp (bool_vector_data (o1), bool_vector_data (o2), bool_vector_bytes (size))); } + if (TS_NODEP (o1)) + { + return treesit_node_eq (o1, o2); + } /* Aside from them, only true vectors, char-tables, compiled functions, and fonts (font-spec, font-entity, font-object) |