commit b89c8451e1e83e955e7c4c0e5f389eb63667eba4 Author: Juergen Spitzmueller <sp...@lyx.org> Date: Sun Mar 2 18:27:54 2025 +0100
Better way to work around MSVC compiler limit (number of allowed else clauses) Use while loop and break if a condition is met --- src/BufferParams.cpp | 1255 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 749 insertions(+), 506 deletions(-) diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 4955a61445..77fbab1f40 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -778,527 +778,770 @@ string BufferParams::readToken(Lexer & lex, string const & token, string result; FileName const & filepath = filename.onlyPath(); - if (token == "\\textclass") { - lex.next(); - string const classname = lex.getString(); - // if there exists a local layout file, ignore the system one - // NOTE: in this case, the textclass (.cls file) is assumed to - // be available. - string tcp; - LayoutFileList & bcl = LayoutFileList::get(); - if (!filepath.empty()) { - // If classname is an absolute path, the document is - // using a local layout file which could not be accessed - // by a relative path. In this case the path is correct - // even if the document was moved to a different - // location. However, we will have a problem if the - // document was generated on a different platform. - bool isabsolute = FileName::isAbsolute(classname); - string const classpath = onlyPath(classname); - string const path = isabsolute ? classpath - : FileName(addPath(filepath.absFileName(), - classpath)).realPath(); - string const oldpath = isabsolute ? string() - : FileName(addPath(origin, classpath)).realPath(); - tcp = bcl.addLocalLayout(onlyFileName(classname), path, oldpath); - } - // that returns non-empty if a "local" layout file is found. - if (!tcp.empty()) { - result = to_utf8(makeRelPath(from_utf8(onlyPath(tcp)), - from_utf8(filepath.absFileName()))); - if (result.empty()) - result = "."; - setBaseClass(onlyFileName(tcp)); - } else - setBaseClass(onlyFileName(classname)); - // We assume that a tex class exists for local or unknown - // layouts so this warning, will only be given for system layouts. - if (!baseClass()->isTeXClassAvailable()) { - docstring const desc = - translateIfPossible(from_utf8(baseClass()->description())); - docstring const prereqs = - from_utf8(baseClass()->prerequisites()); - docstring const msg = - bformat(_("The selected document class\n" - "\t%1$s\n" - "requires external files that are not available.\n" - "The document class can still be used, but the\n" - "document cannot be compiled until the following\n" - "prerequisites are installed:\n" - "\t%2$s\n" - "See section 3.1.2.2 (Class Availability) of the\n" - "User's Guide for more information."), desc, prereqs); - frontend::Alert::warning(_("Document class not available"), - msg, true); - } - } else if (token == "\\save_transient_properties") { - lex >> save_transient_properties; - } else if (token == "\\origin") { - lex.eatLine(); - origin = lex.getString(); - string const sysdirprefix = "/systemlyxdir/"; - if (prefixIs(origin, sysdirprefix)) { - string docsys; - if (inSystemDir(filepath, docsys)) - origin.replace(0, sysdirprefix.length() - 1, docsys); - else - origin.replace(0, sysdirprefix.length() - 1, - package().system_support().absFileName()); - } - } else if (token == "\\begin_metadata") { - readDocumentMetadata(lex); - } else if (token == "\\begin_preamble") { - readPreamble(lex); - } else if (token == "\\begin_local_layout") { - readLocalLayout(lex, false); - } else if (token == "\\begin_forced_local_layout") { - readLocalLayout(lex, true); - } else if (token == "\\begin_modules") { - readModules(lex); - } else if (token == "\\begin_removed_modules") { - readRemovedModules(lex); - } else if (token == "\\begin_includeonly") { - readIncludeonly(lex); - } else if (token == "\\maintain_unincluded_children") { - string tmp; - lex >> tmp; - if (tmp == "no") - maintain_unincluded_children = CM_None; - else if (tmp == "mostly") - maintain_unincluded_children = CM_Mostly; - else if (tmp == "strict") - maintain_unincluded_children = CM_Strict; - } else if (token == "\\options") { - lex.eatLine(); - options = lex.getString(); - } else if (token == "\\use_default_options") { - lex >> use_default_options; - } else if (token == "\\master") { - lex.eatLine(); - master = lex.getString(); - if (!filepath.empty() && FileName::isAbsolute(origin)) { - bool const isabs = FileName::isAbsolute(master); - FileName const abspath(isabs ? master : origin + master); - bool const moved = filepath != FileName(origin); - if (moved && abspath.exists()) { - docstring const path = isabs - ? from_utf8(master) - : from_utf8(abspath.realPath()); - docstring const refpath = - from_utf8(filepath.absFileName()); - master = to_utf8(makeRelPath(path, refpath)); + while (true) { + if (token == "\\textclass") { + lex.next(); + string const classname = lex.getString(); + // if there exists a local layout file, ignore the system one + // NOTE: in this case, the textclass (.cls file) is assumed to + // be available. + string tcp; + LayoutFileList & bcl = LayoutFileList::get(); + if (!filepath.empty()) { + // If classname is an absolute path, the document is + // using a local layout file which could not be accessed + // by a relative path. In this case the path is correct + // even if the document was moved to a different + // location. However, we will have a problem if the + // document was generated on a different platform. + bool isabsolute = FileName::isAbsolute(classname); + string const classpath = onlyPath(classname); + string const path = isabsolute ? classpath + : FileName(addPath(filepath.absFileName(), + classpath)).realPath(); + string const oldpath = isabsolute ? string() + : FileName(addPath(origin, classpath)).realPath(); + tcp = bcl.addLocalLayout(onlyFileName(classname), path, oldpath); } + // that returns non-empty if a "local" layout file is found. + if (!tcp.empty()) { + result = to_utf8(makeRelPath(from_utf8(onlyPath(tcp)), + from_utf8(filepath.absFileName()))); + if (result.empty()) + result = "."; + setBaseClass(onlyFileName(tcp)); + } else + setBaseClass(onlyFileName(classname)); + // We assume that a tex class exists for local or unknown + // layouts so this warning, will only be given for system layouts. + if (!baseClass()->isTeXClassAvailable()) { + docstring const desc = + translateIfPossible(from_utf8(baseClass()->description())); + docstring const prereqs = + from_utf8(baseClass()->prerequisites()); + docstring const msg = + bformat(_("The selected document class\n" + "\t%1$s\n" + "requires external files that are not available.\n" + "The document class can still be used, but the\n" + "document cannot be compiled until the following\n" + "prerequisites are installed:\n" + "\t%2$s\n" + "See section 3.1.2.2 (Class Availability) of the\n" + "User's Guide for more information."), desc, prereqs); + frontend::Alert::warning(_("Document class not available"), + msg, true); + } + break; } - } else if (token == "\\suppress_date") { - lex >> suppress_date; - } else if (token == "\\justification") { - lex >> justification; - } else if (token == "\\language") { - readLanguage(lex); - } else if (token == "\\language_package") { - lex.eatLine(); - lang_package = lex.getString(); - } else if (token == "\\language_options_babel") { - string lang; - lex >> lang; - lex.eatLine(); - string const opts = lex.getString(); - lang_options_babel_[lang] = trim(opts, "\""); - } else if (token == "\\language_options_polyglossia") { - string lang; - lex >> lang; - lex.eatLine(); - string const opts = lex.getString(); - lang_options_polyglossia_[lang] = trim(opts, "\""); - } else if (token == "\\inputencoding") { - lex >> inputenc; - } else if (token == "\\graphics") { - readGraphicsDriver(lex); - } else if (token == "\\default_output_format") { - lex >> default_output_format; - } else if (token == "\\bibtex_command") { - lex.eatLine(); - bibtex_command = lex.getString(); - } else if (token == "\\index_command") { - lex.eatLine(); - index_command = lex.getString(); - } else if (token == "\\fontencoding") { - lex.eatLine(); - fontenc = lex.getString(); - } else if (token == "\\font_roman") { - lex >> fonts_roman[0]; - lex >> fonts_roman[1]; - } else if (token == "\\font_sans") { - lex >> fonts_sans[0]; - lex >> fonts_sans[1]; - } else if (token == "\\font_typewriter") { - lex >> fonts_typewriter[0]; - lex >> fonts_typewriter[1]; - } else if (token == "\\font_math") { - lex >> fonts_math[0]; - lex >> fonts_math[1]; - } else if (token == "\\font_default_family") { - lex >> fonts_default_family; - } else if (token == "\\use_non_tex_fonts") { - lex >> useNonTeXFonts; - } else if (token == "\\font_sc") { - lex >> fonts_expert_sc; - } else if (token == "\\font_roman_osf") { - lex >> fonts_roman_osf; - } else if (token == "\\font_sans_osf") { - lex >> fonts_sans_osf; - } else if (token == "\\font_typewriter_osf") { - lex >> fonts_typewriter_osf; - } else if (token == "\\font_roman_opts") { - lex >> font_roman_opts; - } else if (token == "\\font_sf_scale") { - lex >> fonts_sans_scale[0]; - lex >> fonts_sans_scale[1]; - } else if (token == "\\font_sans_opts") { - lex >> font_sans_opts; - } else if (token == "\\font_tt_scale") { - lex >> fonts_typewriter_scale[0]; - lex >> fonts_typewriter_scale[1]; - } else if (token == "\\font_typewriter_opts") { - lex >> font_typewriter_opts; - } else if (token == "\\font_cjk") { - lex >> fonts_cjk; - } else if (token == "\\use_microtype") { - lex >> use_microtype; - } else if (token == "\\use_dash_ligatures") { - lex >> use_dash_ligatures; - } else if (token == "\\paragraph_separation") { - string parsep; - lex >> parsep; - paragraph_separation = parseptranslator().find(parsep); - } else if (token == "\\paragraph_indentation") { - lex.next(); - string parindent = lex.getString(); - if (parindent == "default") - pimpl_->parindent = Length(); - else - pimpl_->parindent = Length(parindent); - } else if (token == "\\defskip") { - lex.next(); - string const defskip = lex.getString(); - pimpl_->defskip = VSpace(defskip); - if (pimpl_->defskip.kind() == VSpace::DEFSKIP) - // that is invalid - pimpl_->defskip = VSpace(VSpace::MEDSKIP); - } else if (token == "\\is_math_indent") { - lex >> is_math_indent; - } else if (token == "\\math_indentation") { - lex.next(); - string mathindent = lex.getString(); - if (mathindent == "default") - pimpl_->mathindent = Length(); - else - pimpl_->mathindent = Length(mathindent); - } else if (token == "\\math_numbering_side") { - string tmp; - lex >> tmp; - if (tmp == "left") - math_numbering_side = LEFT; - else if (tmp == "right") - math_numbering_side = RIGHT; - else - math_numbering_side = DEFAULT; - } else if (token == "\\quotes_style") { - string qstyle; - lex >> qstyle; - quotes_style = quotesstyletranslator().find(qstyle); - } else if (token == "\\dynamic_quotes") { - lex >> dynamic_quotes; - } else if (token == "\\papersize") { - string ppsize; - lex >> ppsize; - papersize = papersizetranslator().find(ppsize); - } - // Start a new chain of conditions to keep MSVC happy. - if (token == "\\use_geometry") { - lex >> use_geometry; - } else if (token == "\\use_package") { - string package; - int use; - lex >> package; - lex >> use; - use_package(package, packagetranslator().find(use)); - } else if (token == "\\cite_engine") { - lex.eatLine(); - cite_engine_ = lex.getString(); - } else if (token == "\\cite_engine_type") { - string engine_type; - lex >> engine_type; - cite_engine_type_ = theCiteEnginesList.getType(engine_type); - } else if (token == "\\biblio_style") { - lex.eatLine(); - biblio_style = lex.getString(); - } else if (token == "\\biblio_options") { - lex.eatLine(); - biblio_opts = trim(lex.getString()); - } else if (token == "\\biblatex_bibstyle") { - lex.eatLine(); - biblatex_bibstyle = trim(lex.getString()); - } else if (token == "\\biblatex_citestyle") { - lex.eatLine(); - biblatex_citestyle = trim(lex.getString()); - } else if (token == "\\use_bibtopic") { - lex >> use_bibtopic; - } else if (token == "\\multibib") { - lex >> multibib; - } else if (token == "\\use_indices") { - lex >> use_indices; - } else if (token == "\\tracking_changes") { - lex >> track_changes; - } else if (token == "\\output_changes") { - lex >> output_changes; - } else if (token == "\\change_bars") { - lex >> change_bars; - } else if (token == "\\postpone_fragile_content") { - lex >> postpone_fragile_content; - } else if (token == "\\branch") { - lex.eatLine(); - docstring branch = lex.getDocString(); - branchlist().add(branch); - while (true) { + if (token == "\\save_transient_properties") { + lex >> save_transient_properties; + break; + } + if (token == "\\origin") { + lex.eatLine(); + origin = lex.getString(); + string const sysdirprefix = "/systemlyxdir/"; + if (prefixIs(origin, sysdirprefix)) { + string docsys; + if (inSystemDir(filepath, docsys)) + origin.replace(0, sysdirprefix.length() - 1, docsys); + else + origin.replace(0, sysdirprefix.length() - 1, + package().system_support().absFileName()); + } + break; + } + if (token == "\\begin_metadata") { + readDocumentMetadata(lex); + break; + } + if (token == "\\begin_preamble") { + readPreamble(lex); + break; + } + if (token == "\\begin_local_layout") { + readLocalLayout(lex, false); + break; + } + if (token == "\\begin_forced_local_layout") { + readLocalLayout(lex, true); + break; + } + if (token == "\\begin_modules") { + readModules(lex); + break; + } + if (token == "\\begin_removed_modules") { + readRemovedModules(lex); + break; + } + if (token == "\\begin_includeonly") { + readIncludeonly(lex); + break; + } + if (token == "\\maintain_unincluded_children") { + string tmp; + lex >> tmp; + if (tmp == "no") + maintain_unincluded_children = CM_None; + else if (tmp == "mostly") + maintain_unincluded_children = CM_Mostly; + else if (tmp == "strict") + maintain_unincluded_children = CM_Strict; + break; + } + if (token == "\\options") { + lex.eatLine(); + options = lex.getString(); + break; + } + if (token == "\\use_default_options") { + lex >> use_default_options; + break; + } + if (token == "\\master") { + lex.eatLine(); + master = lex.getString(); + if (!filepath.empty() && FileName::isAbsolute(origin)) { + bool const isabs = FileName::isAbsolute(master); + FileName const abspath(isabs ? master : origin + master); + bool const moved = filepath != FileName(origin); + if (moved && abspath.exists()) { + docstring const path = isabs + ? from_utf8(master) + : from_utf8(abspath.realPath()); + docstring const refpath = + from_utf8(filepath.absFileName()); + master = to_utf8(makeRelPath(path, refpath)); + } + } + break; + } + if (token == "\\suppress_date") { + lex >> suppress_date; + break; + } + if (token == "\\justification") { + lex >> justification; + break; + } + if (token == "\\language") { + readLanguage(lex); + break; + } + if (token == "\\language_package") { + lex.eatLine(); + lang_package = lex.getString(); + break; + } + if (token == "\\language_options_babel") { + string lang; + lex >> lang; + lex.eatLine(); + string const opts = lex.getString(); + lang_options_babel_[lang] = trim(opts, "\""); + break; + } + if (token == "\\language_options_polyglossia") { + string lang; + lex >> lang; + lex.eatLine(); + string const opts = lex.getString(); + lang_options_polyglossia_[lang] = trim(opts, "\""); + break; + } + if (token == "\\inputencoding") { + lex >> inputenc; + break; + } + if (token == "\\graphics") { + readGraphicsDriver(lex); + break; + } + if (token == "\\default_output_format") { + lex >> default_output_format; + break; + } + if (token == "\\bibtex_command") { + lex.eatLine(); + bibtex_command = lex.getString(); + break; + } + if (token == "\\index_command") { + lex.eatLine(); + index_command = lex.getString(); + break; + } + if (token == "\\fontencoding") { + lex.eatLine(); + fontenc = lex.getString(); + break; + } + if (token == "\\font_roman") { + lex >> fonts_roman[0]; + lex >> fonts_roman[1]; + break; + } + if (token == "\\font_sans") { + lex >> fonts_sans[0]; + lex >> fonts_sans[1]; + break; + } + if (token == "\\font_typewriter") { + lex >> fonts_typewriter[0]; + lex >> fonts_typewriter[1]; + break; + } + if (token == "\\font_math") { + lex >> fonts_math[0]; + lex >> fonts_math[1]; + break; + } + if (token == "\\font_default_family") { + lex >> fonts_default_family; + break; + } + if (token == "\\use_non_tex_fonts") { + lex >> useNonTeXFonts; + break; + } + if (token == "\\font_sc") { + lex >> fonts_expert_sc; + break; + } + if (token == "\\font_roman_osf") { + lex >> fonts_roman_osf; + break; + } + if (token == "\\font_sans_osf") { + lex >> fonts_sans_osf; + break; + } + if (token == "\\font_typewriter_osf") { + lex >> fonts_typewriter_osf; + break; + } + if (token == "\\font_roman_opts") { + lex >> font_roman_opts; + break; + } + if (token == "\\font_sf_scale") { + lex >> fonts_sans_scale[0]; + lex >> fonts_sans_scale[1]; + break; + } + if (token == "\\font_sans_opts") { + lex >> font_sans_opts; + break; + } + if (token == "\\font_tt_scale") { + lex >> fonts_typewriter_scale[0]; + lex >> fonts_typewriter_scale[1]; + break; + } + if (token == "\\font_typewriter_opts") { + lex >> font_typewriter_opts; + break; + } + if (token == "\\font_cjk") { + lex >> fonts_cjk; + break; + } + if (token == "\\use_microtype") { + lex >> use_microtype; + break; + } + if (token == "\\use_dash_ligatures") { + lex >> use_dash_ligatures; + break; + } + if (token == "\\paragraph_separation") { + string parsep; + lex >> parsep; + paragraph_separation = parseptranslator().find(parsep); + break; + } + if (token == "\\paragraph_indentation") { lex.next(); - string const tok = lex.getString(); - if (tok == "\\end_branch") - break; - Branch * branch_ptr = branchlist().find(branch); - if (tok == "\\selected") { + string parindent = lex.getString(); + if (parindent == "default") + pimpl_->parindent = Length(); + else + pimpl_->parindent = Length(parindent); + break; + } + if (token == "\\defskip") { + lex.next(); + string const defskip = lex.getString(); + pimpl_->defskip = VSpace(defskip); + if (pimpl_->defskip.kind() == VSpace::DEFSKIP) + // that is invalid + pimpl_->defskip = VSpace(VSpace::MEDSKIP); + break; + } + if (token == "\\is_math_indent") { + lex >> is_math_indent; + break; + } + if (token == "\\math_indentation") { + lex.next(); + string mathindent = lex.getString(); + if (mathindent == "default") + pimpl_->mathindent = Length(); + else + pimpl_->mathindent = Length(mathindent); + break; + } + if (token == "\\math_numbering_side") { + string tmp; + lex >> tmp; + if (tmp == "left") + math_numbering_side = LEFT; + else if (tmp == "right") + math_numbering_side = RIGHT; + else + math_numbering_side = DEFAULT; + break; + } + if (token == "\\quotes_style") { + string qstyle; + lex >> qstyle; + quotes_style = quotesstyletranslator().find(qstyle); + break; + } + if (token == "\\dynamic_quotes") { + lex >> dynamic_quotes; + break; + } + if (token == "\\papersize") { + string ppsize; + lex >> ppsize; + papersize = papersizetranslator().find(ppsize); + break; + } + if (token == "\\use_geometry") { + lex >> use_geometry; + break; + } + if (token == "\\use_package") { + string package; + int use; + lex >> package; + lex >> use; + use_package(package, packagetranslator().find(use)); + break; + } + if (token == "\\cite_engine") { + lex.eatLine(); + cite_engine_ = lex.getString(); + break; + } + if (token == "\\cite_engine_type") { + string engine_type; + lex >> engine_type; + cite_engine_type_ = theCiteEnginesList.getType(engine_type); + break; + } + if (token == "\\biblio_style") { + lex.eatLine(); + biblio_style = lex.getString(); + break; + } + if (token == "\\biblio_options") { + lex.eatLine(); + biblio_opts = trim(lex.getString()); + break; + } + if (token == "\\biblatex_bibstyle") { + lex.eatLine(); + biblatex_bibstyle = trim(lex.getString()); + break; + } + if (token == "\\biblatex_citestyle") { + lex.eatLine(); + biblatex_citestyle = trim(lex.getString()); + break; + } + if (token == "\\use_bibtopic") { + lex >> use_bibtopic; + break; + } + if (token == "\\multibib") { + lex >> multibib; + break; + } + if (token == "\\use_indices") { + lex >> use_indices; + break; + } + if (token == "\\tracking_changes") { + lex >> track_changes; + break; + } + if (token == "\\output_changes") { + lex >> output_changes; + break; + } + if (token == "\\change_bars") { + lex >> change_bars; + break; + } + if (token == "\\postpone_fragile_content") { + lex >> postpone_fragile_content; + break; + } + if (token == "\\branch") { + lex.eatLine(); + docstring branch = lex.getDocString(); + branchlist().add(branch); + while (true) { lex.next(); - if (branch_ptr) - branch_ptr->setSelected(lex.getInteger()); + string const tok = lex.getString(); + if (tok == "\\end_branch") + break; + Branch * branch_ptr = branchlist().find(branch); + if (tok == "\\selected") { + lex.next(); + if (branch_ptr) + branch_ptr->setSelected(lex.getInteger()); + } + if (tok == "\\filename_suffix") { + lex.next(); + if (branch_ptr) + branch_ptr->setFileNameSuffix(lex.getInteger()); + } + if (tok == "\\color") { + lex.eatLine(); + vector<string> const colors = getVectorFromString(lex.getString(), " "); + string const lmcolor = colors.front(); + string dmcolor; + if (colors.size() > 1) + dmcolor = colors.back(); + if (branch_ptr) + branch_ptr->setColors(lmcolor, dmcolor); + } } - if (tok == "\\filename_suffix") { + break; + } + if (token == "\\index") { + lex.eatLine(); + docstring index = lex.getDocString(); + docstring shortcut; + indiceslist().add(index); + while (true) { lex.next(); - if (branch_ptr) - branch_ptr->setFileNameSuffix(lex.getInteger()); - } - if (tok == "\\color") { - lex.eatLine(); - vector<string> const colors = getVectorFromString(lex.getString(), " "); - string const lmcolor = colors.front(); - string dmcolor; - if (colors.size() > 1) - dmcolor = colors.back(); - if (branch_ptr) - branch_ptr->setColors(lmcolor, dmcolor); + string const tok = lex.getString(); + if (tok == "\\end_index") + break; + Index * index_ptr = indiceslist().find(index); + if (tok == "\\shortcut") { + lex.next(); + shortcut = lex.getDocString(); + if (index_ptr) + index_ptr->setShortcut(shortcut); + } + if (tok == "\\color") { + lex.eatLine(); + string color = lex.getString(); + if (index_ptr) + index_ptr->setColor(color); + // Update also the Color table: + if (color == "none") + color = lcolor.getX11HexName(Color_background); + // FIXME UNICODE + if (!shortcut.empty()) + lcolor.setColor(to_utf8(shortcut)+ "@" + filename.absFileName(), color); + } } + break; } - } else if (token == "\\index") { - lex.eatLine(); - docstring index = lex.getDocString(); - docstring shortcut; - indiceslist().add(index); - while (true) { - lex.next(); - string const tok = lex.getString(); - if (tok == "\\end_index") - break; - Index * index_ptr = indiceslist().find(index); - if (tok == "\\shortcut") { - lex.next(); - shortcut = lex.getDocString(); - if (index_ptr) - index_ptr->setShortcut(shortcut); + if (token == "\\spellchecker_ignore") { + lex.eatLine(); + docstring wl = lex.getDocString(); + docstring language; + docstring word = split(wl, language, ' '); + Language const * lang = languages.getLanguage(to_ascii(language)); + if (lang) + spellignore().push_back(WordLangTuple(word, lang)); + break; + } + if (token == "\\author") { + lex.eatLine(); + istringstream ss(lex.getString()); + Author a; + ss >> a; + addAuthor(a); + break; + } + if (token == "\\paperorientation") { + string orient; + lex >> orient; + orientation = paperorientationtranslator().find(orient); + break; + } + if (token == "\\backgroundcolor") { + lex.eatLine(); + backgroundcolor = lex.getString(); + registerLyXColor("backgroundcolor", backgroundcolor); + break; + } + if (token == "\\fontcolor") { + lex.eatLine(); + fontcolor = lex.getString(); + registerLyXColor("fontcolor", fontcolor); + break; + } + if (token == "\\notefontcolor") { + lex.eatLine(); + notefontcolor = lex.getString(); + registerLyXColor("notefontcolor", notefontcolor); + // set a local name for the painter + lcolor.setColor("notefontcolor@" + filename.absFileName(), + lcolor.getX11HexName(notefontcolor)); + break; + } + if (token == "\\boxbgcolor") { + lex.eatLine(); + boxbgcolor = lex.getString(); + registerLyXColor("boxbgcolor", boxbgcolor); + // set a local name for the painter + lcolor.setColor("boxbgcolor@" + filename.absFileName(), + lcolor.getX11HexName(boxbgcolor)); + break; + } + if (token == "\\table_border_color") { + lex.eatLine(); + table_border_color = lex.getString(); + if (table_border_color != "default") + registerLyXColor("table_border_color", table_border_color); + break; + } + if (token == "\\table_odd_row_color") { + lex.eatLine(); + table_odd_row_color = lex.getString(); + if (table_odd_row_color != "default") + registerLyXColor("table_odd_row_color", table_odd_row_color); + break; + } + if (token == "\\table_even_row_color") { + lex.eatLine(); + table_even_row_color = lex.getString(); + if (table_even_row_color != "default") + registerLyXColor("table_even_row_color", table_even_row_color); + break; + } + if (token == "\\table_alt_row_colors_start") { + lex >> table_alt_row_colors_start; + break; + } + if (token == "\\customcolor") { + string name; + lex >> name;; + string value; + lex >> value; + custom_colors[name] = "#" + value; + lcolor.setColor(name, "#" + value); + lcolor.setLaTeXName(name, name); + lcolor.setGUIName(name, name); + break; + } + if (token == "\\paperwidth") { + lex >> paperwidth; + break; + } + if (token == "\\paperheight") { + lex >> paperheight; + break; + } + if (token == "\\leftmargin") { + lex >> leftmargin; + break; + } + if (token == "\\topmargin") { + lex >> topmargin; + break; + } + if (token == "\\rightmargin") { + lex >> rightmargin; + break; + } + if (token == "\\bottommargin") { + lex >> bottommargin; + break; + } + if (token == "\\headheight") { + lex >> headheight; + break; + } + if (token == "\\headsep") { + lex >> headsep; + break; + } + if (token == "\\footskip") { + lex >> footskip; + break; + } + if (token == "\\columnsep") { + lex >> columnsep; + break; + } + if (token == "\\paperfontsize") { + lex >> fontsize; + break; + } + if (token == "\\papercolumns") { + lex >> columns; + break; + } + if (token == "\\listings_params") { + string par; + lex >> par; + listings_params = InsetListingsParams(par).params(); + break; + } + if (token == "\\papersides") { + int psides; + lex >> psides; + sides = sidestranslator().find(psides); + break; + } + if (token == "\\paperpagestyle") { + lex >> pagestyle; + break; + } + if (token == "\\tablestyle") { + lex >> tablestyle; + break; + } + if (token == "\\bullet") { + readBullets(lex); + break; + } + if (token == "\\bulletLaTeX") { + readBulletsLaTeX(lex); + break; + } + if (token == "\\secnumdepth") { + lex >> secnumdepth; + break; + } + if (token == "\\tocdepth") { + lex >> tocdepth; + break; + } + if (token == "\\spacing") { + string nspacing; + lex >> nspacing; + string tmp_val; + if (nspacing == "other") { + lex >> tmp_val; } - if (tok == "\\color") { - lex.eatLine(); - string color = lex.getString(); - if (index_ptr) - index_ptr->setColor(color); - // Update also the Color table: - if (color == "none") - color = lcolor.getX11HexName(Color_background); - // FIXME UNICODE - if (!shortcut.empty()) - lcolor.setColor(to_utf8(shortcut)+ "@" + filename.absFileName(), color); + spacing().set(spacetranslator().find(nspacing), tmp_val); + break; + } + if (token == "\\float_placement") { + lex >> float_placement; + break; + } + if (token == "\\float_alignment") { + lex >> float_alignment; + break; + + } + if (prefixIs(token, "\\pdf_") || token == "\\use_hyperref") { + string toktmp = pdfoptions().readToken(lex, token); + if (!toktmp.empty()) { + lyxerr << "PDFOptions::readToken(): Unknown token: " << + toktmp << endl; + return toktmp; } + break; + } + if (token == "\\html_math_output") { + int temp; + lex >> temp; + html_math_output = static_cast<MathOutput>(temp); + break; + } + if (token == "\\html_be_strict") { + lex >> html_be_strict; + break; + } + if (token == "\\html_css_as_file") { + lex >> html_css_as_file; + break; + } + if (token == "\\html_math_img_scale") { + lex >> html_math_img_scale; + break; + } + if (token == "\\html_latex_start") { + lex.eatLine(); + html_latex_start = lex.getString(); + break; + } + if (token == "\\html_latex_end") { + lex.eatLine(); + html_latex_end = lex.getString(); + break; + } + if (token == "\\docbook_table_output") { + int temp; + lex >> temp; + docbook_table_output = static_cast<TableOutput>(temp); + break; + } + if (token == "\\docbook_mathml_prefix") { + int temp; + lex >> temp; + docbook_mathml_prefix = static_cast<MathMLNameSpacePrefix>(temp); + break; + } + if (token == "\\docbook_mathml_version") { + int temp; + lex >> temp; + docbook_mathml_version = static_cast<MathMLVersion>(temp); + break; + } + if (token == "\\output_sync") { + lex >> output_sync; + break; + } + if (token == "\\output_sync_macro") { + lex >> output_sync_macro; + break; + } + if (token == "\\use_refstyle") { + lex >> use_refstyle; + break; + } + if (token == "\\use_formatted_ref") { + lex >> use_formatted_ref; + break; + } + if (token == "\\use_minted") { + lex >> use_minted; + break; + } + if (token == "\\nomencl_options") { + lex.eatLine(); + nomencl_opts = trim(lex.getString()); + break; + } + if (token == "\\use_lineno") { + lex >> use_lineno; + break; + } + if (token == "\\lineno_options") { + lex.eatLine(); + lineno_opts = trim(lex.getString()); + break; } - } else if (token == "\\spellchecker_ignore") { - lex.eatLine(); - docstring wl = lex.getDocString(); - docstring language; - docstring word = split(wl, language, ' '); - Language const * lang = languages.getLanguage(to_ascii(language)); - if (lang) - spellignore().push_back(WordLangTuple(word, lang)); - } else if (token == "\\author") { - lex.eatLine(); - istringstream ss(lex.getString()); - Author a; - ss >> a; - addAuthor(a); - } else if (token == "\\paperorientation") { - string orient; - lex >> orient; - orientation = paperorientationtranslator().find(orient); - } else if (token == "\\backgroundcolor") { - lex.eatLine(); - backgroundcolor = lex.getString(); - registerLyXColor("backgroundcolor", backgroundcolor); - } else if (token == "\\fontcolor") { - lex.eatLine(); - fontcolor = lex.getString(); - registerLyXColor("fontcolor", fontcolor); - } else if (token == "\\notefontcolor") { - lex.eatLine(); - notefontcolor = lex.getString(); - registerLyXColor("notefontcolor", notefontcolor); - // set a local name for the painter - lcolor.setColor("notefontcolor@" + filename.absFileName(), - lcolor.getX11HexName(notefontcolor)); - } else if (token == "\\boxbgcolor") { - lex.eatLine(); - boxbgcolor = lex.getString(); - registerLyXColor("boxbgcolor", boxbgcolor); - // set a local name for the painter - lcolor.setColor("boxbgcolor@" + filename.absFileName(), - lcolor.getX11HexName(boxbgcolor)); - } else if (token == "\\table_border_color") { - lex.eatLine(); - table_border_color = lex.getString(); - if (table_border_color != "default") - registerLyXColor("table_border_color", table_border_color); - } else if (token == "\\table_odd_row_color") { - lex.eatLine(); - table_odd_row_color = lex.getString(); - if (table_odd_row_color != "default") - registerLyXColor("table_odd_row_color", table_odd_row_color); - } else if (token == "\\table_even_row_color") { - lex.eatLine(); - table_even_row_color = lex.getString(); - if (table_even_row_color != "default") - registerLyXColor("table_even_row_color", table_even_row_color); - } else if (token == "\\table_alt_row_colors_start") { - lex >> table_alt_row_colors_start; - } else if (token == "\\customcolor") { - string name; - lex >> name;; - string value; - lex >> value; - custom_colors[name] = "#" + value; - lcolor.setColor(name, "#" + value); - lcolor.setLaTeXName(name, name); - lcolor.setGUIName(name, name); - } else if (token == "\\paperwidth") { - lex >> paperwidth; - } else if (token == "\\paperheight") { - lex >> paperheight; - } else if (token == "\\leftmargin") { - lex >> leftmargin; - } else if (token == "\\topmargin") { - lex >> topmargin; - } else if (token == "\\rightmargin") { - lex >> rightmargin; - } else if (token == "\\bottommargin") { - lex >> bottommargin; - } else if (token == "\\headheight") { - lex >> headheight; - } else if (token == "\\headsep") { - lex >> headsep; - } else if (token == "\\footskip") { - lex >> footskip; - } else if (token == "\\columnsep") { - lex >> columnsep; - } else if (token == "\\paperfontsize") { - lex >> fontsize; - } else if (token == "\\papercolumns") { - lex >> columns; - } else if (token == "\\listings_params") { - string par; - lex >> par; - listings_params = InsetListingsParams(par).params(); - } else if (token == "\\papersides") { - int psides; - lex >> psides; - sides = sidestranslator().find(psides); - } else if (token == "\\paperpagestyle") { - lex >> pagestyle; - } else if (token == "\\tablestyle") { - lex >> tablestyle; - } else if (token == "\\bullet") { - readBullets(lex); - } else if (token == "\\bulletLaTeX") { - readBulletsLaTeX(lex); - } else if (token == "\\secnumdepth") { - lex >> secnumdepth; - } else if (token == "\\tocdepth") { - lex >> tocdepth; - } else if (token == "\\spacing") { - string nspacing; - lex >> nspacing; - string tmp_val; - if (nspacing == "other") { - lex >> tmp_val; - } - spacing().set(spacetranslator().find(nspacing), tmp_val); - } else if (token == "\\float_placement") { - lex >> float_placement; - } else if (token == "\\float_alignment") { - lex >> float_alignment; - - } else if (prefixIs(token, "\\pdf_") || token == "\\use_hyperref") { - string toktmp = pdfoptions().readToken(lex, token); - if (!toktmp.empty()) { - lyxerr << "PDFOptions::readToken(): Unknown token: " << - toktmp << endl; - return toktmp; - } - } else if (token == "\\html_math_output") { - int temp; - lex >> temp; - html_math_output = static_cast<MathOutput>(temp); - } else if (token == "\\html_be_strict") { - lex >> html_be_strict; - } else if (token == "\\html_css_as_file") { - lex >> html_css_as_file; - } else if (token == "\\html_math_img_scale") { - lex >> html_math_img_scale; - } else if (token == "\\html_latex_start") { - lex.eatLine(); - html_latex_start = lex.getString(); - } else if (token == "\\html_latex_end") { - lex.eatLine(); - html_latex_end = lex.getString(); - } else if (token == "\\docbook_table_output") { - int temp; - lex >> temp; - docbook_table_output = static_cast<TableOutput>(temp); - } else if (token == "\\docbook_mathml_prefix") { - int temp; - lex >> temp; - docbook_mathml_prefix = static_cast<MathMLNameSpacePrefix>(temp); - } else if (token == "\\docbook_mathml_version") { - int temp; - lex >> temp; - docbook_mathml_version = static_cast<MathMLVersion>(temp); - } else if (token == "\\output_sync") { - lex >> output_sync; - } else if (token == "\\output_sync_macro") { - lex >> output_sync_macro; - } else if (token == "\\use_refstyle") { - lex >> use_refstyle; - } else if (token == "\\use_formatted_ref") { - lex >> use_formatted_ref; - } else if (token == "\\use_minted") { - lex >> use_minted; - } else if (token == "\\nomencl_options") { - lex.eatLine(); - nomencl_opts = trim(lex.getString()); - } else if (token == "\\use_lineno") { - lex >> use_lineno; - } else if (token == "\\lineno_options") { - lex.eatLine(); - lineno_opts = trim(lex.getString()); - } else { lyxerr << "BufferParams::readToken(): Unknown token: " << token << endl; return token; } - return result; } -- lyx-cvs mailing list lyx-cvs@lists.lyx.org https://lists.lyx.org/mailman/listinfo/lyx-cvs