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); } } }
@Override public void handleInsert(@NotNull InsertionContext context, LookupElement item) { Editor editor = context.getEditor(); int tailOffset = context.getTailOffset(); Document document = editor.getDocument(); context.commitDocument(); boolean staysAtChar = document.getTextLength() > tailOffset && document.getCharsSequence().charAt(tailOffset) == myChar; context.setAddCompletionChar(false); if (!staysAtChar) { document.insertString(tailOffset, String.valueOf(myChar)); } editor.getCaretModel().moveToOffset(tailOffset + 1); AutoPopupController.getInstance(context.getProject()).scheduleAutoPopup(editor); } }
@Override public void handleInsert(@NotNull InsertionContext context, @NotNull LookupElement item) { int tailOffset = context.getTailOffset(); Document document = context.getDocument(); int documentTextLength = document.getTextLength(); boolean insertParentheses; if (documentTextLength > tailOffset) { String currentTail = document.getText( new TextRange(tailOffset, tailOffset + 1) ); char firstChar = currentTail.charAt(0); insertParentheses = firstChar != ' ' && firstChar != '(' && firstChar != '['; } else { insertParentheses = true; } if (insertParentheses) { context.getDocument().insertString(tailOffset, "()"); // + 1 to put between the `(` and `)` context.getEditor().getCaretModel().moveToOffset(tailOffset + 1); } } }
private void doInsert(InsertionContext context, @NotNull LookupElement item, @Nullable GoSignature signature) { int paramsCount = signature != null ? signature.getParameters().getParameterDeclarationList().size() : 0; InsertHandler<LookupElement> handler = paramsCount == 0 ? ParenthesesInsertHandler.NO_PARAMETERS : ParenthesesInsertHandler.WITH_PARAMETERS; handler.handleInsert(context, item); if (signature != null) { AutoPopupController.getInstance(context.getProject()).autoPopupParameterInfo(context.getEditor(), null); } } };
@Override public void handleInsert(InsertionContext context) { final SmartEnterResult smartEnterSetting = MathematicaSettings.getInstance().getSmartEnterResult(); Editor editor = context.getEditor(); Document document = editor.getDocument(); context.commitDocument(); char completionChar = context.getCompletionChar(); context.setAddCompletionChar(false); document.insertString(context.getTailOffset(), "[]"); final int currentPosition = context.getTailOffset(); editor.getCaretModel().moveToOffset(currentPosition - 1); } else if (smartEnterSetting.equals(SmartEnterResult.INSERT_CODE) || smartEnterSetting.equals(SmartEnterResult.INSERT_TEMPLATE)) { document.insertString(context.getTailOffset(), Character.toString(OPEN_BRACKET)); final int currentPosition = context.getTailOffset(); document.insertString(currentPosition, String.join(", ", myInfo.getCallPattern())); document.insertString(context.getTailOffset(), Character.toString(CLOSING_BRACKET)); final int endOffset = myInfo.getCallPattern().isEmpty() ? 0 : myInfo.getCallPattern().get(0).length() + currentPosition; PsiDocumentManager.getInstance(context.getProject()).commitDocument(context.getDocument()); 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); builder.run(context.getEditor(), true); document.insertString(context.getTailOffset(), " "); editor.getCaretModel().moveToOffset(context.getTailOffset());
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(), "@"); } }
@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); } } }; } }
@Override public void handleInsert(@NotNull InsertionContext context, LookupElement item) { Editor editor = context.getEditor(); Document document = editor.getDocument(); context.commitDocument(); PsiElement element = findNextToken(context); char completionChar = context.getCompletionChar(); boolean putCaretInside = completionChar == '[' || placeCaretInsideParentheses(context, item); if (completionChar == '[') { context.setAddCompletionChar(false); tail = element.getTextRange().getStartOffset(); if (completionChar != '[' && completionChar != '\t') { editor.getCaretModel().moveToOffset(context.getTailOffset()); context.setTailOffset(tail + 1); PsiElement list = element.getParent(); PsiElement last = list.getLastChild(); if (isToken(last, "]")) { int rparenthOffset = last.getTextRange().getStartOffset(); context.setTailOffset(rparenthOffset + 1); if (!putCaretInside) { for (int i = tail + 1; i < rparenthOffset; ++i) { editor.getCaretModel().moveToOffset(context.getTailOffset()); document.insertString(context.getTailOffset(), "["); editor.getCaretModel().moveToOffset(context.getTailOffset()); if (context.getCompletionChar() == '[') {
private void handleEndingQuote(final InsertionContext insertionContext) { final int caretOffset = insertionContext.getEditor().getCaretModel().getOffset(); final CharSequence chars = insertionContext.getDocument().getCharsSequence(); final boolean hasEndingQuote = CharArrayUtil.regionMatches(chars, caretOffset, "\""); if (!hasEndingQuote) { insertionContext.getDocument().insertString(caretOffset, "\""); } EditorModificationUtil.moveCaretRelatively(insertionContext.getEditor(), 1); }
public void handleInsert(InsertionContext context, LookupElement item) { Editor editor = context.getEditor(); char completionChar = context.getCompletionChar(); if (completionChar == ' ' || StringUtil.containsChar(myIgnoreOnChars, completionChar)) { return; } Project project = editor.getProject(); if (project != null) { int completionCharOffset = getCompletionCharOffset(editor); if (completionCharOffset == -1) { EditorModificationUtil.insertStringAtCaret(editor, ";", false, 1); PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument()); } else { editor.getCaretModel().moveToOffset(editor.getCaretModel().getOffset() + completionCharOffset + 1); } if (myTriggerAutoPopup) { AutoPopupController.getInstance(project).autoPopupMemberLookup(editor, null); } } }
private static LookupElement createKeywordLookupItem(String keyword) { LookupElementBuilder builder = LookupElementBuilder.create(keyword.toLowerCase()).withCaseSensitivity(false).bold(); boolean braces = keyword.endsWith("{") || keyword.endsWith("}"); if (!braces) { return keyword.startsWith("%") ? TailTypeDecorator.withTail(builder, TailType.SPACE) : builder; } else { final String closing = keyword.endsWith("{") ? keyword.substring(0, keyword.length()-1) + "}" : null; return PrioritizedLookupElement.withPriority(builder.withInsertHandler((context, item) -> { int caret = context.getTailOffset(); Document document = context.getDocument(); StringBuilder sb = new StringBuilder("\n"); caret += sb.length(); if (closing != null) { int indentSize = CodeStyleSettingsManager.getInstance(context.getProject()). getCurrentSettings().getIndentSize(JFlexFileType.INSTANCE); sb.append(StringUtil.repeat(" ", indentSize)); caret += indentSize; sb.append("\n").append(closing).append("\n"); } document.insertString(context.getTailOffset(), sb); context.getEditor().getCaretModel().moveToOffset(caret); }), 1.d / keyword.length()); } } }
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); } }
public void handleInsert(@NotNull InsertionContext context, @NotNull LookupElement lookupElement) { // check this: // {{ form_javasc|() }} // {{ form_javasc| }} if(PhpInsertHandlerUtil.isStringAtCaret(context.getEditor(), "(")) { return; } String addText = "()"; PhpInsertHandlerUtil.insertStringAtCaret(context.getEditor(), addText); context.getEditor().getCaretModel().moveCaretRelatively(-1, 0, false, false, true); }
@NotNull private String getStringAfterAutoCompletedValue(final InsertionContext context) { return context.getDocument().getText().substring(context.getTailOffset()); }
@Override public void handleInsert(@NotNull InsertionContext context, LookupElement item) { Editor editor = context.getEditor(); CharSequence documentText = context.getDocument().getImmutableCharSequence(); int offset = skipWhiteSpaces(editor.getCaretModel().getOffset(), documentText); if (documentText.charAt(offset) != '{') { Project project = context.getProject(); Template template = TemplateManager.getInstance(project).createTemplate("braces", "go", myOneLine ? "{$END$}" : " {\n$END$\n}"); template.setToReformat(true); TemplateManager.getInstance(project).startTemplate(editor, template); } else { editor.getCaretModel().moveToOffset(offset); ApplicationManager.getApplication().runWriteAction(() -> { EditorActionHandler enterAction = EditorActionManager.getInstance().getActionHandler(IdeActions.ACTION_EDITOR_START_NEW_LINE); enterAction.execute(editor, editor.getCaretModel().getCurrentCaret(), ((EditorEx)editor).getDataContext()); }); } }
PsiFile file = context.getFile(); if (!(file instanceof BallerinaFile)) { return; Editor editor = context.getEditor(); Project project = editor.getProject(); if (suggestAlias) { if (suggestAlias) { PsiElement currentPackageName = file.findElementAt(context.getStartOffset()); if (currentPackageName != null) { if (alias == null || alias.isEmpty()) {
@Override public void handleInsert(@NotNull final InsertionContext context, @NotNull final LookupElement item) { // fixme this is bad check for auto-inserting, i belive if (context.getCompletionChar() != '\u0000') { context.setLaterRunnable(() -> { Editor editor = context.getEditor(); new CodeCompletionHandlerBase(CompletionType.BASIC).invokeCompletion(context.getProject(), editor, 1); }); } } }
@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); } };
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); } }
@Override public void handleInsert(@NotNull final InsertionContext context, @NotNull LookupElement item) { final Editor editor = context.getEditor(); if ("returns".equals(item.getLookupString())) { EditorModificationUtil.insertStringAtCaret(editor, " "); context.setLaterRunnable(() -> new CodeCompletionHandlerBase(CompletionType.BASIC).invokeCompletion(context.getProject(), editor, 1)); } } }