> 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 ___________________________________________________________________________________