summaryrefslogblamecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--questions--tuan-anh-nguyen-autogen.sbv
blob: 866a383f8c5977f39c87a6fb804a93e5cfd46a1d (plain) (tree)
1
2
3
4
5
6
7
8






                                      
                      




                       
                                    




                              
                                        

                       
                                        










                                        
                                      















































































                                        
                                 














































                                        
                                      



















                                        
                     

                       
                                        




                         
                 

                       
                                        

























                                        
                                    









































































                                        
                                       




























                                     
                                      









































































                                        
                                       










                                 
                                       













                                     
                                        







                                  
                                      








































                                       
                                   








































                                        
                                      

                       
                          































                                        
                                    











































                                       
                                  












































































                                       
                             


































                                      
                                     































                                       
                                        










                                
                                   













                                      
                                    











































                                        
                             











































                                        
                         



















                                      
                                       













                                    
                           





































                                       
                                  

                       
                                     




                       
                                       










                                       
                          













                                        
                                       




                       
                                     

























                                     
                                       

                       
                 
















                                     
                                        








































                                        
                                    




                              
                                



                                   
0:00:00.960,0:00:05.600
uh okay so the first question is is uh

0:00:03.679,0:00:08.000
do you think that this package can be

0:00:05.600,0:00:11.760
included into Emacs or

0:00:08.000,0:00:11.760
uh empire uh

0:00:12.320,0:00:18.560
I think uh it most definitely can is

0:00:15.360,0:00:21.760
just a matter of paperwork but

0:00:18.560,0:00:24.480
the reason I initially wanted to make it

0:00:21.760,0:00:25.039
like a central package is that so that I

0:00:24.480,0:00:28.720
can

0:00:25.039,0:00:31.920
experiment with it more

0:00:28.720,0:00:34.320
like have more freedom to experiment but

0:00:31.920,0:00:35.680
eventually I think is a good candidate

0:00:34.320,0:00:37.920
for inclusion into

0:00:35.680,0:00:37.920
core

0:00:38.800,0:00:42.640
and because because currently not in

0:00:41.200,0:00:44.480
corey mass there are a couple of

0:00:42.640,0:00:47.840
problems with it

0:00:44.480,0:00:50.960
mostly in terms of performance

0:00:47.840,0:00:53.280
for example like anytime we want to

0:00:50.960,0:00:54.160
access the text in a buffer we need to

0:00:53.280,0:00:57.360
make

0:00:54.160,0:01:00.480
a copy of the text into a string

0:00:57.360,0:01:03.520
and then right after reading from that

0:01:00.480,0:01:05.280
text we need to free it right away and

0:01:03.520,0:01:09.040
that results in a lot of garbage

0:01:05.280,0:01:11.920
collection so it would be better

0:01:09.040,0:01:12.240
either the treasure could be included in

0:01:11.920,0:01:15.680
core

0:01:12.240,0:01:16.799
imax or dynamic dynamic model support

0:01:15.680,0:01:19.439
can be

0:01:16.799,0:01:21.920
augmented with direct text access

0:01:19.439,0:01:21.920
somehow

0:01:24.080,0:01:27.200
so the second question is will release

0:01:26.400,0:01:30.320
performance

0:01:27.200,0:01:33.040
be more competitive with cce max

0:01:30.320,0:01:35.520
enough so electricity in english is more

0:01:33.040,0:01:35.520
attractive

0:01:35.670,0:01:43.439
[Music]

0:01:38.240,0:01:45.840
I think it's possible but uh yeah

0:01:43.439,0:01:46.799
not sure about the amount of effort it

0:01:45.840,0:01:52.000
can be

0:01:46.799,0:01:52.000
multi-years effort and one thing that

0:01:52.960,0:02:00.640
even though gce max can make uh

0:01:56.479,0:02:00.640
it is fast enough there's

0:02:00.719,0:02:05.280
there's one thing that it uh cannot have

