[LyX/master] Improve \includeonly support
Juergen Spitzmueller
spitz at lyx.org
Sun Jun 28 14:31:30 UTC 2026
commit b2a896f2f8a363f8928986b5940464b8fd515f50
Author: Juergen Spitzmueller <spitz at lyx.org>
Date: Sun Jun 28 16:30:28 2026 +0200
Improve \includeonly support
It _is_ possible to exclude all (empty \includeonly) as well as to
include all. So let us allow this.
---
src/BufferParams.cpp | 2 ++
src/frontends/qt/GuiDocument.cpp | 37 ++++++++++++-------------------------
src/frontends/qt/GuiDocument.h | 2 +-
3 files changed, 15 insertions(+), 26 deletions(-)
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 88c37e26a4..6e8abdf2ac 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -2432,6 +2432,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
// we do not use "auto const &" here, because incfile is modified later
// coverity[auto_causes_copy]
for (auto incfile : included_children_) {
+ if (incfile == "@none@")
+ continue;
FileName inc = makeAbsPath(incfile, filepath.absFileName());
string mangled = DocFileName(changeExtension(inc.absFileName(), ".tex")).
mangledFileName();
diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp
index 3c8b62050c..f25fa5e572 100644
--- a/src/frontends/qt/GuiDocument.cpp
+++ b/src/frontends/qt/GuiDocument.cpp
@@ -2169,15 +2169,12 @@ void GuiDocument::includeonlyClicked(QTreeWidgetItem * item, int)
if (isChildIncluded(child))
includeonlys_.remove(child);
- else
+ else {
+ includeonlys_.remove("@none@");
includeonlys_.push_back(child);
+ }
- if (int(includeonlys_.size()) == masterChildModule->childrenTW->topLevelItemCount())
- Alert::warning(_("All children selected!"),
- _("If not at least one child is excluded, "
- "this will be reset to 'Include all children' "
- "after application."));
- updateIncludeonlys(false);
+ updateIncludeonlys();
change_adaptor();
}
@@ -3994,9 +3991,13 @@ void GuiDocument::applyView()
bp_.clearIncludedChildren();
updateIncludeonlys();
if (masterChildModule->includeonlyRB->isChecked()) {
- list<string>::const_iterator it = includeonlys_.begin();
- for (; it != includeonlys_.end() ; ++it) {
- bp_.addIncludedChildren(*it);
+ if (includeonlys_.empty())
+ bp_.addIncludedChildren("@none@");
+ else {
+ list<string>::const_iterator it = includeonlys_.begin();
+ for (; it != includeonlys_.end() ; ++it) {
+ bp_.addIncludedChildren(*it);
+ }
}
}
if (masterChildModule->maintainCRNoneRB->isChecked())
@@ -4963,10 +4964,6 @@ void GuiDocument::updateIncludeonlyDisplay()
{
if (includeonlys_.empty()) {
masterChildModule->includeallRB->setChecked(true);
- // Disable "Include selected only" if there is
- // only one to select from
- masterChildModule->includeonlyRB->setEnabled(
- masterChildModule->childrenTW->topLevelItemCount() > 1);
masterChildModule->childrenTW->setEnabled(false);
masterChildModule->maintainGB->setEnabled(false);
} else {
@@ -4977,7 +4974,7 @@ void GuiDocument::updateIncludeonlyDisplay()
}
-void GuiDocument::updateIncludeonlys(bool const cleanup)
+void GuiDocument::updateIncludeonlys()
{
masterChildModule->childrenTW->clear();
QString const no = qt_("No");
@@ -4986,8 +4983,6 @@ void GuiDocument::updateIncludeonlys(bool const cleanup)
ListOfBuffers children = buffer().getChildren();
ListOfBuffers::const_iterator it = children.begin();
ListOfBuffers::const_iterator end = children.end();
- bool has_unincluded = false;
- bool all_unincluded = true;
for (; it != end; ++it) {
QTreeWidgetItem * item = new QTreeWidgetItem(masterChildModule->childrenTW);
// FIXME Unicode
@@ -4996,15 +4991,7 @@ void GuiDocument::updateIncludeonlys(bool const cleanup)
from_utf8(buffer().filePath())));
item->setText(0, toqstr(name));
item->setText(1, isChildIncluded(name) ? yes : no);
- if (!isChildIncluded(name))
- has_unincluded = true;
- else
- all_unincluded = false;
}
- // Both if all children are included and if none is included
- // is equal to "include all" (i.e., omit \includeonly).
- if (cleanup && (!has_unincluded || all_unincluded))
- includeonlys_.clear();
}
diff --git a/src/frontends/qt/GuiDocument.h b/src/frontends/qt/GuiDocument.h
index 686ab5a1ed..d7eae7b632 100644
--- a/src/frontends/qt/GuiDocument.h
+++ b/src/frontends/qt/GuiDocument.h
@@ -232,7 +232,7 @@ private:
///
void updateIncludeonlyDisplay();
///
- void updateIncludeonlys(bool const cleanup = true);
+ void updateIncludeonlys();
///
void updateDefaultBiblio(std::string const & style,
std::string const & which = std::string());
More information about the lyx-cvs
mailing list