@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()); }); } }
protected PsiElement getCurrentElement(Editor editor, PsiFile file) { Caret currentCaret = editor.getCaretModel().getCurrentCaret(); // look for current element int currentOffset = currentCaret.getOffset(); PsiElement currentElement = file.findElementAt(currentOffset); if (currentElement == null) { currentOffset--; currentElement = file.findElementAt(currentOffset); } return currentElement; }
private void doIndent(@NotNull PsiFile file, @NotNull Editor editor, @NotNull DataContext dataContext, EditorActionHandler originalHandler, Document document) { originalHandler.execute(editor, editor.getCaretModel().getCurrentCaret(), dataContext); PsiDocumentManager.getInstance(file.getProject()).commitDocument(document); try { CodeStyleManager.getInstance(file.getProject()).adjustLineIndent(file, editor.getCaretModel().getOffset()); } catch (IncorrectOperationException e) { LOG.error(e); } } }
Editor editor = getEditor(); Object psiElement = FileEditorManager.getInstance(getProject()) .getData(CommonDataKeys.PSI_ELEMENT.getName(), editor, editor.getCaretModel().getCurrentCaret()); MapDataContext dataContext = new MapDataContext(); dataContext.put(CommonDataKeys.PROJECT, getProject());
originalHandler.execute(editor, editor.getCaretModel().getCurrentCaret(), dataContext); if (project != null) { CodeStyleManager.getInstance(project).adjustLineIndent(editor.getDocument(), caretOffset.get() + 1);
protected void doTestWorldSelector() { initWithFileSmartWithoutErrors(); List<Integer> offsets = getAndRemoveCarets(); List<Pair<Integer, String>> macroses = new ArrayList<>(); Caret currentCaret = getEditor().getCaretModel().getCurrentCaret(); for (Integer offset : offsets) { currentCaret.moveToOffset(offset); new SelectWordHandler(null).execute(getEditor(), currentCaret, getEditorDataContext()); addCaretInfo(currentCaret, macroses); currentCaret.removeSelection(); } UsefulTestCase.assertSameLinesWithFile(getTestResultsFilePath(), getEditorTextWithMacroses(macroses)); }