0:02:03.119,0:02:09.679
which is that because it's the lisp

0:02:05.280,0:02:12.480
it needs the garage collector so

0:02:09.679,0:02:14.000
we may experiment experience some kind

0:02:12.480,0:02:17.360
of

0:02:14.000,0:02:19.920
gcc post if we use live whereas the

0:02:17.360,0:02:24.720
currently transistor is written in c

0:02:19.920,0:02:24.720
so there's no such latency

0:02:28.400,0:02:32.400
the next question is do you think three

0:02:31.040,0:02:36.080
sister would be useful

0:02:32.400,0:02:38.319
for all buffers I can imagine it being

0:02:36.080,0:02:39.599
used to keep a post ast about an arc

0:02:38.319,0:02:42.560
buffer

0:02:39.599,0:02:43.920
light off element and update it in real

0:02:42.560,0:02:46.239
time

0:02:43.920,0:02:47.760
yeah actually this is a very interesting

0:02:46.239,0:02:50.800
idea

0:02:47.760,0:02:53.760
I saw someone started

0:02:50.800,0:02:55.120
resistor grammar for all already I don't

0:02:53.760,0:02:58.159
have a link right now but

0:02:55.120,0:03:01.040
I can look for it

0:02:58.159,0:03:01.680
I'll try looking for it and put the link

0:03:01.040,0:03:05.840
in

0:03:01.680,0:03:05.840
here later

0:03:09.599,0:03:15.519
yeah yes someone has written here the uh

0:03:13.280,0:03:17.040
and the biggest problem with uh right

0:03:15.519,0:03:20.560
now is that it doesn't have

0:03:17.040,0:03:20.560
formal grammar so

0:03:21.360,0:03:24.400
so the effort

0:03:22.380,0:03:27.120
[Applause]

0:03:24.400,0:03:28.799
be quite big I think but but once we

0:03:27.120,0:03:31.519
have that because the

0:03:28.799,0:03:33.840
tree sitter can be run on the web as

0:03:31.519,0:03:33.840
well

0:03:34.239,0:03:38.080
we can on the web and in many other

0:03:37.440,0:03:40.720
places

0:03:38.080,0:03:41.840
if we have a grammar for a traditional

0:03:40.720,0:03:45.680
grammar for all

0:03:41.840,0:03:49.680
we can bring off more

0:03:45.680,0:03:52.000
like everywhere that's a very cool

0:03:49.680,0:03:52.000
thought

0:03:56.000,0:04:00.480
next one is could this be used with

0:03:58.080,0:04:03.200
packages like smart parents that aim to

0:04:00.480,0:04:07.120
bring structural editing to

0:04:03.200,0:04:11.360
non-s expression based languages

0:04:07.120,0:04:14.720
yes that is actually one of the

0:04:11.360,0:04:17.280
intended use cases initially

0:04:14.720,0:04:18.880
it's definitely possible but it's just

0:04:17.280,0:04:29.840
that no one has

0:04:18.880,0:04:29.840
only started writing the integration yet

0:04:37.199,0:04:41.919
and next one

0:04:40.639,0:04:45.040
could you show the source that was

0:04:41.919,0:04:48.479
matched by the parser in the debug view

0:04:45.040,0:04:53.440
in addition to the grammar part matched

0:04:48.479,0:04:53.440
uh yeah that's actually um

0:04:54.960,0:04:59.280
on my to-do list but I haven't had time

0:04:57.759,0:05:02.560
for it yet

0:04:59.280,0:05:06.560
so uh if you go to the treesita

0:05:02.560,0:05:08.800
website it also has an

0:05:06.560,0:05:11.840
online playground where you can input

0:05:08.800,0:05:11.840
the code and see the

0:05:12.000,0:05:16.000
parse tree in real time and it's

0:05:14.400,0:05:19.360
actually

0:05:16.000,0:05:22.840
a lot more fancy than what we have in

0:05:19.360,0:05:25.919
imax currently so

