tectonic-typesetting / tectonic

A modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.
https://tectonic-typesetting.github.io/
Other
3.87k stars 159 forks source link

VimTex Concerns with Integration #1009

Open hughesjs opened 1 year ago

hughesjs commented 1 year ago

With reference to #849 and 2280 over on VimTex, I was wondering if the concerns of the VimTex maintainer could be addressed?

Whilst it is fairly straightforward to launch the tectonic watch mode, I'd really like to have good VimTex integration.

Is this doable?

Neved4 commented 1 year ago

We've been discussing it over https://github.com/tectonic-typesetting/tectonic/issues/986 🚀

hughesjs commented 1 year ago

Nice one, do you want me to close this as a dupe or do you think it's related but not a dupe?

aarmn commented 1 year ago

While this issue is not exact dupe of what we are discussing on #986, the root cause has some similarity.

I'm working on negahban to address this problem, by using hooks, instead of creating command buffers, because its superset of what watchexec main crate can does (solution implemented rn), and watchexec lib crate is an absolute mess to work with.

Things I wish to achieve with this new approach is:

because a closure can do all watchexec does, but the command runner structure of watchexec cannot do anything a closure does, and lets not talk about its under-documented lib. also while watchexec is a mature project, unlike mine which is barely alpha, is very clumsy in structure and examples. while it was possible to handle it by making a dummy binary to collect watchexec calls, or internal flags, that would have degraded user interface of program, so I thought best I can do is to make my crate, and implement it into tectonic.

Also, I never worked with VimTex, but if it can benefit extra control on each files change, I guess there is a good chance, good things will happen about that.

p.s.: I'm not a seasoned rust programmer, so any help there, specially on doc, test, and edge-cases would be appreciated, right now the code is a clone and unwrap soup which needs some work on to become better, but MWP is already out, and I found its developer experience pretty nice. I'll look forward to your contributions!