Saving module data in tuc file
Hi, How does one save and read third-party data in tuc file at the lua end? I am trying to write a module t-ifchanged that defines a \doiffilechanged macro that provides the functionality of mtxrun --ifchanged without calling an external program (This is meant to be a support module for t-vim, where the external calls to mtxrun are too time consuming). I can successfully write additional data to the tuc file, but cannot figure out how to initialize the data from tuc file. (See attached file). Any hints are welcome. Aditya
On Sun, Dec 4, 2011 at 1:20 AM, Aditya Mahajan
Hi,
How does one save and read third-party data in tuc file at the lua end? You can read the data with loadfile or dofile: utilitydata=dofile('test.tuc') and then you have the table stored into utilitydata See for the difference with loadfile http://www.lua.org/pil/8.html
-- luigi
On Sun, 4 Dec 2011, luigi scarso wrote:
On Sun, Dec 4, 2011 at 1:20 AM, Aditya Mahajan
wrote: Hi,
How does one save and read third-party data in tuc file at the lua end? You can read the data with loadfile or dofile: utilitydata=dofile('test.tuc')
But doesn't ConTeXt already read the tuc file at \starttext? I don't want to load the file again. Aditya
Am 04.12.2011 um 01:20 schrieb Aditya Mahajan:
Hi,
How does one save and read third-party data in tuc file at the lua end?
I am trying to write a module t-ifchanged that defines a \doiffilechanged macro that provides the functionality of mtxrun --ifchanged without calling an external program (This is meant to be a support module for t-vim, where the external calls to mtxrun are too time consuming).
I can successfully write additional data to the tuc file, but cannot figure out how to initialize the data from tuc file. (See attached file). Any hints are welcome.
\definetwopasslist{test} \newcount\testcount \starttext \immediatesavetwopassdata{test}{}{First Entry} One: \gettwopassdata{test}\twopassdata \startluacode commands.savetwopassdata("test","Second Entry") \stopluacode Two: \ctxlua{commands.gettwopassdata("test")} \stoptext Wolfgang
On 4-12-2011 01:20, Aditya Mahajan wrote:
Hi,
How does one save and read third-party data in tuc file at the lua end?
I am trying to write a module t-ifchanged that defines a \doiffilechanged macro that provides the functionality of mtxrun --ifchanged without calling an external program (This is meant to be a support module for t-vim, where the external calls to mtxrun are too time consuming).
This is why we have a mechanism built in (used for graphics).
I can successfully write additional data to the tuc file, but cannot figure out how to initialize the data from tuc file. (See attached file). Any hints are welcome.
There is: jobfiles.run("yourfile.xxx","vim --something yourfile.xxx") I'll adapt this to accept a function as second argument. Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On Sun, 4 Dec 2011, Hans Hagen wrote:
On 4-12-2011 01:20, Aditya Mahajan wrote:
Hi,
How does one save and read third-party data in tuc file at the lua end?
I am trying to write a module t-ifchanged that defines a \doiffilechanged macro that provides the functionality of mtxrun --ifchanged without calling an external program (This is meant to be a support module for t-vim, where the external calls to mtxrun are too time consuming).
This is why we have a mechanism built in (used for graphics).
Ah, I didn't know that.
I can successfully write additional data to the tuc file, but cannot figure out how to initialize the data from tuc file. (See attached file). Any hints are welcome.
There is:
jobfiles.run("yourfile.xxx","vim --something yourfile.xxx")
This works in a standalone file, but not the way I am calling the function. \def\executeCommand {\doifmode{*first} {\ctxlua{job.files.run(\!!bs\externalfiter::input_file\!!es, \!!bs\externalfiltercommand\!!es)}}} The solution is to remove the test for the first mode. Needs a bit of refactoring to ensure that the solution still works for MkII. (Does anyone use the filter module with MkII?) Aditya
On Sun, 4 Dec 2011, Aditya Mahajan wrote:
\def\executeCommand {\doifmode{*first} {\ctxlua{job.files.run(\!!bs\externalfiter::input_file\!!es, \!!bs\externalfiltercommand\!!es)}}}
The solution is to remove the test for the first mode. Needs a bit of refactoring to ensure that the solution still works for MkII. (Does anyone use the filter module with MkII?)
The new version of the filter module uses job.files.run in the background (when continue=yes is set) instead of mtxrun --ifchanged. This should considerably speed up the vim module when using a lot of code snippets. Aditya
participants (4)
-
Aditya Mahajan
-
Hans Hagen
-
luigi scarso
-
Wolfgang Schuster