Search in sources :

Example 6 with InsertionContext

use of com.intellij.codeInsight.completion.InsertionContext in project intellij-community by JetBrains.

the class TemplateExpressionLookupElement method createInsertionContext.

private static InsertionContext createInsertionContext(LookupElement item, PsiFile psiFile, List<? extends LookupElement> elements, Editor editor, final char completionChar) {
    final OffsetMap offsetMap = new OffsetMap(editor.getDocument());
    final InsertionContext context = new InsertionContext(offsetMap, completionChar, elements.toArray(new LookupElement[elements.size()]), psiFile, editor, false);
    context.setTailOffset(editor.getCaretModel().getOffset());
    offsetMap.addOffset(CompletionInitializationContext.START_OFFSET, context.getTailOffset() - item.getLookupString().length());
    offsetMap.addOffset(CompletionInitializationContext.SELECTION_END_OFFSET, context.getTailOffset());
    offsetMap.addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, context.getTailOffset());
    return context;
}
Also used : InsertionContext(com.intellij.codeInsight.completion.InsertionContext) LookupElement(com.intellij.codeInsight.lookup.LookupElement) PrioritizedLookupElement(com.intellij.codeInsight.completion.PrioritizedLookupElement) OffsetMap(com.intellij.codeInsight.completion.OffsetMap)

Example 7 with InsertionContext

use of com.intellij.codeInsight.completion.InsertionContext in project Intellij-Plugin by getgauge.

the class StepCompletionProvider method addCompletions.

@Override
public void addCompletions(@NotNull final CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) {
    resultSet.stopHere();
    final String prefix = getPrefix(parameters);
    resultSet = resultSet.withPrefixMatcher(new GaugePrefixMatcher(prefix));
    Module moduleForPsiElement = GaugeUtil.moduleForPsiElement(parameters.getPosition());
    if (moduleForPsiElement == null) {
        return;
    }
    for (Type item : getStepsInModule(moduleForPsiElement)) {
        LookupElementBuilder element = LookupElementBuilder.create(item.getText()).withTypeText(item.getType(), true);
        element = element.withInsertHandler((InsertionContext context1, LookupElement item1) -> {
            if (context1.getCompletionChar() == '\t') {
                context1.getDocument().insertString(context1.getEditor().getCaretModel().getOffset(), "\n");
                PsiDocumentManager.getInstance(context1.getProject()).commitDocument(context1.getDocument());
            }
            PsiElement stepElement = context1.getFile().findElementAt(context1.getStartOffset()).getParent();
            final TemplateBuilder templateBuilder = TemplateBuilderFactory.getInstance().createTemplateBuilder(stepElement);
            replaceStepParamElements(prefix, context1, stepElement, templateBuilder);
            templateBuilder.run(context1.getEditor(), false);
        });
        resultSet.addElement(element);
    }
}
Also used : TemplateBuilder(com.intellij.codeInsight.template.TemplateBuilder) LookupElementBuilder(com.intellij.codeInsight.lookup.LookupElementBuilder) Module(com.intellij.openapi.module.Module) InsertionContext(com.intellij.codeInsight.completion.InsertionContext) LookupElement(com.intellij.codeInsight.lookup.LookupElement) PsiElement(com.intellij.psi.PsiElement)

Example 8 with InsertionContext

use of com.intellij.codeInsight.completion.InsertionContext in project intellij-community by JetBrains.

the class TaskAutoCompletionListProvider method createInsertHandler.

@Override
protected InsertHandler<LookupElement> createInsertHandler(@NotNull final Task task) {
    return new InsertHandler<LookupElement>() {

        @Override
        public void handleInsert(InsertionContext context, LookupElement item) {
            Document document = context.getEditor().getDocument();
            String s = ((TaskManagerImpl) TaskManager.getManager(context.getProject())).getChangelistName(task);
            s = StringUtil.convertLineSeparators(s);
            document.replaceString(context.getStartOffset(), context.getTailOffset(), s);
            context.getEditor().getCaretModel().moveToOffset(context.getStartOffset() + s.length());
            TaskAutoCompletionListProvider.this.handleInsert(task);
        }
    };
}
Also used : TaskManagerImpl(com.intellij.tasks.impl.TaskManagerImpl) InsertHandler(com.intellij.codeInsight.completion.InsertHandler) InsertionContext(com.intellij.codeInsight.completion.InsertionContext) LookupElement(com.intellij.codeInsight.lookup.LookupElement) Document(com.intellij.openapi.editor.Document)

Example 9 with InsertionContext

use of com.intellij.codeInsight.completion.InsertionContext in project oxy-template-support-plugin by mutant-industries.

the class JsMacroName method addMacroNameCompletionVariant.

@Override
public boolean addMacroNameCompletionVariant(@NotNull CompletionResultSet result, @NotNull PsiElement position, @NotNull PsiElement lookupElement, @NotNull String fqn, @NotNull String macroName, @NotNull String macroNamespace) {
    result.withPrefixMatcher(new CamelHumpMatcher(namespaceFqn + position.getText().replace(CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED, ""))).consume(LookupElementDecorator.withInsertHandler(LookupElementBuilder.create(lookupElement, fqn + "();").withIcon(OxyTemplateFileType.INSTANCE.getIcon()).withPresentableText(macroName + "([Object] params) (" + macroNamespace + ")").withTailText(" " + lookupElement.getContainingFile().getVirtualFile().getPath().replaceFirst("^.+((src)|(WEB_INF))/", ""), true).withInsertHandler(new TrailingPatternConsumer(INSERT_CONSUME) {

        @Override
        public void handleInsert(InsertionContext context, LookupElement item) {
            CaretModel caretModel = context.getEditor().getCaretModel();
            caretModel.moveToOffset(caretModel.getOffset() - 2);
            super.handleInsert(context, item);
        }
    }).withAutoCompletionPolicy(AutoCompletionPolicy.GIVE_CHANCE_TO_OVERWRITE), new IncludeAutoInsert()));
    return fqn.startsWith(namespaceFqn.substring(0, Math.max(namespaceFqn.length(), namespaceFqn.indexOf("."))));
}
Also used : CaretModel(com.intellij.openapi.editor.CaretModel) TrailingPatternConsumer(ool.intellij.plugin.editor.completion.handler.TrailingPatternConsumer) IncludeAutoInsert(ool.intellij.plugin.editor.completion.handler.IncludeAutoInsert) InsertionContext(com.intellij.codeInsight.completion.InsertionContext) LookupElement(com.intellij.codeInsight.lookup.LookupElement) CamelHumpMatcher(com.intellij.codeInsight.completion.impl.CamelHumpMatcher)

