thomasjo / atom-latex

Compile LaTeX or knitr documents from within Atom
https://atom.io/packages/latex
MIT License
223 stars 42 forks source link

WIP: Add Dicy builder #364

Closed yitzchak closed 7 years ago

yitzchak commented 7 years ago

Add support for the Dicy (Directed Cyclic graph) builder.

yitzchak commented 7 years ago

@thomasjo Can you give me a review on this one? I haven't written specs yet so I think it just needs a "sanity" check right now.

thomasjo commented 7 years ago

I'll have a look at this tonight. Really excited about this!

yitzchak commented 7 years ago

TL;DR I'll split into two PRs unless you feel otherwise.

Dicy has some build modes that resolve #343 right out of the box. Basically there is the usual build mode

dicy.run('load', 'build', 'log', 'save')

which is equivalent to our current latex:build command (with log parsing) and

dicy.run('load', 'clean', 'save')

which is our latex:clean command. The commands can be composed in any order to create a "clean after build" command

dicy.run('load', 'build', 'log', 'clean', 'save')

In order to make this command not delete the output targets produced by the build command I added a deepClean option which makes the regular clean command more of a shallow clean. That means that there is no reason to include the *.pdf type patterns in the cleanPatterns. So shallow clean (remove everything but PDF, DVI, etc) will be done when clean is passed to Dicy unless the following is done

dicy = await Dicy.create('foo.tex', { deepClean: true })
dicy.run('load', 'clean', 'save')

Hence adding latex:deep-clean command along with the stuff from #343. Hope that explains my logic a bit. Again, I really don't have a problem splitting into two PRs, maybe a "minimal Dicy integration" and a "full Dicy integration?" No one is really using Dicy yet, so we can also change the logic it is using if you see a better way to resolve this issue.

yitzchak commented 7 years ago

Closed in favor of #367.