> Am 2020-02-04 um 16:45 schrieb Philipp A. <flying-sh...@web.de>:
> 
> Language servers are the new big deal in editor and IDE development: 
> https://langserver.org/
> 
> It would be cool to have a ConTeXt one for autocompletion (for ConTeXt: 
> command names, \cite IDs, labels, named parameters, …), go-to-definition, 
> hover information (docs about a command) and so on.
> The way it works is that you have a server process that is the source of 
> truth for all this information, and the editor passes requests to it.
> The editor tells the server when it opens/closes files and when the user 
> requests something of the above.
> 
> The way I’d implement it in ConTeXt is to keep a list of open ConTeXt 
> projects in the server (obtained by following \include, \component, \product, 
> \environment, \project).
> Now my questions begin:
>       • Then I’d make context load the project without compiling it to a PDF 
> but make it execute some Lua (how do I do this?)
>       • I’d need a way to get all available commands with their signatures 
> into Lua. I assume this is done here, but how? 
> http://www.pragma-ade.nl/general/qrcs/setup-en.pdf

Look for the interface files i-*.xml

>       • Optimally, for hover information and completion, I’d want some 
> help/doc text for each command that has some. Is there a way to get it?

No, there isn’t. It could be in the interface files if someone would put in the 
work.

>       • Optimally, for label autocompletion, I’d also like a list of defined 
> labels. Since I played around with bibliographies I already know how to query 
> the bibliography DB from Lua.
>       • Optimally I’d also want some parse tree of each document, but I 
> assume the way macros work, this doesn’t exist? This would make things easier 
> that I’d otherwise have to (imperfectly) parse out of the document (due to 
> things like catcode changes, but I guess I can pretend they don’t exist and 
> \unprotect is always on)

You could run ConTeXt and use the export XML.

>       • Optimally, for go-to-definition, I’d also want a list of files 
> ConTeXt loaded so I can find definitions in it.
> Can anyone help me, especially with 1-2? To get me started, it would be great 
> to have an example script and a command line to invoke it, which makes 
> ConTeXt load a main tex file, execute some Lua, and exit without creating a 
> document or writing anything else to the channel Lua writes to (stdout?).

Look at the .tuc file that’s created in a ConTeXt run, it’s a Lua table and 
contains “all“ the information about the project.


Greetlings, Hraban
---
https://www.fiee.net
http://wiki.contextgarden.net
https://www.dreiviertelhaus.de
GPG Key ID 1C9B22FD

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to