unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Yuan Fu <casouri@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
Subject: Re: How to add pseudo vector types
Date: Fri, 16 Jul 2021 22:05:01 -0400	[thread overview]
Message-ID: <258CB68D-1CC1-42C8-BDCD-2A8A8099B783@gmail.com> (raw)
In-Reply-To: <533BD53B-4E85-4E9E-B46A-346A5BBAD0F5@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2008 bytes --]

Please have a look at the second patch that applies on top of the first one. This time I added after-change hooks, so if you create a parser for a buffer and edit that buffer, the parser is kept updated lazily.

In summary, the parser parses the whole buffer on the first time when the user asks for the parse tree. In after-change-hook, no parsing is done, but we do update the trees with position changes. On the next time when the user asks for the parse tree, the whole buffer is re-parsed incrementally. (I didn’t read the paper, but I assume it knows where are the bits to re-parse because we updated the tree with position changes.)

Maybe this is not lazy enough, and I should do a benchmark. This is a simple benchmark that I did:

Benchmark 1: 22M json file, opened in literary mode, try parse the whole buffer, took 17s and uses 3G memory.

Benchmark2: 1.6M json file, opened in fundamental mode, first parsed the whole buffer, took 1.039s, no gc. Then  ran this:

(benchmark-run 1000
  (dotimes (_ 1000)
    (insert
     "1,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,\n"))
  (dotimes (_ 1000)
    (backward-delete-char
     (length
      "1,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,\n"))))

Result: (39.302071 8 4.3011029999999995) and many gc trimming. Then removes the parser, ran again,
Result: (33.589416 8 4.405495999999999)

No parsing is done in either run (because parsing is lazy, and I didn’t ask for the parse tree). The only difference is that, in the first run, after-change-hook updates the tree with position change. My conclusion is that after-change-hook is pretty insignificant, and the initial parse is a bit slow (on large files).

I’m running this on a 1.4 GHz Quad-Core Intel Core i5 with 16G memory.

Of course, I’m open to suggestions for a better benchmark. The amateur log of the benchmark is in benchmark.el. The json file I used in the second benchmark is benchmark.2.json. The patch is ts.2.patch.


