use of org.rstudio.studio.client.workbench.views.source.editors.text.ace.Token in project rstudio by rstudio.
the class SetupChunkOptionsPopupPanel method findKnitrPrefix.
private Position findKnitrPrefix(TokenIterator iterator) {
Token token = iterator.stepBackward();
if (!(token.valueEquals("::") || token.valueEquals(":::")))
return null;
token = iterator.stepBackward();
return token.valueEquals("knitr") ? iterator.getCurrentTokenPosition() : null;
}
use of org.rstudio.studio.client.workbench.views.source.editors.text.ace.Token in project rstudio by rstudio.
the class SetupChunkOptionsPopupPanel method findOptsChunk.
private Range findOptsChunk() {
TokenIterator iterator = display_.createTokenIterator(position_);
while (true) {
Token token = iterator.stepForward();
if (token == null)
break;
if (token.hasType("codeend"))
break;
Position startPos = iterator.getCurrentTokenPosition();
if (!token.getValue().equals("opts_chunk"))
continue;
Position knitrPrefixPos = findKnitrPrefix(iterator.clone());
if (knitrPrefixPos != null)
startPos = knitrPrefixPos;
token = iterator.stepForward();
if (!token.getValue().equals("$"))
continue;
token = iterator.stepForward();
if (!token.getValue().equals("set"))
continue;
token = iterator.stepForward();
if (!token.getValue().equals("("))
continue;
if (!iterator.fwdToMatchingToken())
continue;
token = iterator.stepForward();
Position endPos = iterator.getCurrentTokenPosition();
return Range.fromPoints(startPos, endPos);
}
return null;
}
Aggregations