public static void fillCompletionVariants( CompletionParameters parameters, CompletionResultSet result) { if (parameters.getCompletionType() != CompletionType.BASIC && parameters.getCompletionType() != CompletionType.SMART) { return; } PsiElement position = parameters.getPosition(); if (psiElement(PsiIdentifier.class) .withParents(PsiJavaCodeReferenceElement.class, PsiTypeElement.class, PsiClass.class) .andNot(JavaCompletionData.AFTER_DOT) .andNot(psiElement().afterLeaf(psiElement().inside(PsiModifierList.class))) .accepts(position)) { suggestGeneratedMethods(result, position); } else if (psiElement(PsiIdentifier.class) .withParents( PsiJavaCodeReferenceElement.class, PsiAnnotation.class, PsiModifierList.class, PsiClass.class) .accepts(position)) { PsiAnnotation annotation = ObjectUtils.assertNotNull(PsiTreeUtil.getParentOfType(position, PsiAnnotation.class)); int annoStart = annotation.getTextRange().getStartOffset(); suggestGeneratedMethods( result.withPrefixMatcher( annotation.getText().substring(0, parameters.getOffset() - annoStart)), position); } }
public synchronized void addItem(final CompletionResult item) { if (!isRunning()) return; ProgressManager.checkCanceled(); final boolean unitTestMode = ApplicationManager.getApplication().isUnitTestMode(); if (!unitTestMode) { LOG.assertTrue(!ApplicationManager.getApplication().isDispatchThread()); } LOG.assertTrue(myParameters.getPosition().isValid()); myItemSorters.put(item.getLookupElement(), (CompletionSorterImpl) item.getSorter()); myLookup.addItem(item.getLookupElement(), item.getPrefixMatcher()); myCount++; if (myCount == 1) { ApplicationManager.getApplication() .executeOnPooledThread( new Runnable() { public void run() { try { Thread.sleep(300); } catch (InterruptedException ignore) { } finally { myFreezeSemaphore.up(); } } }); } myQueue.queue(myUpdate); }
public synchronized void addItem(final CompletionResult item) { if (!isRunning()) return; ProgressManager.checkCanceled(); final boolean unitTestMode = ApplicationManager.getApplication().isUnitTestMode(); if (!unitTestMode) { LOG.assertTrue(!ApplicationManager.getApplication().isDispatchThread()); } LOG.assertTrue(myParameters.getPosition().isValid()); myItemSorters.put(item.getLookupElement(), (CompletionSorterImpl) item.getSorter()); myLookup.addItem(item.getLookupElement(), item.getPrefixMatcher()); myCount++; if (myCount == 1) { new Alarm(Alarm.ThreadToUse.SHARED_THREAD, this) .addRequest( new Runnable() { @Override public void run() { myFreezeSemaphore.up(); } }, 300); } myQueue.queue(myUpdate); }
@Override protected void addCompletions( @NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) { for (String[] completion : RegExpLanguageHosts.getInstance().getPosixCharacterClasses(parameters.getPosition())) { result.addElement( LookupElementBuilder.create(completion[0]) .withTypeText((completion.length > 1) ? completion[1] : null) .withIcon(emptyIcon) .withInsertHandler( new InsertHandler<LookupElement>() { @Override public void handleInsert(InsertionContext context, LookupElement item) { context.setAddCompletionChar(false); final Editor editor = context.getEditor(); final Document document = editor.getDocument(); final int tailOffset = context.getTailOffset(); if (document.getTextLength() < tailOffset + 2 || !document .getText(new TextRange(tailOffset, tailOffset + 2)) .equals(":]")) { document.insertString(tailOffset, ":]"); } editor.getCaretModel().moveCaretRelatively(2, 0, false, false, true); } })); } }
private static boolean shouldFocusLookup(CompletionParameters parameters) { switch (CodeInsightSettings.getInstance().AUTOPOPUP_FOCUS_POLICY) { case CodeInsightSettings.ALWAYS: return true; case CodeInsightSettings.NEVER: return false; } final Language language = PsiUtilBase.getLanguageAtOffset( parameters.getPosition().getContainingFile(), parameters.getOffset()); for (CompletionConfidence confidence : CompletionConfidenceEP.forLanguage(language)) { final ThreeState result = confidence.shouldFocusLookup(parameters); if (result != ThreeState.UNSURE) { return result == ThreeState.YES; } } return false; }
@Override public void addCompletions( @NotNull final CompletionParameters parameters, final ProcessingContext context, @NotNull final CompletionResultSet result) { for (final String[] completion : RegExpLanguageHosts.getInstance().getKnownCharacterClasses(parameters.getPosition())) { addLookupElement(result, completion[0], completion[1], emptyIcon); } for (String[] stringArray : RegExpLanguageHosts.getInstance().getAllKnownProperties(parameters.getPosition())) { addLookupElement( result, "p{" + stringArray[0] + "}", stringArray.length > 1 ? stringArray[1] : null, PlatformIcons.PROPERTY_ICON); } }
public boolean isRepeatedInvocation(CompletionType completionType, Editor editor) { if (completionType != myParameters.getCompletionType() || editor != myEditor) { return false; } if (isAutopopupCompletion() && !myLookup.mayBeNoticed()) { return false; } return true; }
public CompletionProgressIndicator( final Editor editor, CompletionParameters parameters, CodeCompletionHandlerBase handler, Semaphore freezeSemaphore, final OffsetMap offsetMap, boolean hasModifiers) { myEditor = editor; myParameters = parameters; myHandler = handler; myFreezeSemaphore = freezeSemaphore; myOffsetMap = offsetMap; myLookup = (LookupImpl) parameters.getLookup(); myLookup.setArranger(new CompletionLookupArranger(parameters, this)); myLookup.addLookupListener(myLookupListener); myLookup.setCalculating(true); myLookupManagerListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getNewValue() != null) { LOG.error( "An attempt to change the lookup during completion, phase = " + CompletionServiceImpl.getCompletionPhase()); } } }; LookupManager.getInstance(getProject()).addPropertyChangeListener(myLookupManagerListener); myQueue = new MergingUpdateQueue( "completion lookup progress", 200, true, myEditor.getContentComponent()); myQueue.setPassThrough(false); ApplicationManager.getApplication().assertIsDispatchThread(); addMapToDispose(offsetMap); if (ApplicationManager.getApplication().isUnitTestMode()) { return; } if (!myLookup.isShown()) { scheduleAdvertising(); } if (hasModifiers) { trackModifiers(); } }
@Override public void addCompletions( @NotNull final CompletionParameters parameters, final ProcessingContext context, @NotNull final CompletionResultSet result) { for (String[] stringArray : RegExpLanguageHosts.getInstance().getAllKnownProperties(parameters.getPosition())) { result.addElement( TailTypeDecorator.withTail( createLookupElement(stringArray[0], null, emptyIcon), TailType.createSimpleTailType('}'))); } }