@Override public void handleInsert(@NotNull InsertionContext context, LookupElement item) { PsiFile file = context.getFile(); if (!(file instanceof GoFile)) return; context.commitDocument(); int offset = context.getStartOffset(); PsiElement at = file.findElementAt(offset); GoCompositeElement ref = PsiTreeUtil.getParentOfType(at, GoValue.class, GoReferenceExpression.class); if (ref instanceof GoReferenceExpression && (((GoReferenceExpression)ref).getQualifier() != null || GoPsiImplUtil.prevDot(ref))) { return; } GoValue value = PsiTreeUtil.getParentOfType(at, GoValue.class); if (value == null || PsiTreeUtil.getPrevSiblingOfType(value, GoKey.class) != null) return; super.handleInsert(context, item); } };
@Nullable public static InsertHandler<LookupElement> createTemplateBasedInsertHandler(@NotNull String templateId) { return (context, item) -> { Template template = TemplateSettings.getInstance().getTemplateById(templateId); Editor editor = context.getEditor(); if (template != null) { editor.getDocument().deleteString(context.getStartOffset(), context.getTailOffset()); TemplateManager.getInstance(context.getProject()).startTemplate(editor, template); } else { int currentOffset = editor.getCaretModel().getOffset(); CharSequence documentText = editor.getDocument().getImmutableCharSequence(); if (documentText.length() <= currentOffset || documentText.charAt(currentOffset) != ' ') { EditorModificationUtil.insertStringAtCaret(editor, " "); } else { EditorModificationUtil.moveCaretRelatively(editor, 1); } } }; } }
@NotNull private static InsertHandler<LookupElement> createTemplateBasedInsertHandler(@NotNull String templateId, @Nullable String traileringString) { return (context, item) -> { Template template = TemplateSettings.getInstance().getTemplateById(templateId); Editor editor = context.getEditor(); if (template != null) { editor.getDocument().deleteString(context.getStartOffset(), context.getTailOffset()); TemplateManager.getInstance(context.getProject()).startTemplate(editor, template); } else { int currentOffset = editor.getCaretModel().getOffset(); CharSequence documentText = editor.getDocument().getImmutableCharSequence(); if (documentText.length() <= currentOffset || documentText.charAt(currentOffset) != ' ') { if (traileringString != null) { EditorModificationUtil.insertStringAtCaret(editor, traileringString); } } else { EditorModificationUtil.moveCaretRelatively(editor, 1); } } }; }
private static void autoImport(@NotNull InsertionContext context, @NotNull GoNamedElement element) { PsiFile file = context.getFile(); boolean vendoringEnabled = GoVendoringUtil.isVendoringEnabled(ModuleUtilCore.findModuleForPsiElement(file)); String importPath = element.getContainingFile().getImportPath(vendoringEnabled); if (StringUtil.isEmpty(importPath)) return; PsiDocumentManager.getInstance(context.getProject()).commitDocument(context.getEditor().getDocument()); PsiReference reference = file.findReferenceAt(context.getStartOffset()); if (reference != null) { PsiElement referenceElement = reference.getElement(); GoImportPackageQuickFix fix = new GoImportPackageQuickFix(referenceElement, importPath); fix.invoke(context.getProject(), file, context.getEditor(), referenceElement, referenceElement); } } }
public static boolean isStringBeforeCaret(@NotNull Editor editor, InsertionContext context, @NotNull String string) { String fileText = editor.getDocument().getText(); if (fileText.length() < string.length()) { return false; } return fileText.substring(context.getStartOffset() - string.length(), context.getStartOffset()).equals(string); }
if (suggestAlias) { PsiElement currentPackageName = file.findElementAt(context.getStartOffset()); if (currentPackageName != null) { if (alias == null || alias.isEmpty()) {
public void handleInsert(@NotNull InsertionContext context, @NotNull LookupElement lookupElement) { // reuse core class + namespace insertHandler PhpReferenceInsertHandler.getInstance().handleInsert(context, lookupElement); // phpstorm8: remove leading backslash on PhpReferenceInsertHandler String backslash = context.getDocument().getText(new TextRange(context.getStartOffset(), context.getStartOffset() + 1)); if("\\".equals(backslash)) { context.getDocument().deleteString(context.getStartOffset(), context.getStartOffset() + 1); } }
private boolean shouldAddComma(final @NotNull InsertionContext context) { PsiFile psiFile = context.getFile(); return Optional.ofNullable(psiFile.findElementAt(context.getStartOffset())) .map(el -> !jsonTraversal.isLastChild(el)) .orElse(false); } }
public void handleInsert(@NotNull InsertionContext context, @NotNull LookupElement lookupElement) { Object object = lookupElement.getObject(); if (!(object instanceof PhpClass)) { return; } StringBuilder textToInsertBuilder = new StringBuilder(); PhpClass aClass = (PhpClass)object; String fqn = aClass.getNamespaceName(); if(fqn.startsWith("\\")) { fqn = fqn.substring(1); } textToInsertBuilder.append(fqn); context.getDocument().insertString(context.getStartOffset(), textToInsertBuilder); }
public void handleInsert(@NotNull InsertionContext context, @NotNull RouteLookupElement lookupElement) { context.getDocument().insertString(context.getStartOffset(), "{{ path('"); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("'"); Set<String> vars = lookupElement.getRoute().getVariables(); if(vars.size() > 0) { List<String> items = new ArrayList<>(); for(String var: vars) { items.add(String.format("'%s': '%s'", var, "x")); } stringBuilder.append(", {"); stringBuilder.append(StringUtils.join(items, ", ")); stringBuilder.append("}"); } stringBuilder.append(") }}"); PhpInsertHandlerUtil.insertStringAtCaret(context.getEditor(), stringBuilder.toString()); }
public void handleInsert(@NotNull InsertionContext context, @NotNull LookupElement lookupElement) { // resource: "@AsseticBundle/Resources/config/filters/cssimport.xml" // if no @ is before cursor add one if(!isStringBeforeCaret(context.getEditor(), context, "@")) { context.getDocument().insertString(context.getStartOffset(), "@"); } }
public void handleInsert(@NotNull InsertionContext context, @NotNull AssetLookupElement lookupElement) { context.getDocument().insertString(context.getStartOffset(), "{{ asset('"); PhpInsertHandlerUtil.insertStringAtCaret(context.getEditor(), "') }}"); }
@Override public void handleInsert(InsertionContext context, LookupElement item) { PsiElement elementAt = context.getFile().findElementAt(context.getStartOffset()); GoFunctionOrMethodDeclaration declaration = PsiTreeUtil.getNonStrictParentOfType(elementAt, GoFunctionOrMethodDeclaration.class); if (declaration != null) {
public void handleInsert(@NotNull InsertionContext context, @NotNull TranslatorLookupElement lookupElement) { PsiElement elementAt = context.getFile().findElementAt(context.getStartOffset()); String domain = null; if(elementAt != null) { PsiElement element = TwigUtil.getElementOnTwigViewProvider(elementAt); TwigUtil.DomainScope domainScope = TwigUtil.getTwigFileDomainScope(element != null ? element : elementAt); String transDefaultDomain = domainScope.getDefaultDomain(); String myDomain = lookupElement.getDomain(); if(!transDefaultDomain.equalsIgnoreCase(myDomain)) { domain = myDomain; } } // preappend context.getDocument().insertString(context.getStartOffset(), "{{ '"); StringBuilder stringBuilder = new StringBuilder(); // 'foo.bar' stringBuilder.append("'|trans"); // domain if(domain != null) { stringBuilder.append(String.format("({}, '%s')", domain)); } stringBuilder.append(" }}"); PhpInsertHandlerUtil.insertStringAtCaret(context.getEditor(), stringBuilder.toString()); }
public void handleInsert(@NotNull InsertionContext context, @NotNull LookupElement lookupElement) { String insertText = null; if((lookupElement.getObject() instanceof PsiElement)) { return; } if((lookupElement.getObject() instanceof String)) { insertText = (String) lookupElement.getObject(); } if(insertText == null) { return; } // "<caret>", '<caret>' insertText = PsiElementUtils.trimQuote(insertText); if(!insertText.startsWith("%")) { context.getDocument().insertString(context.getStartOffset(), "%"); } // %| is also fired if(!insertText.endsWith("%") || insertText.length() == 1) { context.getDocument().insertString(context.getTailOffset(), "%"); context.getEditor().getCaretModel().moveCaretRelatively(1, 0, false, false, true); } }
@Override public void handleInsert(InsertionContext context, LookupElement lookupElement) { if(ResourceFileInsertHandler.isStringBeforeCaret(context.getEditor(), context, "'") || ResourceFileInsertHandler.isStringBeforeCaret(context.getEditor(), context, "\"")) { return; } int startOffset = context.getStartOffset(); context.getDocument().insertString(startOffset, "\""); context.getDocument().insertString(startOffset + lookupElement.getLookupString().length() + 1, "\""); // move to end context.getEditor().getCaretModel().moveCaretRelatively(1, 0, false, false, true); } }
public static void insertUse(InsertionContext context, String fqnAnnotation) { PsiElement element = PsiUtilCore.getElementAtOffset(context.getFile(), context.getStartOffset()); PhpPsiElement scopeForUseOperator = PhpCodeInsightUtil.findScopeForUseOperator(element); if(null == scopeForUseOperator) { return; } // PhpCodeInsightUtil.canImport: // copied from PhpReferenceInsertHandler; throws an error on PhpContractUtil because of "fully qualified names only" // but that is catch on phpstorm side already; looks fixed now so use fqn if(!fqnAnnotation.startsWith("\\")) { fqnAnnotation = "\\" + fqnAnnotation; } // this looks suitable! :) if(PhpCodeInsightUtil.alreadyImported(scopeForUseOperator, fqnAnnotation) == null) { PsiDocumentManager.getInstance(context.getProject()).commitDocument(context.getDocument()); PhpAliasImporter.insertUseStatement(fqnAnnotation, scopeForUseOperator); PsiDocumentManager.getInstance(context.getProject()).doPostponedOperationsAndUnblockDocument(context.getDocument()); } } }
public void handleInsert(@NotNull InsertionContext context, @NotNull LookupElement lookupElement) { // reuse core class + namespace insertHandler PhpReferenceInsertHandler.getInstance().handleInsert(context, lookupElement); // phpstorm8: remove leading backslash on PhpReferenceInsertHandler String backslash = context.getDocument().getText(new TextRange(context.getStartOffset(), context.getStartOffset() + 1)); if("\\".equals(backslash)) { context.getDocument().deleteString(context.getStartOffset(), context.getStartOffset() + 1); } }
final PsiElement headOfFunction = PsiTreeUtil.findElementOfClassAtRange(context.getFile(), context.getStartOffset(), context.getTailOffset(), PsiElement.class); final TemplateBuilderFactory factory = TemplateBuilderFactoryImpl.getInstance(); final TemplateBuilderImpl builder = (TemplateBuilderImpl) factory.createTemplateBuilder(headOfFunction);