mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-28 03:50:00 +00:00
Add IsAutoNestedBy
This is complementary to AutoNests: Styles can determine which other style should auto-nest them. This is particularly useful for modules that add new styles which should be auto-nested in a given context.
This commit is contained in:
parent
d6fb2abbea
commit
f3b89e4c72
@ -12163,7 +12163,7 @@ Argument item:1
|
|||||||
\end_deeper
|
\end_deeper
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
|
|
||||||
\change_inserted -712698321 1514534780
|
\change_inserted -712698321 1514539256
|
||||||
\begin_inset Flex Code
|
\begin_inset Flex Code
|
||||||
status collapsed
|
status collapsed
|
||||||
|
|
||||||
@ -12177,7 +12177,8 @@ AutoNests
|
|||||||
|
|
||||||
Includes a comma-separated list of layout names that should be nested in
|
Includes a comma-separated list of layout names that should be nested in
|
||||||
and after the current one.
|
and after the current one.
|
||||||
Only makes sense for nestable layouts (such as environments)
|
Only makes sense for nestable layouts (such as environments).
|
||||||
|
Must be ended by
|
||||||
\begin_inset Quotes eld
|
\begin_inset Quotes eld
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
@ -12197,6 +12198,21 @@ EndAutoNests
|
|||||||
\begin_inset Quotes erd
|
\begin_inset Quotes erd
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
|
.
|
||||||
|
See also
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted -712698321 1514539161
|
||||||
|
IsAutoNestedBy
|
||||||
|
\change_unchanged
|
||||||
|
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
.
|
.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
@ -12929,6 +12945,63 @@ TitleLatexName
|
|||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
global entries).
|
global entries).
|
||||||
|
\change_inserted -712698321 1514539171
|
||||||
|
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Description
|
||||||
|
|
||||||
|
\change_inserted -712698321 1514539282
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted -712698321 1514539190
|
||||||
|
IsAutoNestedBy
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
Includes a comma-separated list of layout names after which this one should
|
||||||
|
be nested.
|
||||||
|
Only makes sense with regard to nestable layouts (such as environments).
|
||||||
|
Must be ended by
|
||||||
|
\begin_inset Quotes eld
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted -712698321 1514539279
|
||||||
|
EndIsAutoNestedBy
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
|
\begin_inset Quotes erd
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
.
|
||||||
|
See also
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted -712698321 1514539172
|
||||||
|
AutoNest
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
.
|
||||||
|
\change_unchanged
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
|
@ -221,7 +221,8 @@ currentFormat = 66
|
|||||||
# Color collapsable -> collapsible
|
# Color collapsable -> collapsible
|
||||||
|
|
||||||
# Incremented to format 66, 28 December 2017 by spitz
|
# Incremented to format 66, 28 December 2017 by spitz
|
||||||
# New Layout tag "AutoNests ... EndAutoNests"
|
# New Layout tags "AutoNests ... EndAutoNests" and
|
||||||
|
# "IsAutoNestedBy ... EndIsAutoNestedBy"
|
||||||
|
|
||||||
# Do not forget to document format change in Customization
|
# Do not forget to document format change in Customization
|
||||||
# Manual (section "Declaring a new text class").
|
# Manual (section "Declaring a new text class").
|
||||||
|
@ -41,6 +41,7 @@ enum LayoutTags {
|
|||||||
LT_ALIGNPOSSIBLE,
|
LT_ALIGNPOSSIBLE,
|
||||||
LT_ARGUMENT,
|
LT_ARGUMENT,
|
||||||
LT_AUTONESTS,
|
LT_AUTONESTS,
|
||||||
|
LT_AUTONESTEDBY,
|
||||||
LT_MARGIN,
|
LT_MARGIN,
|
||||||
LT_BOTTOMSEP,
|
LT_BOTTOMSEP,
|
||||||
LT_CATEGORY,
|
LT_CATEGORY,
|
||||||
@ -219,6 +220,7 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
|
|||||||
{ "innertag", LT_INNERTAG },
|
{ "innertag", LT_INNERTAG },
|
||||||
{ "inpreamble", LT_INPREAMBLE },
|
{ "inpreamble", LT_INPREAMBLE },
|
||||||
{ "intitle", LT_INTITLE },
|
{ "intitle", LT_INTITLE },
|
||||||
|
{ "isautonestedby", LT_AUTONESTEDBY },
|
||||||
{ "istoccaption", LT_ISTOCCAPTION },
|
{ "istoccaption", LT_ISTOCCAPTION },
|
||||||
{ "itemcommand", LT_ITEMCOMMAND },
|
{ "itemcommand", LT_ITEMCOMMAND },
|
||||||
{ "itemsep", LT_ITEMSEP },
|
{ "itemsep", LT_ITEMSEP },
|
||||||
@ -606,6 +608,18 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case LT_AUTONESTEDBY: {
|
||||||
|
docstring const autonest =
|
||||||
|
subst(subst(subst(lex.getLongString(from_ascii("EndIsAutoNestedBy")),
|
||||||
|
from_ascii("\n"), docstring()),
|
||||||
|
from_ascii(" "), docstring()),
|
||||||
|
from_ascii("\t"), docstring());
|
||||||
|
vector<docstring> const autonests =
|
||||||
|
getVectorFromString(autonest);
|
||||||
|
autonested_by_.insert(autonests.begin(), autonests.end());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case LT_REFPREFIX: {
|
case LT_REFPREFIX: {
|
||||||
docstring arg;
|
docstring arg;
|
||||||
lex >> arg;
|
lex >> arg;
|
||||||
@ -1411,6 +1425,16 @@ void Layout::write(ostream & os) const
|
|||||||
}
|
}
|
||||||
os << "\n\tEndAutoNests\n";
|
os << "\n\tEndAutoNests\n";
|
||||||
}
|
}
|
||||||
|
if (!autonested_by_.empty()) {
|
||||||
|
os << "\tIsAutoNestedBy\n\t";
|
||||||
|
for (set<docstring>::const_iterator it = autonested_by_.begin();
|
||||||
|
it != autonested_by_.end(); ++it) {
|
||||||
|
if (it != autonested_by_.begin())
|
||||||
|
os << ',';
|
||||||
|
os << to_utf8(*it);
|
||||||
|
}
|
||||||
|
os << "\n\tIsAutoNestedBy\n";
|
||||||
|
}
|
||||||
if (refprefix.empty())
|
if (refprefix.empty())
|
||||||
os << "\tRefPrefix OFF\n";
|
os << "\tRefPrefix OFF\n";
|
||||||
else
|
else
|
||||||
|
@ -151,6 +151,8 @@ public:
|
|||||||
///
|
///
|
||||||
std::set<docstring> const & autonests() const { return autonests_; }
|
std::set<docstring> const & autonests() const { return autonests_; }
|
||||||
///
|
///
|
||||||
|
std::set<docstring> const & isAutonestedBy() const { return autonested_by_; }
|
||||||
|
///
|
||||||
std::string const & latexparam() const { return latexparam_; }
|
std::string const & latexparam() const { return latexparam_; }
|
||||||
///
|
///
|
||||||
docstring leftdelim() const { return leftdelim_; }
|
docstring leftdelim() const { return leftdelim_; }
|
||||||
@ -472,6 +474,8 @@ private:
|
|||||||
std::set<std::string> requires_;
|
std::set<std::string> requires_;
|
||||||
/// Layouts that are by default nested after this one
|
/// Layouts that are by default nested after this one
|
||||||
std::set<docstring> autonests_;
|
std::set<docstring> autonests_;
|
||||||
|
/// Layouts that by auto-nest this one
|
||||||
|
std::set<docstring> autonested_by_;
|
||||||
///
|
///
|
||||||
LaTeXArgMap latexargs_;
|
LaTeXArgMap latexargs_;
|
||||||
///
|
///
|
||||||
|
@ -1478,11 +1478,14 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
|
|||||||
setLayout(cur, layout);
|
setLayout(cur, layout);
|
||||||
bool do_nest = false;
|
bool do_nest = false;
|
||||||
set<docstring> autonests;
|
set<docstring> autonests;
|
||||||
|
set<docstring> autonested;
|
||||||
if (cur.pit() > 0) {
|
if (cur.pit() > 0) {
|
||||||
autonests = pars_[cur.pit() - 1].layout().autonests();
|
autonests = pars_[cur.pit() - 1].layout().autonests();
|
||||||
|
autonested = pars_[cur.pit()].layout().isAutonestedBy();
|
||||||
do_nest = !ignoreautonests;
|
do_nest = !ignoreautonests;
|
||||||
}
|
}
|
||||||
if (do_nest && autonests.find(layout) != autonests.end())
|
if (do_nest && (autonests.find(layout) != autonests.end()
|
||||||
|
|| autonested.find(old_layout) != autonested.end()))
|
||||||
lyx::dispatch(FuncRequest(LFUN_DEPTH_INCREMENT));
|
lyx::dispatch(FuncRequest(LFUN_DEPTH_INCREMENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user