From f6f4a8ddf8d5c9adeaa922d56a497095848d6441 Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Thu, 21 Feb 2013 11:54:59 -0500 Subject: [PATCH] Do not try to load or copy included files when we are in a comment or doing a dryrun. We skipped some of this before, but not all of it, which led to bug #8557. --- src/insets/InsetInclude.cpp | 122 ++++++++++++++++++------------------ status.20x | 2 + 2 files changed, 64 insertions(+), 60 deletions(-) diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index 049039a5cb..119b11f71c 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -528,6 +528,67 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const } FileName const writefile(makeAbsPath(mangled, masterBuffer->temppath())); + string const tex_format = flavor2format(runparams.flavor); + + switch (type(params())) { + case VERB: + case VERBAST: { + incfile = latex_path(incfile); + // FIXME UNICODE + os << '\\' << from_ascii(params().getCmdName()) << '{' + << from_utf8(incfile) << '}'; + break; + } + case INPUT: { + runparams.exportdata->addExternalFile(tex_format, writefile, + exportfile); + + // \input wants file with extension (default is .tex) + if (!isLyXFileName(included_file.absFileName())) { + incfile = latex_path(incfile); + // FIXME UNICODE + os << '\\' << from_ascii(params().getCmdName()) + << '{' << from_utf8(incfile) << '}'; + } else { + incfile = changeExtension(incfile, ".tex"); + incfile = latex_path(incfile); + // FIXME UNICODE + os << '\\' << from_ascii(params().getCmdName()) + << '{' << from_utf8(incfile) << '}'; + } + break; + } + case LISTINGS: { + os << '\\' << from_ascii(params().getCmdName()); + string const opt = to_utf8(params()["lstparams"]); + // opt is set in QInclude dialog and should have passed validation. + InsetListingsParams params(opt); + if (!params.params().empty()) + os << "[" << from_utf8(params.params()) << "]"; + os << '{' << from_utf8(incfile) << '}'; + break; + } + case INCLUDE: { + runparams.exportdata->addExternalFile(tex_format, writefile, + exportfile); + + // \include don't want extension and demands that the + // file really have .tex + incfile = changeExtension(incfile, string()); + incfile = latex_path(incfile); + // FIXME UNICODE + os << '\\' << from_ascii(params().getCmdName()) << '{' + << from_utf8(incfile) << '}'; + break; + } + case NONE: + break; + } + + if (runparams.inComment || runparams.dryrun) + // Don't try to load or copy the file if we're + // in a comment or doing a dryrun + return; if (!runparams.nice) incfile = mangled; @@ -548,11 +609,7 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const LYXERR(Debug::LATEX, "exportfile:" << exportfile); LYXERR(Debug::LATEX, "writefile:" << writefile); - string const tex_format = flavor2format(runparams.flavor); - if (runparams.inComment || runparams.dryrun) { - //Don't try to load or copy the file if we're - //in a comment or doing a dryrun - } else if (isInputOrInclude(params()) && + if (isInputOrInclude(params()) && isLyXFileName(included_file.absFileName())) { // if it's a LyX file and we're inputting or including, // try to load it so we can write the associated latex @@ -676,61 +733,6 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const } } } - - switch (type(params())) { - case VERB: - case VERBAST: { - incfile = latex_path(incfile); - // FIXME UNICODE - os << '\\' << from_ascii(params().getCmdName()) << '{' - << from_utf8(incfile) << '}'; - break; - } - case INPUT: { - runparams.exportdata->addExternalFile(tex_format, writefile, - exportfile); - - // \input wants file with extension (default is .tex) - if (!isLyXFileName(included_file.absFileName())) { - incfile = latex_path(incfile); - // FIXME UNICODE - os << '\\' << from_ascii(params().getCmdName()) - << '{' << from_utf8(incfile) << '}'; - } else { - incfile = changeExtension(incfile, ".tex"); - incfile = latex_path(incfile); - // FIXME UNICODE - os << '\\' << from_ascii(params().getCmdName()) - << '{' << from_utf8(incfile) << '}'; - } - break; - } - case LISTINGS: { - os << '\\' << from_ascii(params().getCmdName()); - string const opt = to_utf8(params()["lstparams"]); - // opt is set in QInclude dialog and should have passed validation. - InsetListingsParams params(opt); - if (!params.params().empty()) - os << "[" << from_utf8(params.params()) << "]"; - os << '{' << from_utf8(incfile) << '}'; - break; - } - case INCLUDE: { - runparams.exportdata->addExternalFile(tex_format, writefile, - exportfile); - - // \include don't want extension and demands that the - // file really have .tex - incfile = changeExtension(incfile, string()); - incfile = latex_path(incfile); - // FIXME UNICODE - os << '\\' << from_ascii(params().getCmdName()) << '{' - << from_utf8(incfile) << '}'; - break; - } - case NONE: - break; - } } diff --git a/status.20x b/status.20x index 4820660e4b..4e16788d60 100644 --- a/status.20x +++ b/status.20x @@ -142,6 +142,8 @@ What's new - Do not create an empty environment variable LC_ALL when launching external processes (bug 8537). +- Do not try to process included files when viewing source (bug 8557). + * DOCUMENTATION AND LOCALIZATION