Add InsertOnNewline argument tag

This adds a paragraph break before auto-inserting arguments in flex
insets.

Useful for specific arguments (particularly ling glosses)
This commit is contained in:
Juergen Spitzmueller 2019-06-02 18:07:10 +02:00
parent cb6c183225
commit 9e6d22ea9c
7 changed files with 111 additions and 1 deletions

View File

@ -12444,6 +12444,59 @@ layout can be automatically inserted.
\end_layout \end_layout
\begin_layout Itemize
\change_inserted -712698321 1559491402
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
\change_inserted -712698321 1559490711
InsertOnNewline
\end_layout
\end_inset
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
\change_inserted -712698321 1559490703
[int=0]
\end_layout
\end_inset
If this is set to
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
\change_inserted -712698321 1559490703
1
\end_layout
\end_inset
, this argument will be inserted on a new line with
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
\change_inserted -712698321 1559491402
AutoInsert
\end_layout
\end_inset
(only available within Flex insets).
\end_layout
\begin_layout Itemize \begin_layout Itemize
\begin_inset Flex Code \begin_inset Flex Code
status collapsed status collapsed

View File

@ -10588,6 +10588,49 @@ e Absatzstil ausgewählt wird.
\begin_inset Flex Code \begin_inset Flex Code
status collapsed status collapsed
\begin_layout Plain Layout
InsertOnNewline
\end_layout
\end_inset
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
[int=0]
\end_layout
\end_inset
Wenn dies auf
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
1
\end_layout
\end_inset
gesetzt ist, wird dieses Argument mit
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
AutoInsert
\end_layout
\end_inset
auf eine neue Zeile gesetzt (nur mit Flex-Einfügungen verfügbar).
\end_layout
\begin_layout Itemize
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
InsertCotext InsertCotext
\end_layout \end_layout

View File

@ -249,7 +249,7 @@ currentFormat = 75
# New InsetLayout and Argument tag NewlineCmd # New InsetLayout and Argument tag NewlineCmd
# Incremented to format 75, 2 June 2019 by spitz # Incremented to format 75, 2 June 2019 by spitz
# New Argument tag FreeSpacing # New Argument tags FreeSpacing, InsertOnNewline
# 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").

View File

@ -1016,6 +1016,7 @@ void Layout::readArgument(Lexer & lex)
arg.nodelims = false; arg.nodelims = false;
arg.autoinsert = false; arg.autoinsert = false;
arg.insertcotext = false; arg.insertcotext = false;
arg.insertonnewline = false;
bool error = false; bool error = false;
bool finished = false; bool finished = false;
arg.font = inherit_font; arg.font = inherit_font;

View File

@ -106,6 +106,7 @@ public:
FontInfo labelfont; FontInfo labelfont;
bool autoinsert; bool autoinsert;
bool insertcotext; bool insertcotext;
bool insertonnewline;
ArgPassThru passthru; ArgPassThru passthru;
docstring pass_thru_chars; docstring pass_thru_chars;
bool is_toc_caption; bool is_toc_caption;

View File

@ -2078,6 +2078,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
Layout::LaTeXArgMap::const_iterator const laend = args.end(); Layout::LaTeXArgMap::const_iterator const laend = args.end();
for (; lait != laend; ++lait) { for (; lait != laend; ++lait) {
Layout::latexarg arg = (*lait).second; Layout::latexarg arg = (*lait).second;
if (!inautoarg && arg.insertonnewline && cur.pos() > 0) {
FuncRequest cmd2(LFUN_PARAGRAPH_BREAK);
lyx::dispatch(cmd2);
}
if (arg.autoinsert) { if (arg.autoinsert) {
// The cursor might have been invalidated by the replaceSelection. // The cursor might have been invalidated by the replaceSelection.
cur.buffer()->changed(true); cur.buffer()->changed(true);
@ -2087,6 +2091,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
cur.leaveInset(cur.inset()); cur.leaveInset(cur.inset());
cur.posForward(); cur.posForward();
inautoarg = false; inautoarg = false;
if (arg.insertonnewline && cur.pos() > 0) {
FuncRequest cmd2(LFUN_PARAGRAPH_BREAK);
lyx::dispatch(cmd2);
}
} }
FuncRequest cmd2(LFUN_ARGUMENT_INSERT, (*lait).first); FuncRequest cmd2(LFUN_ARGUMENT_INSERT, (*lait).first);
lyx::dispatch(cmd2); lyx::dispatch(cmd2);

View File

@ -605,6 +605,7 @@ void InsetLayout::readArgument(Lexer & lex)
arg.mandatory = false; arg.mandatory = false;
arg.autoinsert = false; arg.autoinsert = false;
arg.insertcotext = false; arg.insertcotext = false;
arg.insertonnewline = false;
bool error = false; bool error = false;
bool finished = false; bool finished = false;
arg.font = inherit_font; arg.font = inherit_font;
@ -639,6 +640,9 @@ void InsetLayout::readArgument(Lexer & lex)
} else if (tok == "insertcotext") { } else if (tok == "insertcotext") {
lex.next(); lex.next();
arg.insertcotext = lex.getBool(); arg.insertcotext = lex.getBool();
} else if (tok == "insertonnewline") {
lex.next();
arg.insertonnewline = lex.getBool();
} else if (tok == "leftdelim") { } else if (tok == "leftdelim") {
lex.next(); lex.next();
arg.ldelim = lex.getDocString(); arg.ldelim = lex.getDocString();