0:05:22.840,0:05:27.120
yeah I just don't have time for it yes

0:05:25.919,0:05:30.240
so

0:05:27.120,0:05:30.240
some help here would be

0:05:30.320,0:05:41.730
very appreciated

0:05:38.700,0:05:41.730
[Music]

0:05:49.919,0:05:54.240
the next question is will it ever be

0:05:52.000,0:05:55.280
possible to write resetter grammars in a

0:05:54.240,0:05:59.520
lisp

0:05:55.280,0:05:59.520
or will javascript be required

0:06:00.560,0:06:05.280
yeah that is already answered in the

0:06:02.800,0:06:07.600
part so the

0:06:05.280,0:06:08.639
the transcript is actually just used as

0:06:07.600,0:06:12.160
a sort of

0:06:08.639,0:06:14.639
preprocessor so the

0:06:12.160,0:06:15.680
python generator actually works on the

0:06:14.639,0:06:19.280
on a json

0:06:15.680,0:06:20.240
structure so uh it's definitely possible

0:06:19.280,0:06:24.240
to replace

0:06:20.240,0:06:24.240
javascript with lists for this

0:06:29.039,0:06:32.160
how extensive will the compatibility

0:06:31.280,0:06:35.360
between

0:06:32.160,0:06:35.840
highlighting grammars for e-max and

0:06:35.360,0:06:41.039
those

0:06:35.840,0:06:41.039
for veeam nail view

0:06:44.560,0:06:51.680
so so right now the

0:06:48.720,0:06:52.000
nail vim and Emacs used a different set

0:06:51.680,0:06:55.440
of

0:06:52.000,0:06:59.520
the highlighting queries and

0:06:55.440,0:07:03.039
item probably uses another set of

0:06:59.520,0:07:04.960
patterns as well I think it makes sense

0:07:03.039,0:07:07.680
because

0:07:04.960,0:07:08.479
each editor has its own like existing

0:07:07.680,0:07:11.919
conventions

0:07:08.479,0:07:15.599
for syntax highlighting so

0:07:11.919,0:07:18.560
at least in the beginning I don't expect

0:07:15.599,0:07:21.520
there is any compatibility between

0:07:18.560,0:07:21.520
different editors

0:07:21.599,0:07:26.639
but I think in the long run it will be

0:07:27.280,0:07:31.360
would it better if there's some kind of

0:07:29.520,0:07:34.880
effort to

0:07:31.360,0:07:37.440
unify the at least provide the

0:07:34.880,0:07:39.759
most common patterns that should work

0:07:37.440,0:07:39.759
across

0:07:42.840,0:07:45.840
editors

0:07:51.759,0:07:55.280
next one is could there be a

0:07:53.520,0:07:57.919
standardized approach

0:07:55.280,0:08:00.319
to coding automatic refactoring in the

0:07:57.919,0:08:00.319
future

0:08:01.039,0:08:04.160
so that whichever language mode you're

0:08:02.639,0:08:12.960
using you could see many

0:08:04.160,0:08:16.400
available refactoring operations

0:08:12.960,0:08:18.639
I'm not sure about this because the

0:08:16.400,0:08:18.639
like

0:08:19.919,0:08:23.840
most of uh refactoring operations are

0:08:22.240,0:08:26.960
actually very

0:08:23.840,0:08:28.720
like highly specific to a language or at

0:08:26.960,0:08:32.800
least to class of

0:08:28.720,0:08:32.800
class of languages so

0:08:33.599,0:08:40.719
so so maybe it's not like uh one single

0:08:37.839,0:08:41.519
approach for all the languages but maybe

0:08:40.719,0:08:43.760
uh

0:08:41.519,0:08:44.959
one for object-oriented oriented

0:08:43.760,0:08:49.920
languages

0:08:44.959,0:08:49.920
one for lisp like language for example

0:08:50.160,0:08:55.839
maybe one for javascript and typestream

