List of usage examples for org.apache.commons.collections.primitives IntList get
int get(int index);
From source file:de.walware.statet.r.internal.core.rhelp.index.REnvIndexReader.java
public List<IRHelpPage> getPagesForTopic(final String topic, final Map<String, IRPkgHelp> packageMap) { check();/*from ww w . j a va2s. com*/ try { final BooleanQuery q = new BooleanQuery(true); q.add(DOCTYPE_PAGE_QUERY, Occur.MUST); q.add(new TermQuery(new Term(ALIAS_FIELD_NAME, topic)), Occur.MUST); final AllDocCollector collector = new AllDocCollector(); this.indexSearcher.search(q, collector); final IntList docs = collector.getDocs(); final int count = docs.size(); final ArrayList<IRHelpPage> pages = new ArrayList<>(count); for (int i = 0; i < count; i++) { final Document document = this.indexSearcher.doc(docs.get(i), LOAD_ID_SELECTOR); final IRPkgHelp pkgHelp = packageMap.get(document.get(PACKAGE_FIELD_NAME)); final String name = document.get(PAGE_FIELD_NAME); if (name == null) { continue; } if (pkgHelp != null) { final IRHelpPage page = pkgHelp.getHelpPage(name); if (page != null) { pages.add(page); continue; } } RCorePlugin.log(new Status(IStatus.WARNING, RCore.PLUGIN_ID, "Unexpected search result: page '" + document.get(PACKAGE_FIELD_NAME) + "::" + document.get(PAGE_FIELD_NAME) + "' object not found; in search: " + getPagesForTopicDescription(topic) + ".")); } return pages; } catch (final Exception e) { RCorePlugin.log(new Status(IStatus.ERROR, RCore.PLUGIN_ID, -1, "An error occurred in search: " + getPagesForTopicDescription(topic), e)); throw new RuntimeException("R help index search error."); } }
From source file:de.walware.docmlet.tex.internal.ui.editors.LtxCommandCompletionProposal.java
private LinkedModeUI createLinkedMode(final ApplyData data, final int offset, final IntList positions) throws BadLocationException { final AssistInvocationContext context = getInvocationContext(); final LinkedModeModel model = new LinkedModeModel(); int pos = 0;/*w w w.j a va 2 s .com*/ final List<LinkedPosition> linked = new ArrayList<>(positions.size()); for (int i = 0; i < positions.size() - 1; i++) { final LinkedPositionGroup group = new LinkedPositionGroup(); final LinkedPosition position = (positions.get(i) % 2 == 1) ? TexBracketLevel.createPosition('{', data.getDocument(), offset + positions.get(i), 0, pos++) : new LinkedPosition(data.getDocument(), offset + positions.get(i), 0, pos++); group.addPosition(position); linked.add(position); model.addGroup(group); } model.forceInstall(); final TexBracketLevel level = new TexBracketLevel(data.getDocument(), context.getEditor().getPartitioning().getPartitioning(), linked, TexBracketLevel.AUTODELETE); /* create UI */ final LinkedModeUI ui = new LinkedModeUI(model, data.getViewer()); ui.setCyclingMode(LinkedModeUI.CYCLE_WHEN_NO_PARENT); ui.setExitPosition(data.getViewer(), offset + positions.get(positions.size() - 1), 0, pos); ui.setSimpleMode(true); ui.setExitPolicy(level); return ui; }
From source file:de.walware.statet.r.core.rsource.ast.RAst.java
public static int[] computeRExpressionIndex(RAstNode node, final RAstNode baseNode) { final IntList topdown = new ArrayIntList(); while (node != baseNode) { final RAstNode parent = node.getRParent(); switch (parent.getNodeType()) { // list/*from w w w .j a va 2s . c o m*/ case SOURCELINES: case F_DEF_ARGS: // [[1]] = name case F_CALL: topdown.add(parent.getChildIndex(node) + 1); node = parent; continue; // [[1]] = operator case BLOCK: case GROUP: case SUB_INDEXED_S: case SUB_INDEXED_D: case NS_GET: case NS_GET_INT: case SUB_NAMED_PART: case SUB_NAMED_SLOT: case POWER: case SIGN: case SEQ: case SPECIAL: case MULT: case ADD: case RELATIONAL: case NOT: case AND: case OR: case MODEL: case A_RIGHT: case A_EQUALS: case A_LEFT: case HELP: case C_IF: case C_FOR: case C_WHILE: case C_REPEAT: case F_DEF: topdown.add(parent.getChildIndex(node) + 2); node = parent; continue; // part of parent element case SUB_INDEXED_ARGS: if (parent == baseNode) { break; } topdown.add(parent.getChildIndex(node) + 3); node = parent.getRParent(); break; case C_IN: case F_CALL_ARGS: if (parent == baseNode) { break; } topdown.add(parent.getChildIndex(node) + 2); node = parent.getRParent(); break; case SUB_INDEXED_ARG: case F_DEF_ARG: case F_CALL_ARG: node = parent; continue; case ERROR: case ERROR_TERM: case DUMMY: return null; default: throw new IllegalStateException("Unexpected parent"); } } final int l = topdown.size(); final int[] path = new int[l]; for (int i = 0; i < l;) { path[i] = topdown.get(l - ++i); } return path; }
From source file:de.walware.docmlet.tex.internal.ui.editors.LtxCommandCompletionProposal.java
@Override protected void doApply(final char trigger, final int stateMask, final int caretOffset, final int replacementOffset, final int replacementLength) throws BadLocationException { final ApplyData data = getApplyData(); final IDocument document = data.getDocument(); final StringBuilder replacement = new StringBuilder(fCommand.getControlWord()); if ((stateMask & 0x1) == 0x1) { replacement.insert(0, '\\'); }//from w ww . j a v a 2 s . co m int cursor = replacement.length(); int mode = 0; IntList positions = null; if (fCommand == IEnvDefinitions.VERBATIM_verb_COMMAND) { mode = 201; } else if ((fCommand.getType() & TexCommand.MASK_MAIN) != TexCommand.ENV) { final List<Argument> args = fCommand.getArguments(); if (args != null && !args.isEmpty()) { final boolean isFirstOptional = args.get(0).isOptional(); int idxFirstRequired = -1; for (int i = (isFirstOptional) ? 1 : 0; i < args.size(); i++) { final Argument arg = args.get(i); if (arg.isRequired()) { idxFirstRequired = i; break; } } if (idxFirstRequired >= 0) { if (replacementOffset + replacementLength < document.getLength() - 1 && (document.getChar(replacementOffset + replacementLength) == '{' || (isFirstOptional && document.getChar(replacementOffset + replacementLength) == '['))) { cursor++; mode = 10; } else if (!isFollowedByOpeningBracket(data, replacementOffset + replacementLength, isFirstOptional)) { replacement.append('{'); cursor++; mode = 11; } if (mode >= 10) { if (mode == 11 && !isClosedBracket(data, replacementOffset, replacementOffset + replacementLength)) { replacement.append('}'); positions = new ArrayIntList(); mode = 0; if (isFirstOptional) { positions.add(mode); } mode++; positions.add(mode++); for (int i = idxFirstRequired + 1; i < args.size(); i++) { if (args.get(i).isRequired()) { replacement.append("{}"); mode++; positions.add(mode++); } else if (positions.get(positions.size() - 1) != mode) { positions.add(mode); } } if (positions.get(positions.size() - 1) != mode) { positions.add(mode); } mode = 110 + 1; // add multiple arguments } } } } } document.replace(replacementOffset, replacementLength, replacement.toString()); setCursorPosition(replacementOffset + cursor); if (mode > 100 && mode < 200) { createLinkedMode(data, replacementOffset + cursor - (mode - 110), positions).enter(); } else if (mode > 200 && mode < 300) { createLinkedVerbMode(data, replacementOffset + cursor); } if ((fCommand.getType() & TexCommand.MASK_MAIN) == TexCommand.GENERICENV) { reinvokeAssist(data.getViewer()); } }