Skip to content

Commit 9bd501c

Browse files
committed
implement #3878
special treatment for tcolorbox definitions They defines commands which automatically have +1 mandatory arguments These commands are marked in cwl with the classifier "d1"
1 parent dea42c8 commit 9bd501c

File tree

3 files changed

+23
-10
lines changed

3 files changed

+23
-10
lines changed

completion/tcolorbox.cwl

+10-10
Original file line numberDiff line numberDiff line change
@@ -159,22 +159,22 @@ library/all
159159
\RenewTotalTColorBox[init options]{cmd}{xargs}{options%keyvals}{content}
160160
\ProvideTotalTColorBox{cmd}{xargs}{options%keyvals}{content}#d
161161
\ProvideTotalTColorBox[init options]{cmd}{xargs}{options%keyvals}{content}#d
162-
\newtcbox{cmd}{options%keyvals}#d
163-
\newtcbox{cmd}[args]{options%keyvals}#d
164-
\newtcbox{cmd}[args][default]{options%keyvals}#d
165-
\newtcbox[init options]{cmd}{options%keyvals}#d
166-
\newtcbox[init options]{cmd}[args]{options%keyvals}#*d
167-
\newtcbox[init options]{cmd}[args][default]{options%keyvals}#*d
162+
\newtcbox{cmd}{options%keyvals}#d1
163+
\newtcbox{cmd}[args]{options%keyvals}#d1
164+
\newtcbox{cmd}[args][default]{options%keyvals}#d1
165+
\newtcbox[init options]{cmd}{options%keyvals}#d1
166+
\newtcbox[init options]{cmd}[args]{options%keyvals}#*d1
167+
\newtcbox[init options]{cmd}[args][default]{options%keyvals}#*d1
168168
\renewtcbox{cmd}{options%keyvals}
169169
\renewtcbox{cmd}[args]{options%keyvals}
170170
\renewtcbox{cmd}[args][default]{options%keyvals}
171171
\renewtcbox[init options]{cmd}{options%keyvals}
172172
\renewtcbox[init options]{cmd}[args]{options%keyvals}#*
173173
\renewtcbox[init options]{cmd}[args][default]{options%keyvals}#*
174-
\DeclareTCBox{cmd}{xargs}{options%keyvals}#d
175-
\DeclareTCBox[init options]{cmd}{xargs}{options%keyvals}#d
176-
\NewTCBox{cmd}{xargs}{options%keyvals}#d
177-
\NewTCBox[init options]{cmd}{xargs}{options%keyvals}#d
174+
\DeclareTCBox{cmd}{xargs}{options%keyvals}#d1
175+
\DeclareTCBox[init options]{cmd}{xargs}{options%keyvals}#d1
176+
\NewTCBox{cmd}{xargs}{options%keyvals}#d1
177+
\NewTCBox[init options]{cmd}{xargs}{options%keyvals}#d1
178178
\RenewTCBox{cmd}{xargs}{options%keyvals}
179179
\RenewTCBox[init options]{cmd}{xargs}{options%keyvals}
180180
\ProvideTCBox{cmd}{xargs}{options%keyvals}#d

src/latexdocument.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -793,12 +793,18 @@ void LatexDocument::interpretCommandArguments(QDocumentLineHandle *dlh, const in
793793
QString xarg=Parsing::getArg(args, Token::defXparseArg);
794794
if(!xarg.isEmpty()){
795795
// xparse style defintion
796+
if(lp->possibleCommands["%definition1"].contains(cmd)||ltxCommands.possibleCommands["%definition1"].contains(cmd)){
797+
xarg+="m"; // special treatment for newtcbox and similar. Automatically add one mandatory argument
798+
}
796799
QString arguments=interpretXArgs(xarg);
797800
cmdName=cmdName+arguments;
798801
}else{
799802
int optionCount = Parsing::getArg(args, Token::defArgNumber).toInt(); // results in 0 if there is no optional argument or conversion fails
800803
if (optionCount > 9 || optionCount < 0) optionCount = 0; // limit number of options
801804
def = !Parsing::getArg(args, Token::optionalArgDefinition).isEmpty();
805+
if(lp->possibleCommands["%definition1"].contains(cmd)||ltxCommands.possibleCommands["%definition1"].contains(cmd)){
806+
++optionCount; // special treatment for newtcbox and similar. Automatically add one mandatory argument
807+
}
802808

803809

804810
for (int j = 0; j < optionCount; j++) {

src/latexpackage.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,13 @@ LatexPackage loadCwlFile(const QString fileName, LatexCompleterConfig *config, Q
284284
if (keywords.contains(rxComMatch2.captured(2))) {
285285
package.optionCommands << rxComMatch2.captured(1);
286286
}
287+
if (valid.contains("d1")) { // definition command for newtcbox and similar. It automatically will add an extra mandatory argument for the completer
288+
if (res > -1) {
289+
package.possibleCommands["%definition"] << rxComMatch.captured(1);
290+
package.possibleCommands["%definition1"] << rxComMatch.captured(1);
291+
}
292+
valid.remove("d1");
293+
}
287294
if (valid.contains('d')) { // definition command
288295
if (res > -1) {
289296
package.possibleCommands["%definition"] << rxComMatch.captured(1);

0 commit comments

Comments
 (0)