0:09:02.959,0:09:07.519
next question is uh I'm completely new

0:09:05.360,0:09:10.160
to trisita how do I use it

0:09:07.519,0:09:11.519
as an end user is there any easy example

0:09:10.160,0:09:14.000
config out there

0:09:11.519,0:09:15.440
the organizer otherwise that shows

0:09:14.000,0:09:18.959
standard usage

0:09:15.440,0:09:18.959
with whatever programming language

0:09:18.960,0:09:23.920
[Music]

0:09:20.480,0:09:23.920
yeah there's no um

0:09:27.600,0:09:32.000
uh actually that uh so the project has

0:09:30.880,0:09:36.399
the documentation

0:09:32.000,0:09:40.720
site but it's not very expensive yet

0:09:36.399,0:09:44.000
I think we need to add more examples

0:09:40.720,0:09:44.000
to the documentation

0:09:48.720,0:09:53.519
can language major mode authors start

0:09:51.200,0:09:56.240
taking advantage of this now

0:09:53.519,0:09:57.279
or is it intended to be used as a minor

0:09:56.240,0:10:00.399
mode

0:09:57.279,0:10:01.600
uh actually it's both so it's intended

0:10:00.399,0:10:04.480
to be used

0:10:01.600,0:10:05.920
as a minor mode but it's also intended

0:10:04.480,0:10:09.839
to

0:10:05.920,0:10:13.519
be depended on by the major mode

0:10:09.839,0:10:13.920
so basically it it wants to be a minor

0:10:13.519,0:10:17.200
mode

0:10:13.920,0:10:19.839
that is dependent on by the other

0:10:17.200,0:10:19.839
major modes

0:10:21.839,0:10:29.279
and by it here I mean the the base

0:10:25.680,0:10:29.279
minor mode tree system mode

0:10:30.839,0:10:37.120
so uh question

0:10:34.079,0:10:40.160
11 is it possible to use this

0:10:37.120,0:10:43.360
for refactoring tool

0:10:40.160,0:10:46.720
uh yeah but

0:10:43.360,0:10:47.680
um like for the kind of refactoring

0:10:46.720,0:10:52.079
inside uh

0:10:47.680,0:10:52.079
buffer it is uh

0:10:52.640,0:10:57.040
it's very doable right now but you need

0:10:55.040,0:11:01.120
to write some glue code

0:10:57.040,0:11:04.000
but for for the kind of more

0:11:01.120,0:11:04.399
extensive refactoring where you want to

0:11:04.000,0:11:09.120
touch

0:11:04.399,0:11:09.120
uh like all files in a project

0:11:09.279,0:11:12.839
there needs there needs to be some kind

0:11:11.440,0:11:15.920
of the project

0:11:12.839,0:11:18.399
and another project and uh

0:11:15.920,0:11:19.200
understanding of the language uh model

0:11:18.399,0:11:21.120
system

0:11:19.200,0:11:22.560
like how they are laid out in the file

0:11:21.120,0:11:24.480
system as well

0:11:22.560,0:11:26.240
and with that understanding that there

0:11:24.480,0:11:29.920
should be passing of

0:11:26.240,0:11:30.480
the files even files on the file system

0:11:29.920,0:11:34.000
that

0:11:30.480,0:11:37.760
are not yet loaded into Emacs

0:11:34.000,0:11:40.320
so that sounds like something more

0:11:37.760,0:11:40.320
a lot more

0:11:41.040,0:11:44.560
a lot more extensive

0:11:46.320,0:11:50.000
and it probably probably sounds like

0:11:49.519,0:11:52.160
something

0:11:50.000,0:11:54.560
something like an id in uh inside your

0:11:52.160,0:11:57.839
max already like a replacement for

0:11:54.560,0:11:57.839
for lsp

0:12:07.360,0:12:11.440
so next question is the that pop-up mx

0:12:10.480,0:12:14.480
window

