@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); } }
tail = element.getTextRange().getStartOffset(); if (completionChar != '[' && completionChar != '\t') { editor.getCaretModel().moveToOffset(context.getTailOffset()); editor.getCaretModel().moveToOffset(context.getTailOffset()); document.insertString(context.getTailOffset(), "["); editor.getCaretModel().moveToOffset(context.getTailOffset()); tail = context.getTailOffset(); if (tail < document.getTextLength() && StringUtil.isJavaIdentifierPart(document.getCharsSequence().charAt(tail))) { return; document.insertString(context.getTailOffset(), "]"); if (!putCaretInside) { editor.getCaretModel().moveToOffset(context.getTailOffset());
@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); } } }
@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) == myCharacter); context.setAddCompletionChar(false); if (!staysAtChar) { document.insertString(tailOffset, String.valueOf(myCharacter)); } editor.getCaretModel().moveToOffset(tailOffset + 1); AutoPopupController.getInstance(context.getProject()).scheduleAutoPopup(editor); } }
@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); } } }; }
@NotNull private String getStringBeforeAutoCompletedValue( final InsertionContext context, final LookupElement item) { final int tailOffset = context.getDocument().getText().substring(0, context.getTailOffset()).endsWith("\"") ? context.getTailOffset() : context.getTailOffset() + 1; return context .getDocument() .getText() .substring(0, tailOffset) .replace("\"" + item.getLookupString() + "\"", ""); }
@NotNull private String getStringAfterAutoCompletedValue(final InsertionContext context) { return context.getDocument().getText().substring(context.getTailOffset()); }
@NotNull private String getStringAfterAutoCompletedValue(final InsertionContext context) { return context.getDocument().getText().substring(context.getTailOffset()); }
@NotNull private String getStringBeforeAutoCompletedValue( final InsertionContext context, final LookupElement item) { return context .getDocument() .getText() .substring(0, context.getTailOffset() - item.getLookupString().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); } }
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()); } } }
if (myInfo.isFunctionQ()) { if (smartEnterSetting.equals(SmartEnterResult.INSERT_BRACES)) { 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; 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); document.insertString(context.getTailOffset(), " "); editor.getCaretModel().moveToOffset(context.getTailOffset());