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;
}
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);
}
}
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);
}
};
}
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("."))));
}
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();
}
Aggregations