Example 10 with InsertionContext

use of com.intellij.codeInsight.completion.InsertionContext in project oxy-template-support-plugin by mutant-industries.

the class DwrMethod method fillCompletionVariants.

@Override
public void fillCompletionVariants(@NotNull CompletionParameters parameters, @NotNull CompletionResultSet result) {
    PsiElement element = parameters.getPosition();
    if (element.getNode().getElementType() != JSTokenTypes.IDENTIFIER || (element = element.getPrevSibling()) == null) {
        return;
    }
    if (element.getNode().getElementType() == TokenType.WHITE_SPACE) {
        element = element.getPrevSibling();
    }
    if (element == null || element.getNode().getElementType() != JSTokenTypes.DOT || (element = element.getPrevSibling()) == null) {
        return;
    }
    if (element.getNode().getElementType() == TokenType.WHITE_SPACE) {
        element = element.getPrevSibling();
    }
    if (!(element instanceof JSReferenceExpression) || element.getPrevSibling() != null) {
        return;
    }
    PsiReference reference = element.getReference();
    if (reference == null || !((element = reference.resolve()) instanceof PsiClass) || !DwrReferenceResolver.isDwrClass((PsiClass) element)) {
        return;
    }
    PsiClass dwrClass = (PsiClass) element;
    for (PsiMethod method : dwrClass.getMethods()) {
        if (method.getReturnType() == null || !DwrReferenceResolver.isDwrMethod(method)) {
            continue;
        }
        String presentableText = method.getName() + "()";
        if (method.getPresentation() != null && method.getPresentation().getPresentableText() != null) {
            presentableText = method.getPresentation().getPresentableText().replaceAll("(, )?HttpServlet(Request|Response)", "");
        }
        result.consume(LookupElementBuilder.create(method, method.getName() + "();").withIcon(method.getIcon(0)).withTypeText(method.getReturnType().getPresentableText(), true).withPresentableText(presentableText).withInsertHandler(new TrailingPatternConsumer(INSERT_CONSUME) {

            @Override
            public void handleInsert(InsertionContext context, LookupElement item) {
                CaretModel caretModel = context.getEditor().getCaretModel();
                caretModel.moveToOffset(caretModel.getOffset() - 2);
                super.handleInsert(context, item);
            }
        }).withAutoCompletionPolicy(AutoCompletionPolicy.GIVE_CHANCE_TO_OVERWRITE));
    }
    result.stopHere();
}
Also used : JSReferenceExpression(com.intellij.lang.javascript.psi.JSReferenceExpression) CaretModel(com.intellij.openapi.editor.CaretModel) PsiMethod(com.intellij.psi.PsiMethod) TrailingPatternConsumer(ool.intellij.plugin.editor.completion.handler.TrailingPatternConsumer) PsiClass(com.intellij.psi.PsiClass) PsiReference(com.intellij.psi.PsiReference) InsertionContext(com.intellij.codeInsight.completion.InsertionContext) LookupElement(com.intellij.codeInsight.lookup.LookupElement) PsiElement(com.intellij.psi.PsiElement)

Aggregations

InsertionContext (com.intellij.codeInsight.completion.InsertionContext)10 LookupElement (com.intellij.codeInsight.lookup.LookupElement)9 InsertHandler (com.intellij.codeInsight.completion.InsertHandler)5 Document (com.intellij.openapi.editor.Document)4 Editor (com.intellij.openapi.editor.Editor)3 PrioritizedLookupElement (com.intellij.codeInsight.completion.PrioritizedLookupElement)2 LookupElementBuilder (com.intellij.codeInsight.lookup.LookupElementBuilder)2 CaretModel (com.intellij.openapi.editor.CaretModel)2 VirtualFile (com.intellij.openapi.vfs.VirtualFile)2 PsiElement (com.intellij.psi.PsiElement)2 TrailingPatternConsumer (ool.intellij.plugin.editor.completion.handler.TrailingPatternConsumer)2 NotNull (org.jetbrains.annotations.NotNull)2 OffsetMap (com.intellij.codeInsight.completion.OffsetMap)1 XmlTagInsertHandler (com.intellij.codeInsight.completion.XmlTagInsertHandler)1 CamelHumpMatcher (com.intellij.codeInsight.completion.impl.CamelHumpMatcher)1 ParenthesesInsertHandler (com.intellij.codeInsight.completion.util.ParenthesesInsertHandler)1 TemplateBuilder (com.intellij.codeInsight.template.TemplateBuilder)1 TemplateState (com.intellij.codeInsight.template.impl.TemplateState)1 CfmlMappingsConfig (com.intellij.coldFusion.UI.config.CfmlMappingsConfig)1 CfmlProjectConfiguration (com.intellij.coldFusion.UI.config.CfmlProjectConfiguration)1