2015-04-17 21 views
5

Tworzę wtyczkę IntelliJ do obsługi szkieletu nodeJS. Próbuję zaimplementować funkcję autouzupełniania, ale nie wiem, jak ustawić pozycję autouzupełniania na górze listy. Najpierw mam inne autouzupełnianie (np. Mozilla itp.).Autouzupełnianie wtyczki IntelliJ

Oto mój kod:

LookupElementBuilder 
       .create(completionString) 
       .withBoldness(true) 
       .withCaseSensitivity(false) 
       .withIcon(SailsJSIcons.SailsJS) 
       .withPresentableText("\t\t\t" + item) 
       .withAutoCompletionPolicy(AutoCompletionPolicy.GIVE_CHANCE_TO_OVERWRITE); 

Przypuszczam handleInsert może mi pomóc, ale nie mogę znaleźć jak go używać

Odpowiedz

0

Można spróbować podając wyraźny priorytet dla elementów odnośników poprzez PrioritizedLookupElement # withPriority.

+1

po prostu spróbować, ale pozycja są takie same, nie rusza się w ogóle z PrioritizedLookupElement.withPriority (wyszukiwanie, LookupValueWithPriority .HIGHER) lub HI GH – jaumard

+0

Potrzebne są dalsze informacje. Na przykład wagi elementów wydrukowane przez akcję DumpLookupElementWeights (ctrl/command + alt + shift + w przy otwartej liście odnośników) –

0

Możesz ustawić order="first" na swoim completion.contributor w plugin.xml. Wygląda to uczynić specjalista nazwać przed współpracowników z innych źródeł, w wyniku swoimi sugestiami będąc pierwszy:

<extensions defaultExtensionNs="com.intellij"> 
    <completion.contributor order="first" language="PHP" implementationClass="org.klesun.deep_assoc_completion.entry.DeepKeysCbtr"/> 

Gdy specjalista nazywa się pierwszy, można również napisać kod, aby zdecydować jak pozycjonować następujący sugestie lub wykluczyć niektóre z nich całkowicie za pomocą CompletionResultSet::runRemainingContributes() i PrioritizedLookupElement::withPriority() sugerowane przez @ peter-Gromow:

protected void addCompletions(CompletionParameters parameters, ProcessingContext processingContext, CompletionResultSet result) 
{ 
    // ... some of your code here ... 

    result.runRemainingContributors(parameters, otherSourceResult -> { 
     // 2000 is any number - make it smaller than on your suggestion to position this suggestion lower 
     result.addElement(PrioritizedLookupElement.withPriority(otherSourceResult.getLookupElement(), 2000)); 
    }); 
}