[-- Attachment #2: ts.2.patch --]
[-- Type: application/octet-stream, Size: 11087 bytes --]

From 180aea41cdce11b9b4bdc7da0964c14c0bf8a5f0 Mon Sep 17 00:00:00 2001
From: Yuan Fu <casouri@gmail.com>
Date: Fri, 16 Jul 2021 21:11:29 -0400
Subject: [PATCH] checkpoint 2: add change-hooks

---
 src/insdel.c      |  16 +++++
 src/tree_sitter.c | 163 ++++++++++++++++++++++++++++++++++++++++++++--
 src/tree_sitter.h |  10 +++
 3 files changed, 182 insertions(+), 7 deletions(-)

diff --git a/src/insdel.c b/src/insdel.c
index e38b091f54..3c1e13d38b 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -31,6 +31,10 @@
 #include "region-cache.h"
 #include "pdumper.h"
 
+#ifdef HAVE_TREE_SITTER
+#include "tree_sitter.h"
+#endif
+
 static void insert_from_string_1 (Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t,
 				  ptrdiff_t, bool, bool);
 static void insert_from_buffer_1 (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
@@ -2152,6 +2156,11 @@ signal_before_change (ptrdiff_t start_int, ptrdiff_t end_int,
       run_hook (Qfirst_change_hook);
     }
 
+#ifdef HAVE_TREE_SITTER
+  /* FIXME: Is this the best place?  */
+  ts_before_change (start_int, end_int);
+#endif
+
   /* Now run the before-change-functions if any.  */
   if (!NILP (Vbefore_change_functions))
     {
@@ -2205,6 +2214,13 @@ signal_after_change (ptrdiff_t charpos, ptrdiff_t lendel, ptrdiff_t lenins)
   if (inhibit_modification_hooks)
     return;
 
+#ifdef HAVE_TREE_SITTER
+  /* We disrespect combine-after-change, because if we don't record
+     this change, the information that we need (the end byte position
+     of the change) will be lost.  */
+  ts_after_change (charpos, lendel, lenins);
+#endif
+
   /* If we are deferring calls to the after-change functions
      and there are no before-change functions,
      just record the args that we were going to use.  */
diff --git a/src/tree_sitter.c b/src/tree_sitter.c
index f2134c571a..7d1225161c 100644
--- a/src/tree_sitter.c
+++ b/src/tree_sitter.c
@@ -27,6 +27,7 @@ Copyright (C) 2021 Free Software Foundation, Inc.
 #include <stdlib.h>
 #include <unistd.h>
 
+#include "lisp.h"
 #include "buffer.h"
 #include "coding.h"
 #include "tree_sitter.h"
@@ -34,6 +35,98 @@ Copyright (C) 2021 Free Software Foundation, Inc.
 /* parser.h defines a macro ADVANCE that conflicts with alloc.c.   */
 #include <tree_sitter/parser.h>
 
+/* Record the byte position of the end of the (to-be) changed text.
+We have to record it now, because by the time we get to after-change
+hook, the _byte_ position of the end is lost.  */
+void
+ts_before_change (ptrdiff_t start_int, ptrdiff_t end_int)
+{
+  /* Iterate through each parser in 'tree-sitter-parser-list' and
+     record the byte position.  There could be better ways to record
+     it than storing the same position in every parser, but this is
+     the most fool-proof way, and I expect a buffer to have only one
+     parser most of the time anyway. */
+  ptrdiff_t beg_byte = CHAR_TO_BYTE (start_int);
+  ptrdiff_t old_end_byte = CHAR_TO_BYTE (end_int);
+  Lisp_Object parser_list = Fsymbol_value (Qtree_sitter_parser_list);
+  while (!NILP (parser_list))
+    {
+      Lisp_Object lisp_parser = Fcar (parser_list);
+      XTS_PARSER (lisp_parser)->edit.start_byte = beg_byte;
+      XTS_PARSER (lisp_parser)->edit.old_end_byte = old_end_byte;
+      parser_list = Fcdr (parser_list);
+    }
+}
+
+/* Update each parser's tree after the user made an edit.  This
+function does not parse the buffer and only updates the tree. (So it
+should be very fast.)  */
+void
+ts_after_change (ptrdiff_t charpos, ptrdiff_t lendel, ptrdiff_t lenins)
+{
+  ptrdiff_t new_end_byte = CHAR_TO_BYTE (charpos + lenins);
+  Lisp_Object parser_list = Fsymbol_value (Qtree_sitter_parser_list);
+  while (!NILP (parser_list))
+    {
+      Lisp_Object lisp_parser = Fcar (parser_list);
+      TSTree *tree = XTS_PARSER (lisp_parser)->tree;
+      XTS_PARSER (lisp_parser)->edit.new_end_byte = new_end_byte;
+      if (tree != NULL)
+	  ts_tree_edit (tree, &XTS_PARSER (lisp_parser)->edit);
+      parser_list = Fcdr (parser_list);
+    }
+}
+
+/* Parse the buffer.  We don't parse until we have to. When we have
+to, we call this function to parse and update the tree.  */
+void
+ts_ensure_parsed (Lisp_Object parser)
+{
+  TSParser *ts_parser = XTS_PARSER (parser)->parser;
+  TSTree *tree = XTS_PARSER(parser)->tree;
+  TSInput input = XTS_PARSER (parser)->input;
+  TSTree *new_tree = ts_parser_parse(ts_parser, tree, input);
+  XTS_PARSER (parser)->tree = new_tree;
+}
+
+/* This is the read function provided to tree-sitter to read from a
+   buffer.  It reads one character at a time and automatically skip
+   the gap.  */
+const char*
+ts_read_buffer (void *buffer, uint32_t byte_index,
+		TSPoint position, uint32_t *bytes_read)
+{
+  if (! BUFFER_LIVE_P ((struct buffer *) buffer))
+    error ("BUFFER is not live");
+
+  ptrdiff_t byte_pos = byte_index + 1;
+
+  // FIXME: Add some boundary checks?
+  /* I believe we can get away with only setting current-buffer
+     and not actually switching to it, like what we did in
+     'make_gap_1'.  */
+  struct buffer *old_buffer = current_buffer;
+  current_buffer = (struct buffer *) buffer;
+
+  /* Read one character.  */
+  char *beg;
+  int len;
+  if (byte_pos >= Z_BYTE)
+    {
+      beg = "";
+      len = 0;
+    }
+  else
+    {
+      beg = (char *) BYTE_POS_ADDR (byte_pos);
+      len = next_char_len(byte_pos);
+    }
+  *bytes_read = (uint32_t) len;
+  current_buffer = old_buffer;
+  return beg;
+}
+
+/* Wrap the parser in a Lisp_Object to be used in the Lisp machine.  */
 Lisp_Object
 make_ts_parser (struct buffer *buffer, TSParser *parser, TSTree *tree)
 {
@@ -42,10 +135,15 @@ make_ts_parser (struct buffer *buffer, TSParser *parser, TSTree *tree)
   lisp_parser->buffer = buffer;
   lisp_parser->parser = parser;
   lisp_parser->tree = tree;
-  // TODO TSInput.
+  TSInput input = {buffer, ts_read_buffer, TSInputEncodingUTF8};
+  lisp_parser->input = input;
+  TSPoint dummy_point = {0, 0};
+  TSInputEdit edit = {0, 0, 0, dummy_point, dummy_point, dummy_point};
+  lisp_parser->edit = edit;
   return make_lisp_ptr (lisp_parser, Lisp_Vectorlike);
 }
 
+/* Wrap the node in a Lisp_Object to be used in the Lisp machine.  */
 Lisp_Object
 make_ts_node (Lisp_Object parser, TSNode node)
 {
@@ -57,19 +155,59 @@ make_ts_node (Lisp_Object parser, TSNode node)
 }
 
 
-/* Tree-sitter parser.  */
+DEFUN ("tree-sitter-create-parser",
+       Ftree_sitter_create_parser, Stree_sitter_create_parser,
+       2, 2, 0,
+       doc: /* Create and return a parser in BUFFER for LANGUAGE.
+The parser is automatically added to BUFFER's
+`tree-sitter-parser-list'.  LANGUAGE should be the language provided
+by a tree-sitter language dynamic module.  */)
+  (Lisp_Object buffer, Lisp_Object language)
+{
+  CHECK_BUFFER(buffer);
+
+  /* LANGUAGE is a USER_PTR that contains the pointer to a TSLanguage
+     struct.  */
+  TSParser *parser = ts_parser_new ();
+  TSLanguage *lang = (XUSER_PTR (language)->p);
+  ts_parser_set_language (parser, lang);
+
+  Lisp_Object lisp_parser
+    = make_ts_parser (XBUFFER(buffer), parser, NULL);
+
+  // FIXME: Is this the correct way to set a buffer-local variable?
+  struct buffer *old_buffer = current_buffer;
+  set_buffer_internal (XBUFFER (buffer));
+
+  Fset (Qtree_sitter_parser_list,
+	Fcons (lisp_parser, Fsymbol_value (Qtree_sitter_parser_list)));
+
+  set_buffer_internal (old_buffer);
+  return lisp_parser;
+}
+
+DEFUN ("tree-sitter-parser-root-node",
+       Ftree_sitter_parser_root_node, Stree_sitter_parser_root_node,
+       1, 1, 0,
+       doc: /* Return the root node of PARSER.  */)
+  (Lisp_Object parser)
+{
+  ts_ensure_parsed(parser);
+  TSNode root_node = ts_tree_root_node (XTS_PARSER (parser)->tree);
+  return make_ts_node (parser, root_node);
+}
 
 DEFUN ("tree-sitter-parse", Ftree_sitter_parse, Stree_sitter_parse,
        2, 2, 0,
-       doc: /* Parse STRING and return a parser object.
+       doc: /* Parse STRING and return the root node.
 LANGUAGE should be the language provided by a tree-sitter language
 dynamic module.  */)
   (Lisp_Object string, Lisp_Object language)
 {
   CHECK_STRING (string);
 
-  /* LANGUAGE is a USER_PTR that contains the pointer to a
-     TSLanguage struct.  */
+  /* LANGUAGE is a USER_PTR that contains the pointer to a TSLanguage
+     struct.  */
   TSParser *parser = ts_parser_new ();
   TSLanguage *lang = (XUSER_PTR (language)->p);
   ts_parser_set_language (parser, lang);
@@ -104,7 +242,7 @@ DEFUN ("tree-sitter-node-string",
 DEFUN ("tree-sitter-node-parent",
        Ftree_sitter_node_parent, Stree_sitter_node_parent, 1, 1, 0,
        doc: /* Return the immediate parent of NODE.
-Return nil if couldn't find any.  */)
+Return nil if we couldn't find any.  */)
   (Lisp_Object node)
 {
   TSNode ts_node = XTS_NODE (node)->node;
@@ -119,7 +257,7 @@ DEFUN ("tree-sitter-node-parent",
 DEFUN ("tree-sitter-node-child",
        Ftree_sitter_node_child, Stree_sitter_node_child, 2, 2, 0,
        doc: /* Return the Nth child of NODE.
-Return nil if couldn't find any.  */)
+Return nil if we couldn't find any.  */)
   (Lisp_Object node, Lisp_Object n)
 {
   CHECK_INTEGER (n);
@@ -138,6 +276,17 @@ DEFUN ("tree-sitter-node-child",
 void
 syms_of_tree_sitter (void)
 {
+  DEFSYM (Qtree_sitter_parser_list, "tree-sitter-parser-list");
+  DEFVAR_LISP ("ts-parser-list", Vtree_sitter_parser_list,
+		     doc: /* A list of tree-sitter parsers.
+// TODO: more doc.
+If you removed a parser from this list, do not put it back in.  */);
+  Vtree_sitter_parser_list = Qnil;
+  Fmake_variable_buffer_local (Qtree_sitter_parser_list);
+
+
+  defsubr (&Stree_sitter_create_parser);
+  defsubr (&Stree_sitter_parser_root_node);
   defsubr (&Stree_sitter_parse);
   defsubr (&Stree_sitter_node_string);
   defsubr (&Stree_sitter_node_parent);
diff --git a/src/tree_sitter.h b/src/tree_sitter.h
index 3c9e03475f..0606f336cc 100644
--- a/src/tree_sitter.h
+++ b/src/tree_sitter.h
@@ -28,6 +28,8 @@ #define EMACS_TREE_SITTER_H
 
 INLINE_HEADER_BEGIN
 
+/* A wrapper for a tree-sitter parser, but also contains a parse tree
+   and other goodies for convenience.  */
 struct Lisp_TS_Parser
 {
   union vectorlike_header header;
@@ -35,8 +37,10 @@ #define EMACS_TREE_SITTER_H
   TSParser *parser;
   TSTree *tree;
   TSInput input;
+  TSInputEdit edit;
 };
 
+/* A wrapper around a tree-sitter node.  */
 struct Lisp_TS_Node
 {
   union vectorlike_header header;
@@ -74,6 +78,12 @@ XTS_NODE (Lisp_Object a)
   return XUNTAG (a, Lisp_Vectorlike, struct Lisp_TS_Node);
 }
 
+void
+ts_before_change (ptrdiff_t charpos, ptrdiff_t lendel);
+
+void
+ts_after_change (ptrdiff_t charpos, ptrdiff_t lendel, ptrdiff_t lenins);
+
 Lisp_Object
 make_ts_parser (struct buffer *buffer, TSParser *parser, TSTree *tree);
 
-- 
2.24.3 (Apple Git-128)


[-- Attachment #3: benchmark.2.json --]
[-- Type: application/json, Size: 1689073 bytes --]

[-- Attachment #4: benchmark.el --]
[-- Type: application/octet-stream, Size: 1134 bytes --]

checkpoint 2 - benchmark.1.json (22M) - open literally

(benchmark-run 10
  (tree-sitter-parser-root-node
   (tree-sitter-create-parser
    (current-buffer) (tree-sitter-json))))

RESULT: stuck, used all my memory (14G and still growing)

(benchmark-run 1
  (tree-sitter-parser-root-node
   (tree-sitter-create-parser
    (current-buffer) (tree-sitter-json))))

17s, 3G memory.

\f
checkpoint 2 - benchmark.2.json (1.6M) - fundamental-mode

(benchmark-run 1
  (tree-sitter-parser-root-node
   (tree-sitter-create-parser
    (current-buffer) (tree-sitter-json))))

(1.039289 0 0.0)

(benchmark-run 1000
  (dotimes (_ 1000)
    (insert
     "1,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,\n"))
  (dotimes (_ 1000)
    (backward-delete-char
     (length
      "1,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,\n"))))

With parser:    (39.302071 8 4.3011029999999995)
Without parser: (33.589416 8 4.405495999999999)

Note: Warning (undo): Buffer ‘benchmark.2.json’ undo info was
27188988 bytes long. The undo info was discarded because it
exceeded `undo-outer-limit'.

[-- Attachment #5: Type: text/plain, Size: 8 bytes --]



Yuan


  reply	other threads:[~2021-07-17  2:05 UTC|newest]

Thread overview: 370+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-14 17:37 How to add pseudo vector types Yuan Fu
2021-07-14 17:44 ` Eli Zaretskii
2021-07-14 17:47 ` Stefan Monnier
2021-07-14 23:48   ` Yuan Fu
2021-07-15  0:26     ` Yuan Fu
2021-07-15  2:48       ` Yuan Fu
2021-07-15  6:39         ` Eli Zaretskii
2021-07-15 13:37           ` Fu Yuan
2021-07-15 14:18             ` Eli Zaretskii
2021-07-15 15:17               ` Yuan Fu
2021-07-15 15:50                 ` Eli Zaretskii
2021-07-15 16:19                   ` Yuan Fu
2021-07-15 16:26                     ` Yuan Fu
2021-07-15 16:50                       ` Eli Zaretskii
2021-07-15 16:48                     ` Eli Zaretskii
2021-07-15 18:23                       ` Yuan Fu
2021-07-16  7:30                         ` Eli Zaretskii
2021-07-16 14:27                           ` Yuan Fu
2021-07-16 14:33                             ` Stefan Monnier
2021-07-16 14:53                               ` Yuan Fu
2021-07-16 15:27                             ` Eli Zaretskii
2021-07-16 15:51                               ` Yuan Fu
2021-07-17  2:05                                 ` Yuan Fu [this message]
2021-07-17  2:23                                   ` Clément Pit-Claudel
2021-07-17  3:12                                     ` Yuan Fu
2021-07-17  7:18                                       ` Eli Zaretskii
2021-07-17  7:16                                     ` Eli Zaretskii
2021-07-20 20:36                                       ` Clément Pit-Claudel
2021-07-21 11:26                                         ` Eli Zaretskii
2021-07-21 13:38                                           ` Clément Pit-Claudel
2021-07-21 13:51                                             ` Eli Zaretskii
2021-07-22  4:59                                               ` Clément Pit-Claudel
2021-07-22  6:38                                                 ` Eli Zaretskii
2021-07-21 16:29                                         ` Stephen Leake
2021-07-21 16:54                                           ` Clément Pit-Claudel
2021-07-21 19:43                                             ` Eli Zaretskii
2021-07-24  2:57                                               ` Stephen Leake
2021-07-24  3:39                                                 ` Óscar Fuentes
2021-07-24  7:34                                                   ` Eli Zaretskii
2021-07-25 16:49                                                   ` Stephen Leake
2021-07-24  7:06                                                 ` Eli Zaretskii
2021-07-25 17:48                                                   ` Stephen Leake
2021-07-24  3:55                                               ` Clément Pit-Claudel
2021-07-21 21:54                                             ` Stephen Leake
2021-07-22  4:40                                               ` Clément Pit-Claudel
2021-07-17 17:30                                     ` Stefan Monnier
2021-07-17 17:54                                       ` Eli Zaretskii
2021-07-24 14:08                                         ` Stefan Monnier
2021-07-24 14:32                                           ` Eli Zaretskii
2021-07-24 15:10                                             ` Stefan Monnier
2021-07-24 15:51                                               ` Eli Zaretskii
2021-07-19 15:16                                       ` Yuan Fu
2021-07-22  3:10                                         ` Yuan Fu
2021-07-22  8:23                                           ` Eli Zaretskii
2021-07-22 13:47                                             ` Yuan Fu
2021-07-22 14:11                                               ` Óscar Fuentes
2021-07-22 17:09                                                 ` Eli Zaretskii
2021-07-22 19:29                                                   ` Óscar Fuentes
2021-07-23  5:21                                                     ` Eli Zaretskii
2021-07-24  9:38                                                     ` Stephen Leake
2021-07-22 17:00                                               ` Eli Zaretskii
2021-07-22 17:47                                                 ` Yuan Fu
2021-07-22 19:05                                                   ` Eli Zaretskii
2021-07-23 13:25                                                     ` Yuan Fu
2021-07-23 19:10                                                       ` Eli Zaretskii
2021-07-23 20:01                                                         ` Perry E. Metzger
2021-07-24  5:52                                                           ` Eli Zaretskii
2021-07-23 20:22                                                         ` Yuan Fu
2021-07-24  6:00                                                           ` Eli Zaretskii
2021-07-25 18:01                                                             ` Stephen Leake
2021-07-25 19:09                                                               ` Eli Zaretskii
2021-07-26  5:10                                                                 ` Stephen Leake
2021-07-26 12:56                                                                   ` Eli Zaretskii
2021-07-24 15:04                                                           ` Yuan Fu
2021-07-24 15:48                                                             ` Eli Zaretskii
2021-07-24 17:14                                                               ` Yuan Fu
2021-07-24 17:20                                                                 ` Eli Zaretskii
2021-07-24 17:40                                                                   ` Yuan Fu
2021-07-24 17:46                                                                     ` Eli Zaretskii
2021-07-24 18:06                                                                       ` Yuan Fu
2021-07-24 18:21                                                                         ` Eli Zaretskii
2021-07-24 18:55                                                                           ` Stefan Monnier
2021-07-25 18:44                                                                           ` Stephen Leake
2021-07-26 14:38                                                               ` Perry E. Metzger
2021-07-24 16:14                                                             ` Eli Zaretskii
2021-07-24 17:32                                                               ` Yuan Fu
2021-07-24 17:42                                                                 ` Eli Zaretskii
2021-07-23 14:07                                                 ` Stefan Monnier
2021-07-23 14:45                                                   ` Yuan Fu
2021-07-23 19:13                                                   ` Eli Zaretskii
2021-07-23 20:28                                                     ` Stefan Monnier
2021-07-24  6:02                                                       ` Eli Zaretskii
2021-07-24 14:19                                                         ` Stefan Monnier
2021-07-24  9:42                                                 ` Stephen Leake
2021-07-24 11:22                                                   ` Eli Zaretskii
2021-07-25 18:21                                                     ` Stephen Leake
2021-07-25 19:03                                                       ` Eli Zaretskii
2021-07-26 16:40                                                         ` Yuan Fu
2021-07-26 16:49                                                           ` Eli Zaretskii
2021-07-26 17:09                                                             ` Yuan Fu
2021-07-26 18:55                                                               ` Eli Zaretskii
2021-07-26 19:06                                                                 ` Yuan Fu
2021-07-26 19:19                                                                   ` Perry E. Metzger
2021-07-26 19:31                                                                     ` Eli Zaretskii
2021-07-26 19:20                                                                   ` Eli Zaretskii
2021-07-26 19:45                                                                     ` Yuan Fu
2021-07-26 19:57                                                                       ` Dmitry Gutov
2021-07-27  6:13                                                               ` Stephen Leake
2021-07-27 14:56                                                                 ` Yuan Fu
2021-07-28  3:40                                                                   ` Stephen Leake
2021-07-28 16:36                                                                     ` Yuan Fu
2021-07-28 16:41                                                                       ` Eli Zaretskii
2021-07-29 22:58                                                                         ` Stephen Leake
2021-07-30  6:00                                                                           ` Eli Zaretskii
2021-07-28 16:43                                                                       ` Eli Zaretskii
2021-07-28 17:47                                                                         ` Yuan Fu
2021-07-28 17:54                                                                           ` Eli Zaretskii
2021-07-28 18:46                                                                             ` Yuan Fu
2021-07-28 19:00                                                                               ` Eli Zaretskii
2021-07-29 14:35                                                                                 ` Yuan Fu
2021-07-29 15:28                                                                                   ` Eli Zaretskii
2021-07-29 15:57                                                                                     ` Yuan Fu
2021-07-29 16:21                                                                                       ` Eli Zaretskii
2021-07-29 16:59                                                                                         ` Yuan Fu
2021-07-29 17:38                                                                                           ` Eli Zaretskii
2021-07-29 17:55                                                                                             ` Yuan Fu
2021-07-29 18:37                                                                                               ` Eli Zaretskii
2021-07-29 18:57                                                                                                 ` Yuan Fu
2021-07-30  6:47                                                                                                   ` Eli Zaretskii
2021-07-30 14:17                                                                                                     ` Yuan Fu
2021-08-03 10:24                                                                                                       ` Fu Yuan
2021-08-03 11:42                                                                                                         ` Eli Zaretskii
2021-08-03 11:53                                                                                                           ` Fu Yuan
2021-08-03 12:21                                                                                                             ` Eli Zaretskii
2021-08-03 12:50                                                                                                               ` Fu Yuan
2021-08-03 13:03                                                                                                                 ` Eli Zaretskii
2021-08-03 13:08                                                                                                                   ` Fu Yuan
2021-08-03 11:47                                                                                                       ` Eli Zaretskii
2021-08-03 12:00                                                                                                         ` Fu Yuan
2021-08-03 12:24                                                                                                           ` Eli Zaretskii
2021-08-03 13:00                                                                                                             ` Fu Yuan
2021-08-03 13:28                                                                                                             ` Stefan Monnier
2021-08-03 13:34                                                                                                               ` Eli Zaretskii
2021-08-06  3:22                                                                                                                 ` Yuan Fu
2021-08-06  6:37                                                                                                                   ` Eli Zaretskii
2021-08-07  5:31                                                                                                                     ` Tree-sitter api (Was: Re: How to add pseudo vector types) Fu Yuan
2021-08-07  6:26                                                                                                                       ` Eli Zaretskii
2021-08-07 15:47                                                                                                                       ` Tree-sitter api Stefan Monnier
2021-08-07 18:40                                                                                                                         ` Theodor Thornhill
2021-08-07 19:53                                                                                                                           ` Stefan Monnier
2021-08-17  6:18                                                                                                                             ` Yuan Fu
2021-08-18 18:27                                                                                                                               ` Stephen Leake
2021-08-18 21:30                                                                                                                                 ` Yuan Fu
2021-08-20  0:12                                                                                                                                   ` [SPAM UNSURE] " Stephen Leake
2021-08-23  6:51                                                                                                                                 ` Yuan Fu
2021-08-24 14:59                                                                                                                                   ` [SPAM UNSURE] " Stephen Leake
2021-08-27  5:18                                                                                                                                     ` [SPAM UNSURE] " Yuan Fu
2021-08-31  0:48                                                                                                                                       ` Stephen Leake
2021-08-24 22:51                                                                                                                                   ` Stefan Monnier
2021-08-22  2:43                                                                                                                               ` Yuan Fu
2021-08-22  3:46                                                                                                                                 ` Yuan Fu
2021-08-22  6:16                                                                                                                                   ` Eli Zaretskii
2021-08-22  6:15                                                                                                                                 ` Eli Zaretskii
2021-08-25  0:21                                                                                                                               ` Stefan Monnier
2021-08-27  5:45                                                                                                                                 ` Yuan Fu
2021-09-03 19:16                                                                                                                                   ` Theodor Thornhill
     [not found]                                                                                                                                     ` <AF64EB2C-CCEC-4C98-8FE3-37697BEC9098@gmail.com>
2021-09-04 12:49                                                                                                                                       ` Tuấn-Anh Nguyễn
2021-09-04 13:04                                                                                                                                         ` Eli Zaretskii
2021-09-04 14:49                                                                                                                                           ` Tuấn-Anh Nguyễn
2021-09-04 15:00                                                                                                                                             ` Eli Zaretskii
2021-09-05 16:34                                                                                                                                               ` Tuấn-Anh Nguyễn
2021-09-05 16:45                                                                                                                                                 ` Eli Zaretskii
2021-09-04 15:31                                                                                                                                         ` Yuan Fu
2021-09-05 16:45                                                                                                                                           ` Tuấn-Anh Nguyễn
2021-09-05 20:19                                                                                                                                             ` Yuan Fu
2021-09-06  0:03                                                                                                                                               ` Tuấn-Anh Nguyễn
2021-09-06  0:23                                                                                                                                                 ` Yuan Fu
2021-09-06  5:33                                                                                                                                                   ` Eli Zaretskii
2021-09-07 15:38                                                                                                                                                     ` Tuấn-Anh Nguyễn
2021-09-07 16:16                                                                                                                                                       ` Eli Zaretskii
2021-09-08  3:06                                                                                                                                                         ` Yuan Fu
2021-09-10  2:06                                                                                                                                                           ` Yuan Fu
2021-09-10  6:32                                                                                                                                                             ` Eli Zaretskii
2021-09-10 19:57                                                                                                                                                               ` Yuan Fu
2021-09-11  3:41                                                                                                                                                                 ` Tuấn-Anh Nguyễn
2021-09-11  4:11                                                                                                                                                                   ` Yuan Fu
2021-09-11  7:23                                                                                                                                                                     ` Tuấn-Anh Nguyễn
2021-09-11 19:02                                                                                                                                                                       ` Yuan Fu
2021-09-11  5:51                                                                                                                                                                 ` Eli Zaretskii
2021-09-11 19:00                                                                                                                                                                   ` Yuan Fu
2021-09-11 19:14                                                                                                                                                                     ` Eli Zaretskii
2021-09-11 19:17                                                                                                                                                                       ` Eli Zaretskii
2021-09-11 20:29                                                                                                                                                                         ` Yuan Fu
2021-09-12  5:39                                                                                                                                                                           ` Eli Zaretskii
2021-09-13  4:15                                                                                                                                                                             ` Yuan Fu
2021-09-13 11:47                                                                                                                                                                               ` Eli Zaretskii
2021-09-13 18:01                                                                                                                                                                                 ` Yuan Fu
2021-09-13 18:07                                                                                                                                                                                   ` Eli Zaretskii
2021-09-13 18:29                                                                                                                                                                                     ` Yuan Fu
2021-09-13 18:37                                                                                                                                                                                       ` Eli Zaretskii
2021-09-14  0:13                                                                                                                                                                                         ` Yuan Fu
2021-09-14  2:29                                                                                                                                                                                           ` Eli Zaretskii
2021-09-14  4:27                                                                                                                                                                                             ` Yuan Fu
2021-09-14 11:29                                                                                                                                                                                               ` Eli Zaretskii
2021-09-15  0:50                                                                                                                                                                                                 ` Yuan Fu
2021-09-15  6:15                                                                                                                                                                                                   ` Eli Zaretskii
2021-09-15 15:56                                                                                                                                                                                                     ` Yuan Fu
2021-09-15 16:02                                                                                                                                                                                                       ` Eli Zaretskii
2021-09-15 18:19                                                                                                                                                                                                         ` Stefan Monnier
2021-09-15 18:48                                                                                                                                                                                                           ` Eli Zaretskii
2021-09-16 21:46                                                                                                                                                                                                             ` Yuan Fu
2021-09-17  6:06                                                                                                                                                                                                               ` Eli Zaretskii
2021-09-17  6:56                                                                                                                                                                                                                 ` Yuan Fu
2021-09-17  7:38                                                                                                                                                                                                                   ` Eli Zaretskii
2021-09-17 20:30                                                                                                                                                                                                                     ` Yuan Fu
2021-09-18  2:22                                                                                                                                                                                                                       ` Tuấn-Anh Nguyễn
2021-09-18  6:38                                                                                                                                                                                                                         ` Yuan Fu
2021-09-18 12:33                                                                                                                                                                                                                     ` Stephen Leake
2021-09-20 16:48                                                                                                                                                                                                                       ` Yuan Fu
2021-09-20 18:48                                                                                                                                                                                                                         ` Eli Zaretskii
2021-09-20 19:09                                                                                                                                                                                                                           ` John Yates
2021-09-21 22:20                                                                                                                                                                                                                             ` Yuan Fu
2021-09-27  4:42                                                                                                                                                                                                                               ` Yuan Fu
2021-09-27  5:37                                                                                                                                                                                                                                 ` Eli Zaretskii
2021-09-27 19:17                                                                                                                                                                                                                                 ` Stefan Monnier
2021-09-28  5:33                                                                                                                                                                                                                                   ` Yuan Fu
2021-09-28  7:02                                                                                                                                                                                                                                     ` Eli Zaretskii
2021-09-28 16:10                                                                                                                                                                                                                                       ` Yuan Fu
2021-09-28 16:28                                                                                                                                                                                                                                         ` Eli Zaretskii
2021-12-13  6:54                                                                                                                                                                                                                                           ` Yuan Fu
2021-12-13 12:56                                                                                                                                                                                                                                             ` Eli Zaretskii
2021-12-14  7:19                                                                                                                                                                                                                                               ` Yuan Fu
2021-12-17  0:14                                                                                                                                                                                                                                                 ` Yuan Fu
2021-12-17  7:15                                                                                                                                                                                                                                                   ` Eli Zaretskii
2021-12-18 14:45                                                                                                                                                                                                                                               ` Philipp
2021-12-18 14:57                                                                                                                                                                                                                                                 ` Eli Zaretskii
2021-12-19  2:51                                                                                                                                                                                                                                                   ` Yuan Fu
2021-12-19  7:11                                                                                                                                                                                                                                                     ` Eli Zaretskii
2021-12-19  7:52                                                                                                                                                                                                                                                       ` Yuan Fu
2021-12-24 10:04                                                                                                                                                                                                                                                         ` Yoav Marco
2021-12-24 10:21                                                                                                                                                                                                                                                           ` Yoav Marco
2021-12-25  8:31                                                                                                                                                                                                                                                             ` Yuan Fu
2021-12-25 10:13                                                                                                                                                                                                                                                               ` Eli Zaretskii
2021-12-26  9:50                                                                                                                                                                                                                                                                 ` Yuan Fu
2021-12-26 10:23                                                                                                                                                                                                                                                                   ` Eli Zaretskii
2021-12-30  0:59                                                                                                                                                                                                                                                                     ` Yuan Fu
2021-12-30  6:35                                                                                                                                                                                                                                                                       ` Eli Zaretskii
2022-01-04 18:31                                                                                                                                                                                                                                                                         ` Yuan Fu
2022-03-13  6:22                                                                                                                                                                                                                                                                           ` Yuan Fu
2022-03-13  6:25                                                                                                                                                                                                                                                                             ` Yuan Fu
2022-03-13  7:13                                                                                                                                                                                                                                                                               ` Po Lu
2022-03-14  0:23                                                                                                                                                                                                                                                                                 ` Yuan Fu
2022-03-14  1:10                                                                                                                                                                                                                                                                                   ` Po Lu
2022-03-14  3:31                                                                                                                                                                                                                                                                                   ` Eli Zaretskii
2022-03-14  3:43                                                                                                                                                                                                                                                                                     ` Yuan Fu
2022-03-29 16:40                                                                                                                                                                                                                                                                               ` Eli Zaretskii
2022-03-30  0:35                                                                                                                                                                                                                                                                                 ` Po Lu
2022-03-30  0:49                                                                                                                                                                                                                                                                                 ` Yuan Fu
2022-03-30  0:51                                                                                                                                                                                                                                                                                   ` Yuan Fu
2022-03-30  2:13                                                                                                                                                                                                                                                                                   ` Po Lu
2022-03-30  3:01                                                                                                                                                                                                                                                                                     ` Yuan Fu
2022-03-30  3:10                                                                                                                                                                                                                                                                                       ` Vitaly Ankh
2022-03-30  3:24                                                                                                                                                                                                                                                                                         ` Yuan Fu
2022-03-30  3:39                                                                                                                                                                                                                                                                                       ` Po Lu
2022-03-30  4:29                                                                                                                                                                                                                                                                                         ` Yuan Fu
2022-03-30  5:19                                                                                                                                                                                                                                                                                           ` Phil Sainty
2022-03-30  5:39                                                                                                                                                                                                                                                                                             ` Phil Sainty
2022-03-30 13:46                                                                                                                                                                                                                                                                                         ` João Távora
2022-03-30  2:31                                                                                                                                                                                                                                                                                   ` Eli Zaretskii
2022-03-30  2:59                                                                                                                                                                                                                                                                                     ` Yuan Fu
2022-03-30  9:04                                                                                                                                                                                                                                                                                       ` Lars Ingebrigtsen
2022-03-30 11:48                                                                                                                                                                                                                                                                                         ` Daniel Martín
2022-03-30 15:00                                                                                                                                                                                                                                                                                           ` [External] : " Drew Adams
2022-03-31  4:27                                                                                                                                                                                                                                                                                       ` Richard Stallman
2022-03-31  5:36                                                                                                                                                                                                                                                                                         ` Eli Zaretskii
2022-03-31 11:13                                                                                                                                                                                                                                                                                           ` Lars Ingebrigtsen
2022-03-31 12:46                                                                                                                                                                                                                                                                                             ` John Yates
2022-03-31 17:37                                                                                                                                                                                                                                                                                               ` Phil Sainty
2022-04-01  1:56                                                                                                                                                                                                                                                                                                 ` Po Lu
2022-04-01  6:36                                                                                                                                                                                                                                                                                                   ` Eli Zaretskii
2022-04-01  7:56                                                                                                                                                                                                                                                                                                     ` Po Lu
2022-04-01 10:45                                                                                                                                                                                                                                                                                                       ` Eli Zaretskii
2022-03-31 17:58                                                                                                                                                                                                                                                                                               ` Stefan Monnier
2022-04-04 10:29                                                                                                                                                                                                                                                                                                 ` Jostein Kjønigsen
2022-03-31 16:23                                                                                                                                                                                                                                                                                           ` [External] : " Drew Adams
2022-03-31 19:33                                                                                                                                                                                                                                                                                           ` Filipp Gunbin
2022-03-31 16:35                                                                                                                                                                                                                                                                                 ` Yuan Fu
2022-03-31 23:00                                                                                                                                                                                                                                                                                 ` Yuan Fu
2022-03-31 23:53                                                                                                                                                                                                                                                                                   ` Yuan Fu
2022-04-01  6:20                                                                                                                                                                                                                                                                                   ` Eli Zaretskii
2022-04-01 16:48                                                                                                                                                                                                                                                                                     ` Yuan Fu
2022-04-01 17:59                                                                                                                                                                                                                                                                                       ` Eli Zaretskii
2022-04-02  6:26                                                                                                                                                                                                                                                                                         ` Yuan Fu
2022-04-04  7:38                                                                                                                                                                                                                                                                                           ` Robert Pluim
2022-04-04 20:41                                                                                                                                                                                                                                                                                             ` Yuan Fu
2022-04-20 20:14                                                                                                                                                                                                                                                                                               ` Theodor Thornhill
2022-04-21  1:36                                                                                                                                                                                                                                                                                                 ` Yuan Fu
2022-04-21  5:48                                                                                                                                                                                                                                                                                                   ` Eli Zaretskii
2022-04-21 11:37                                                                                                                                                                                                                                                                                                     ` Lars Ingebrigtsen
2022-04-21 12:10                                                                                                                                                                                                                                                                                                       ` Theodor Thornhill
2022-04-22  2:54                                                                                                                                                                                                                                                                                                         ` Yuan Fu
2022-04-22  4:58                                                                                                                                                                                                                                                                                                           ` Theodor Thornhill
2022-04-22  7:08                                                                                                                                                                                                                                                                                                             ` Yuan Fu
2022-04-22  8:02                                                                                                                                                                                                                                                                                                               ` Theodor Thornhill
2022-04-22 11:41                                                                                                                                                                                                                                                                                                                 ` Theodor Thornhill
2021-12-18 13:39                                                                                                                                                                                                                                             ` Daniel Martín
2021-12-19  2:48                                                                                                                                                                                                                                               ` Yuan Fu
2021-09-17 12:11                                                                                                                                                                                                                   ` Tuấn-Anh Nguyễn
2021-09-17 13:14                                                                                                                                                                                                                     ` Stefan Monnier
2021-09-17 13:39                                                                                                                                                                                                                       ` Tuấn-Anh Nguyễn
2021-09-17 17:18                                                                                                                                                                                                                         ` Stefan Monnier
2021-09-18  2:16                                                                                                                                                                                                                           ` Tuấn-Anh Nguyễn
2021-09-17 12:23                                                                                                                                                                                                                 ` Stefan Monnier
2021-09-17 13:03                                                                                                                                                                                                                   ` Tuấn-Anh Nguyễn
2021-09-04 15:14                                                                                                                                       ` Tuấn-Anh Nguyễn
2021-09-04 15:33                                                                                                                                         ` Eli Zaretskii
2021-09-05 16:48                                                                                                                                           ` Tuấn-Anh Nguyễn
2021-09-04 15:39                                                                                                                                         ` Yuan Fu
2021-09-05 21:15                                                                                                                                       ` Theodor Thornhill
2021-09-05 23:58                                                                                                                                         ` Yuan Fu
2021-08-08 22:56                                                                                                                         ` Yuan Fu
2021-08-08 23:24                                                                                                                           ` Stefan Monnier
2021-08-09  0:06                                                                                                                             ` Yuan Fu
2021-07-29 23:06                                                                               ` How to add pseudo vector types Stephen Leake
2021-07-30  0:35                                                                               ` Richard Stallman
2021-07-30  0:46                                                                                 ` Alexandre Garreau
2021-07-30  6:35                                                                                 ` Eli Zaretskii
2021-07-29 23:01                                                                             ` Stephen Leake
2021-07-26 18:32                                                             ` chad
2021-07-26 18:44                                                               ` Perry E. Metzger
2021-07-26 19:13                                                                 ` Eli Zaretskii
2021-07-26 19:09                                                               ` Eli Zaretskii
2021-07-26 19:48                                                                 ` chad
2021-07-26 20:05                                                                   ` Óscar Fuentes
2021-07-26 21:30                                                                     ` Clément Pit-Claudel
2021-07-26 21:46                                                                       ` Óscar Fuentes
2021-07-27 14:02                                                                     ` Eli Zaretskii
2021-07-27 13:59                                                                   ` Eli Zaretskii
2021-07-26 23:40                                                           ` Ergus
2021-07-27 14:49                                                             ` Yuan Fu
2021-07-27 16:50                                                               ` Ergus
2021-07-27 16:59                                                                 ` Eli Zaretskii
2021-07-28  3:45                                                                   ` Stephen Leake
2021-07-24  9:33                                               ` Stephen Leake
2021-07-24 22:54                                                 ` Dmitry Gutov
2021-07-20 16:32                                       ` Stephen Leake
2021-07-20 16:48                                         ` Eli Zaretskii
2021-07-20 17:38                                           ` Stefan Monnier
2021-07-20 17:36                                         ` Stefan Monnier
2021-07-20 18:05                                           ` Clément Pit-Claudel
2021-07-21 16:02                                           ` Stephen Leake
2021-07-21 17:16                                             ` Stefan Monnier
2021-07-20 18:04                                         ` Clément Pit-Claudel
2021-07-20 18:24                                           ` Eli Zaretskii
2021-07-21 16:54                                           ` [SPAM UNSURE] " Stephen Leake
2021-07-21 17:12                                             ` Clément Pit-Claudel
2021-07-21 19:49                                               ` Eli Zaretskii
2021-07-22  5:09                                                 ` Clément Pit-Claudel
2021-07-22  6:44                                                   ` Eli Zaretskii
2021-07-22 14:43                                                     ` Clément Pit-Claudel
2021-07-17  6:56                                   ` Eli Zaretskii
2021-07-20 16:28                           ` Stephen Leake
2021-07-20 16:27                         ` Stephen Leake
2021-07-20 16:25                       ` Stephen Leake
2021-07-20 16:45                         ` Eli Zaretskii
2021-07-21 15:49                           ` Stephen Leake
2021-07-21 19:37                             ` Eli Zaretskii
2021-07-24  2:00                               ` Stephen Leake
2021-07-24  6:51                                 ` Eli Zaretskii
2021-07-25 16:16                                   ` Stephen Leake
     [not found] <casouri/emacs/issues/5@github.com>

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=258CB68D-1CC1-42C8-BDCD-2A8A8099B783@gmail.com \
    --to=casouri@gmail.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).