0:12:11.440,0:12:14.480
how do you get that

0:12:15.200,0:12:20.320
is the custom hem code I wrote a long

0:12:18.720,0:12:24.800
time ago

0:12:20.320,0:12:26.480
but but right now the best way to

0:12:24.800,0:12:29.440
to have something like that is probably

0:12:26.480,0:12:33.200
the what is written here like uh

0:12:29.440,0:12:39.839
ham boss frame or iv spring

0:12:33.200,0:12:43.680
is a lot easier now

0:12:39.839,0:12:46.320
is there a folding mode for tree sitter

0:12:43.680,0:12:48.079
nowadays there's no folding mode for

0:12:46.320,0:12:52.000
three sitters yet

0:12:48.079,0:12:54.880
but uh

0:12:52.000,0:12:58.720
uh but I think it would better be better

0:12:54.880,0:12:58.720
if it's integrated with the

0:12:59.440,0:13:03.120
like current currently there are

0:13:02.079,0:13:04.880
multiple

0:13:03.120,0:13:07.200
I'm not sure they're moving forward

0:13:04.880,0:13:10.240
there are like code folding frameworks

0:13:07.200,0:13:12.800
inside imax already or some the

0:13:10.240,0:13:13.920
code showing packages like third party

0:13:12.800,0:13:15.680
packaging

0:13:13.920,0:13:17.680
and I think it's better to integrate

0:13:15.680,0:13:20.000
with these mods

0:13:17.680,0:13:22.560
rather than writing something new

0:13:20.000,0:13:22.560
entirely

0:13:32.399,0:13:36.639
are there any language major modes that

0:13:34.800,0:13:40.079
have integrated already

0:13:36.639,0:13:42.800
uh not yet

0:13:40.079,0:13:43.440
so the there was a proposed web assembly

0:13:42.800,0:13:46.839
mode

0:13:43.440,0:13:50.000
but it's a new major mode in terms of

0:13:46.839,0:13:52.880
existing major mode there is the

0:13:50.000,0:13:52.880
typescript mode

0:13:53.279,0:13:57.519
but they're only discussing about

0:13:55.600,0:14:02.079
integration

0:13:57.519,0:14:04.639
they're not integrated yet

0:14:02.079,0:14:05.360
I think I can try writing the

0:14:04.639,0:14:09.199
integration

0:14:05.360,0:14:11.839
sometimes next month

0:14:09.199,0:14:12.720
uh basically what they want right now is

0:14:11.839,0:14:16.160
the

0:14:12.720,0:14:19.199
syntax highlighting and handling

0:14:16.160,0:14:22.959
synthetic highlighting and

0:14:19.199,0:14:27.760
code indentation for tsx

0:14:22.959,0:14:31.839
which is the embedded react

0:14:27.760,0:14:31.839
syntax inside typescript

0:14:32.160,0:14:40.000
so it turns out passing these tests

0:14:36.399,0:14:40.000
is very troublesome so

0:14:40.639,0:14:47.040
so trees that would be a crystal would

0:14:43.920,0:14:47.040
be a lot of help there

0:14:49.920,0:14:59.839
is there any link to the slides yes

0:14:53.279,0:14:59.839
I'll post it in irc later

0:14:59.920,0:15:04.240
regarding imax integration we will

0:15:01.920,0:15:05.440
always need to be a foreign library or

0:15:04.240,0:15:09.920
can it be included

0:15:05.440,0:15:09.920
linked directly in compilation

0:15:10.839,0:15:17.600
uh if if this is about the

0:15:14.480,0:15:21.839
core library itself

0:15:17.600,0:15:23.440
then I think it's uh answered it in the

0:15:21.839,0:15:27.440
first question

0:15:23.440,0:15:29.920
right now is a right now it's a

0:15:27.440,0:15:30.959
dynamic model but in the long run it

0:15:29.920,0:15:34.000
will better if

0:15:30.959,0:15:39.839
it's included in core Emacs

