From: Benito v. d. Z. <be...@be...> - 2012-03-27 00:27:02
|
Hi, I plan to refactor the command options, so they are more flexible (and hopefully have a less complex implementation). Basically every command gets an unique id like txs:///pdflatex that can be referenced from other commands, to run that command as subcommand. (or alternatively $pdflatex, although that might collide with other $ in a command) Does anyone need command features not listed here? * Map command-id to full command: txs:///pdflatex => pdflatex -interaction=nonstopmode -src -synctex=1 --src-specials %.tex txs:///view-pdf => evince %.pdf * Support recursion txs:///quick => txs:///view-pdf => txs:///view-pdf-internal * Have meta commands to switch tool chains: txs:///quick => ... txs:///compile => txs:///pdflatex txs:///bibliography => txs:///bibtex * Chain multiple commands: txs:///pdflatex | txs:///view-pdf * Expand commands: asy ?m*.asy => asy asy0.asy | asy asy1.asy | ... * Combine user and normal commands: txs:///user0 * DDE support old: dde://programpath:service/control/[commands...] new: dde:///programpath:service/control/[commands...] * Add options at the end txs:///pdflatex -shell-escape * Override options/add at the beginning txs:///pdflatex/[-synctex=0] => pdflatex -synctex=0 ... txs:///pdflatex/[-synctex=0][-foobar] => pdflatex -synctex=0 -foobar ... txs:///pdflatex/[-shell-escape] => pdflatex -shell-escape ... * Remove options (??): txs:///pdflatex/{-shell-escape} => pdflatex ... without shell-escape * Override master file (???): txs:///pdflatex/(masterfile, linenr, currentfile) * Stdout display: default on for bibliography/bibtex/user, off for everything else disable with > /dev/null enable with > txs:///messages * Stderr display (?): disable with 2> /dev/null enable with 2> txs:///messages * Per project command settings: Masterdocument can override each mapping, e.g.: % !TeX program:compile = pdflatex % !TeX program:bibliography = biber * Run necessary programs before latex: Implicitly call txs:///internal-pre-compile before any compilation that contains latex/pdflatex/compile, with: txs:///internal-pre-compile => txs:///pre-compile | txs:///conditional-bibliography-pre-compile txs:///conditional-bibliography-pre-compile => txs:///compile | txs:///bibliography | txs:///compile if there are modified bibtex files, or empty otherwise * If the command contains txs:///latex, txs:///pdflatex, auto repeat if there are LaTeX errors, call txs:///bibliography first if citations are missing * Run everything synchronously, except viewers * When compiling, expand fully and show first and last synchronous level in the status bar, e.g.: QuickBuild: pdflatex ----------COMMANDS-----------: Compile: latex, pdflatex Convert: dvips, ps2pdf, dvipdf, dvipng Bibliography: bibtex, (bibtex8, biber ??) Viewer: view-pdf, view-dvi, view-ps, view-pdf-external, view-pdf-internal SVN: svn, svnadmin Other: makeindex, metapost, ghostscript, asymptote Meta: compile (either txs:///latex or txs:///pdflatex), bibliography (either txs:///bibtex or txs:///biber), viewer (e.g. txs:///view-pdf) quick (quickmode), ps-chain (=> latex,dvips, viewps ; as a quickmode default), pdf-chain, dvi-chain, dvipdf-chain, asydvi-chain, asypdf-chain user0, user1, user2 ... ----------INTERNAL-----------: * Entirely contained in BuildManager and subclasses * Replace CMD_* enums with string constants * remove RunCommand mess and move it to BuildManager * BuildManager::parseExtendedCommandLine splits command line into list of commands with flags (RunCommandFlags) * BuildManager::initCommand calls BuildManager::parseECL, returns class executing the commands one-by-one. Callback to Texmaker-class for bibtex and overrides, signal/slots for messages, handle pipes (ignore stdout for speed, send it to mainwindow, or write it in return buffer) * BuildManager::runCommand calls initCommand and runs it immediately Benito |