[LyX/master] Return early from the short path.

Richard Kimberly Heck rikiheck at lyx.org
Sun Apr 26 02:12:50 UTC 2020


commit aa794a8806ec309240bf8f4a64d84adb9b94dd64
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date:   Sat Apr 25 17:33:49 2020 -0400

    Return early from the short path.
---
 src/insets/InsetInclude.cpp |  295 +++++++++++++++++++++----------------------
 1 files changed, 147 insertions(+), 148 deletions(-)

diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp
index c066281..b0d2be4 100644
--- a/src/insets/InsetInclude.cpp
+++ b/src/insets/InsetInclude.cpp
@@ -766,152 +766,8 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
 		// in a comment or doing a dryrun
 		return;
 
-	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
-
-		Buffer * tmp = loadIfNeeded();
-		if (!tmp) {
-			if (!runparams.silent) {
-				docstring text = bformat(_("Could not load included "
-					"file\n`%1$s'\n"
-					"Please, check whether it actually exists."),
-					included_file.displayName());
-				throw ExceptionMessage(ErrorException, _("Error: "),
-						       text);
-			}
-			return;
-		}
-
-		if (!runparams.silent) {
-			if (tmp->params().baseClass() != masterBuffer->params().baseClass()) {
-				// FIXME UNICODE
-				docstring text = bformat(_("Included file `%1$s'\n"
-					"has textclass `%2$s'\n"
-					"while parent file has textclass `%3$s'."),
-					included_file.displayName(),
-					from_utf8(tmp->params().documentClass().name()),
-					from_utf8(masterBuffer->params().documentClass().name()));
-				Alert::warning(_("Different textclasses"), text, true);
-			}
-
-			string const child_tf = tmp->params().useNonTeXFonts ? "true" : "false";
-			string const master_tf = masterBuffer->params().useNonTeXFonts ? "true" : "false";
-			if (tmp->params().useNonTeXFonts != masterBuffer->params().useNonTeXFonts) {
-				docstring text = bformat(_("Included file `%1$s'\n"
-					"has use-non-TeX-fonts set to `%2$s'\n"
-					"while parent file has use-non-TeX-fonts set to `%3$s'."),
-					included_file.displayName(),
-					from_utf8(child_tf),
-					from_utf8(master_tf));
-				Alert::warning(_("Different use-non-TeX-fonts settings"), text, true);
-			} 
-			else if (tmp->params().inputenc != masterBuffer->params().inputenc) {
-				docstring text = bformat(_("Included file `%1$s'\n"
-					"uses input encoding \"%2$s\" [%3$s]\n"
-					"while parent file uses input encoding \"%4$s\" [%5$s]."),
-					included_file.displayName(),
-					_(tmp->params().inputenc),
-					from_utf8(tmp->params().encoding().guiName()),
-					_(masterBuffer->params().inputenc),
-					from_utf8(masterBuffer->params().encoding().guiName()));
-				Alert::warning(_("Different LaTeX input encodings"), text, true);
-			}
-
-			// Make sure modules used in child are all included in master
-			// FIXME It might be worth loading the children's modules into the master
-			// over in BufferParams rather than doing this check.
-			LayoutModuleList const masterModules = masterBuffer->params().getModules();
-			LayoutModuleList const childModules = tmp->params().getModules();
-			LayoutModuleList::const_iterator it = childModules.begin();
-			LayoutModuleList::const_iterator end = childModules.end();
-			for (; it != end; ++it) {
-				string const module = *it;
-				LayoutModuleList::const_iterator found =
-					find(masterModules.begin(), masterModules.end(), module);
-				if (found == masterModules.end()) {
-					docstring text = bformat(_("Included file `%1$s'\n"
-						"uses module `%2$s'\n"
-						"which is not used in parent file."),
-						included_file.displayName(), from_utf8(module));
-					Alert::warning(_("Module not found"), text, true);
-				}
-			}
-		}
-
-		tmp->markDepClean(masterBuffer->temppath());
-
-		// Don't assume the child's format is latex
-		string const inc_format = tmp->params().bufferFormat();
-		FileName const tmpwritefile(changeExtension(writefile.absFileName(),
-			theFormats().extension(inc_format)));
-
-		// FIXME: handle non existing files
-		// The included file might be written in a different encoding
-		// and language.
-		Encoding const * const oldEnc = runparams.encoding;
-		Language const * const oldLang = runparams.master_language;
-		// If the master uses non-TeX fonts (XeTeX, LuaTeX),
-		// the children must be encoded in plain utf8!
-		if (masterBuffer->params().useNonTeXFonts)
-			runparams.encoding = encodings.fromLyXName("utf8-plain");
-		else if (oldEnc)
-			runparams.encoding = oldEnc;
-		else runparams.encoding = &tmp->params().encoding();
-		runparams.master_language = buffer().params().language;
-		runparams.par_begin = 0;
-		runparams.par_end = tmp->paragraphs().size();
-		runparams.is_child = true;
-		Buffer::ExportStatus retval =
-			tmp->makeLaTeXFile(tmpwritefile, masterFileName(buffer()).
-				onlyPath().absFileName(), runparams, Buffer::OnlyBody);
-		if (retval == Buffer::ExportKilled && buffer().isClone() &&
-		      buffer().isExporting()) {
-		  // We really shouldn't get here, I don't think.
-		  LYXERR0("No conversion exception?");
-			throw ConversionException();
-		}
-		else if (retval != Buffer::ExportSuccess) {
-			if (!runparams.silent) {
-				docstring msg = bformat(_("Included file `%1$s' "
-					"was not exported correctly.\n "
-					"LaTeX export is probably incomplete."),
-					included_file.displayName());
-				ErrorList const & el = tmp->errorList("Export");
-				if (!el.empty())
-					msg = bformat(from_ascii("%1$s\n\n%2$s\n\n%3$s"),
-					        msg, el.begin()->error, el.begin()->description);
-				throw ExceptionMessage(ErrorException, _("Error: "), msg);
-			}
-		}
-		runparams.encoding = oldEnc;
-		runparams.master_language = oldLang;
-		runparams.is_child = false;
-
-		// If needed, use converters to produce a latex file from the child
-		if (tmpwritefile != writefile) {
-			ErrorList el;
-			Converters::RetVal const conv_retval =
-				theConverters().convert(tmp, tmpwritefile, writefile,
-				    included_file, inc_format, tex_format, el);
-			if (conv_retval == Converters::KILLED && buffer().isClone() &&
-			    buffer().isExporting()) {
-				// We really shouldn't get here, I don't think.
-				LYXERR0("No conversion exception?");
-				throw ConversionException();
-			} else if (conv_retval != Converters::SUCCESS && !runparams.silent) {
-				docstring msg = bformat(_("Included file `%1$s' "
-						"was not exported correctly.\n "
-						"LaTeX export is probably incomplete."),
-						included_file.displayName());
-				if (!el.empty())
-					msg = bformat(from_ascii("%1$s\n\n%2$s\n\n%3$s"),
-					        msg, el.begin()->error, el.begin()->description);
-				throw ExceptionMessage(ErrorException, _("Error: "), msg);
-			}
-		}
-	} else {
+	if (!isInputOrInclude(params()) ||
+		 !isLyXFileName(included_file.absFileName())) {
 		// In this case, it's not a LyX file, so we copy the file
 		// to the temp dir, so that .aux files etc. are not created
 		// in the original dir. Files included by this file will be
@@ -919,7 +775,6 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
 		// input at path, see ../Buffer.cpp.
 		unsigned long const checksum_in  = included_file.checksum();
 		unsigned long const checksum_out = writefile.checksum();
-
 		if (checksum_in != checksum_out) {
 			if (!included_file.copyTo(writefile)) {
 				// FIXME UNICODE
@@ -927,9 +782,153 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
 					to_utf8(bformat(_("Could not copy the file\n%1$s\n"
 									"into the temporary directory."),
 							 from_utf8(included_file.absFileName()))));
-				return;
 			}
 		}
+		return;
+	}
+
+		
+	// it's a LyX file and we're inputting or including, so
+	// try to load it so we can write the associated latex
+	Buffer * tmp = loadIfNeeded();
+	if (!tmp) {
+		if (!runparams.silent) {
+			docstring text = bformat(_("Could not load included "
+				"file\n`%1$s'\n"
+				"Please, check whether it actually exists."),
+				included_file.displayName());
+			throw ExceptionMessage(ErrorException, _("Error: "),
+						   text);
+		}
+		return;
+	}
+
+	if (!runparams.silent) {
+		if (tmp->params().baseClass() != masterBuffer->params().baseClass()) {
+			// FIXME UNICODE
+			docstring text = bformat(_("Included file `%1$s'\n"
+				"has textclass `%2$s'\n"
+				"while parent file has textclass `%3$s'."),
+				included_file.displayName(),
+				from_utf8(tmp->params().documentClass().name()),
+				from_utf8(masterBuffer->params().documentClass().name()));
+			Alert::warning(_("Different textclasses"), text, true);
+		}
+
+		string const child_tf = tmp->params().useNonTeXFonts ? "true" : "false";
+		string const master_tf = masterBuffer->params().useNonTeXFonts ? "true" : "false";
+		if (tmp->params().useNonTeXFonts != masterBuffer->params().useNonTeXFonts) {
+			docstring text = bformat(_("Included file `%1$s'\n"
+				"has use-non-TeX-fonts set to `%2$s'\n"
+				"while parent file has use-non-TeX-fonts set to `%3$s'."),
+				included_file.displayName(),
+				from_utf8(child_tf),
+				from_utf8(master_tf));
+			Alert::warning(_("Different use-non-TeX-fonts settings"), text, true);
+		} 
+		else if (tmp->params().inputenc != masterBuffer->params().inputenc) {
+			docstring text = bformat(_("Included file `%1$s'\n"
+				"uses input encoding \"%2$s\" [%3$s]\n"
+				"while parent file uses input encoding \"%4$s\" [%5$s]."),
+				included_file.displayName(),
+				_(tmp->params().inputenc),
+				from_utf8(tmp->params().encoding().guiName()),
+				_(masterBuffer->params().inputenc),
+				from_utf8(masterBuffer->params().encoding().guiName()));
+			Alert::warning(_("Different LaTeX input encodings"), text, true);
+		}
+
+		// Make sure modules used in child are all included in master
+		// FIXME It might be worth loading the children's modules into the master
+		// over in BufferParams rather than doing this check.
+		LayoutModuleList const masterModules = masterBuffer->params().getModules();
+		LayoutModuleList const childModules = tmp->params().getModules();
+		LayoutModuleList::const_iterator it = childModules.begin();
+		LayoutModuleList::const_iterator end = childModules.end();
+		for (; it != end; ++it) {
+			string const module = *it;
+			LayoutModuleList::const_iterator found =
+				find(masterModules.begin(), masterModules.end(), module);
+			if (found == masterModules.end()) {
+				docstring text = bformat(_("Included file `%1$s'\n"
+					"uses module `%2$s'\n"
+					"which is not used in parent file."),
+					included_file.displayName(), from_utf8(module));
+				Alert::warning(_("Module not found"), text, true);
+			}
+		}
+	}
+
+	tmp->markDepClean(masterBuffer->temppath());
+
+	// Don't assume the child's format is latex
+	string const inc_format = tmp->params().bufferFormat();
+	FileName const tmpwritefile(changeExtension(writefile.absFileName(),
+		theFormats().extension(inc_format)));
+
+	// FIXME: handle non existing files
+	// The included file might be written in a different encoding
+	// and language.
+	Encoding const * const oldEnc = runparams.encoding;
+	Language const * const oldLang = runparams.master_language;
+	// If the master uses non-TeX fonts (XeTeX, LuaTeX),
+	// the children must be encoded in plain utf8!
+	if (masterBuffer->params().useNonTeXFonts)
+		runparams.encoding = encodings.fromLyXName("utf8-plain");
+	else if (oldEnc)
+		runparams.encoding = oldEnc;
+	else runparams.encoding = &tmp->params().encoding();
+	runparams.master_language = buffer().params().language;
+	runparams.par_begin = 0;
+	runparams.par_end = tmp->paragraphs().size();
+	runparams.is_child = true;
+	Buffer::ExportStatus retval =
+		tmp->makeLaTeXFile(tmpwritefile, masterFileName(buffer()).
+			onlyPath().absFileName(), runparams, Buffer::OnlyBody);
+	if (retval == Buffer::ExportKilled && buffer().isClone() &&
+		  buffer().isExporting()) {
+	  // We really shouldn't get here, I don't think.
+	  LYXERR0("No conversion exception?");
+		throw ConversionException();
+	}
+	else if (retval != Buffer::ExportSuccess) {
+		if (!runparams.silent) {
+			docstring msg = bformat(_("Included file `%1$s' "
+				"was not exported correctly.\n "
+				"LaTeX export is probably incomplete."),
+				included_file.displayName());
+			ErrorList const & el = tmp->errorList("Export");
+			if (!el.empty())
+				msg = bformat(from_ascii("%1$s\n\n%2$s\n\n%3$s"),
+						msg, el.begin()->error, el.begin()->description);
+			throw ExceptionMessage(ErrorException, _("Error: "), msg);
+		}
+	}
+	runparams.encoding = oldEnc;
+	runparams.master_language = oldLang;
+	runparams.is_child = false;
+
+	// If needed, use converters to produce a latex file from the child
+	if (tmpwritefile != writefile) {
+		ErrorList el;
+		Converters::RetVal const conv_retval =
+			theConverters().convert(tmp, tmpwritefile, writefile,
+				included_file, inc_format, tex_format, el);
+		if (conv_retval == Converters::KILLED && buffer().isClone() &&
+			buffer().isExporting()) {
+			// We really shouldn't get here, I don't think.
+			LYXERR0("No conversion exception?");
+			throw ConversionException();
+		} else if (conv_retval != Converters::SUCCESS && !runparams.silent) {
+			docstring msg = bformat(_("Included file `%1$s' "
+					"was not exported correctly.\n "
+					"LaTeX export is probably incomplete."),
+					included_file.displayName());
+			if (!el.empty())
+				msg = bformat(from_ascii("%1$s\n\n%2$s\n\n%3$s"),
+						msg, el.begin()->error, el.begin()->description);
+			throw ExceptionMessage(ErrorException, _("Error: "), msg);
+		}
 	}
 }
 


More information about the lyx-cvs mailing list