0:15:34.000,0:15:41.360
for the language definitions themselves

0:15:39.839,0:15:43.279
it should be better if they are

0:15:41.360,0:15:46.639
distributed uh

0:15:43.279,0:15:49.199
separately like that right now so each

0:15:46.639,0:15:49.680
uh for each language there will be a

0:15:49.199,0:15:52.639
shared

0:15:49.680,0:15:55.839
library that will be loaded by the core

0:15:52.639,0:15:55.839
library at runtime

0:16:00.480,0:16:04.240
so the last question is the python mode

0:16:02.480,0:16:06.160
example is pretty good

0:16:04.240,0:16:07.600
is that something that one can use

0:16:06.160,0:16:11.759
already

0:16:07.600,0:16:11.759
yes I'm using it at work right now

0:16:12.320,0:16:17.360
I think that's all for that's all the

0:16:14.639,0:16:17.360
questions right

0:16:19.199,0:16:27.839
you are now unmuted yeah I think that's

0:16:23.440,0:16:30.399
all the questions on the pads so far um

0:16:27.839,0:16:32.399
so thank you but um there may be more

0:16:30.399,0:16:36.639
questions coming on irc

0:16:32.399,0:16:39.680
um I'll try to have a look

0:16:36.639,0:16:40.560
and we still have about 10 or 15 more

0:16:39.680,0:16:43.600
minutes so

0:16:40.560,0:16:46.880
um there's no rush to wrap up in case um

0:16:43.600,0:16:46.880
anyone has any more questions

0:16:48.160,0:16:51.360
uh yeah I just realized that uh I mixed

0:16:50.880,0:16:54.959
up the

0:16:51.360,0:16:56.000
video editing and I uh lost an entire

0:16:54.959,0:17:00.880
session on the

0:16:56.000,0:17:00.880
introduction to treesita oh

0:17:01.120,0:17:05.839
no worries

0:17:06.640,0:17:20.079
you are now muted

0:17:18.079,0:17:21.679
sounds like a perfect opportunity for

0:17:20.079,0:17:24.000
you to redo the introduction if you'd

0:17:21.679,0:17:24.000
like to

0:17:24.640,0:17:30.000
uh actually uh forgot a lot of that

0:17:30.799,0:17:35.760
and I'm with uh tired now so no I don't

0:17:33.760,0:17:39.200
think I can do it

0:17:35.760,0:17:43.520
it's uh 30 minutes until my bedtime

0:17:39.200,0:17:46.640
oh yeah yeah okay you are now unmuted

0:17:43.520,0:17:50.480
so in that case maybe we should

0:17:46.640,0:17:54.240
um we should let tona

0:17:50.480,0:17:56.960
get started going to bed and um and

0:17:54.240,0:17:57.840
I mean then I will figure out what to do

0:17:56.960,0:17:59.360
with the time

0:17:57.840,0:18:02.160
should we start the next talk early

0:17:59.360,0:18:05.360
since it's pre-recorded

0:18:02.160,0:18:07.919
um yeah we can do we can do that um

0:18:05.360,0:18:09.919
but um yeah tonight it you know right

0:18:07.919,0:18:10.480
now it's pretty late there um no worries

0:18:09.919,0:18:12.720
but

0:18:10.480,0:18:13.520
yeah if you know over the next few days

0:18:12.720,0:18:16.559
or weeks

0:18:13.520,0:18:20.240
if you would like to um you know

0:18:16.559,0:18:22.080
do a quick pre-recording or recording

0:18:20.240,0:18:24.320
to add the introduction and then stitch

0:18:22.080,0:18:26.559
it in with what you had already sent me

0:18:24.320,0:18:30.160
um by all means please do that and I

0:18:26.559,0:18:33.760
will upload the edited version

0:18:30.160,0:18:33.760
uh yeah yeah I'll try to do that

0:18:34.880,0:18:39.760
thank you yep thank you so much bye