[LyX/master] Add context menu support for \includeonly
Juergen Spitzmueller <[email protected]> Sun, 28 Jun 2026 15:24:18 +0000
| Newsgroups | gmane.editors.lyx.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit b1e84861f8064f138530153cbed50ffd55f12996 Author: Juergen Spitzmueller <[email protected]> Date: Sun Jun 28 17:23:58 2026 +0200 Add context menu support for \includeonly --- lib/ui/stdcontext.inc | 8 ++++++++ src/BufferParams.h | 3 +++ src/insets/InsetInclude.cpp | 22 ++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc index 7af263fbc4..ea6ee5cc28 100644 --- a/lib/ui/stdcontext.inc +++ b/lib/ui/stdcontext.inc @@ -339,6 +339,10 @@ Menuset Item "Settings...|S" "inset-settings" Separator Item "Edit Included File...|E" "inset-edit" + Separator + OptItem "Include this child only|u" "inset-modify includeonly" + OptItem "Included this child|u" "inset-modify addincludeonly" + OptItem "Exclude this child|u" "inset-modify unincludeonly" End # @@ -642,6 +646,10 @@ Menuset Item "Settings...|S" "inset-settings" Separator Item "Edit Included File...|E" "inset-edit" + Separator + OptItem "Include this child only|u" "inset-modify includeonly" + OptItem "Included this child|u" "inset-modify addincludeonly" + OptItem "Exclude this child|u" "inset-modify unincludeonly" End # diff --git a/src/BufferParams.h b/src/BufferParams.h index 2b193cb24f..32ace1e2d5 100644 --- a/src/BufferParams.h +++ b/src/BufferParams.h @@ -227,6 +227,9 @@ public: /// void addIncludedChildren(std::string const & child) { included_children_.push_back(child); } + /// + void removeIncludedChildren(std::string const & child) + { included_children_.remove(child); } /// Clear the list of included children void clearIncludedChildren() { included_children_.clear(); } diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index c3ea5adb06..85d85c815f 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -280,6 +280,19 @@ void InsetInclude::doDispatch(Cursor & cur, FuncRequest & cmd) cur.recordUndo(); InsetCommand::doDispatch(cur, cmd); p = params(); + } else if (cmd.getArg(0) == "includeonly" || cmd.getArg(0) == "addincludeonly") { + cur.recordUndoBufferParams(); + buffer().params().removeIncludedChildren("@none@"); + buffer().params().addIncludedChildren(ltrim(to_utf8(params()["filename"]))); + cur.forceBufferUpdate(); + break; + } else if (cmd.getArg(0) == "unincludeonly") { + cur.recordUndoBufferParams(); + buffer().params().removeIncludedChildren(ltrim(to_utf8(params()["filename"]))); + if (buffer().params().getIncludedChildren().empty()) + buffer().params().addIncludedChildren("@none@"); + cur.forceBufferUpdate(); + break; } else InsetCommand::string2params(to_utf8(cmd.argument()), p); if (!p.getCmdName().empty()) { @@ -362,6 +375,15 @@ bool InsetInclude::getStatus(Cursor & cur, FuncRequest const & cmd, case LFUN_INSET_MODIFY: if (cmd.getArg(0) == "changetype") return InsetCommand::getStatus(cur, cmd, flag); + else if (cmd.getArg(0) == "includeonly") + return type(params()) == INCLUDE + && (buffer().params().getIncludedChildren().empty()); + else if (cmd.getArg(0) == "addincludeonly") + return type(params()) == INCLUDE + && (!isChildIncluded()); + else if (cmd.getArg(0) == "unincludeonly") + return type(params()) == INCLUDE && isChildIncluded() + && !buffer().params().getIncludedChildren().empty(); else flag.setEnabled(true); return true; -- lyx-cvs mailing list [email protected] https://lists.lyx.org/mailman/listinfo/lyx-cvs