List of usage examples for com.intellij.openapi.editor EditorModificationUtil insertStringAtCaret
public static int insertStringAtCaret(Editor editor, @NotNull String s, boolean toProcessOverwriteMode, boolean toMoveCaret, int caretShift)
From source file:com.perl5.lang.htmlmason.idea.editor.HTMLMasonTypedHandler.java
License:Apache License
@Override public Result charTyped(char c, Project project, @NotNull Editor editor, @NotNull PsiFile file) { if (file.getViewProvider() instanceof HTMLMasonFileViewProvider) { if (c == '>') { PsiElement element = file.findElementAt(editor.getCaretModel().getOffset() - 2); if (HTML_MASON_TEMPLATE_CONTEXT_PATTERN.accepts(element) || HTML_MASON_TEMPLATE_CONTEXT_PATTERN_BROKEN.accepts(element)) { assert element != null; String elementText = element.getText(); String closeTag;//from w w w .j a v a 2s .co m if (elementText.equals(KEYWORD_FLAGS)) { EditorModificationUtil.insertStringAtCaret(editor, "\ninherit => ''\n" + KEYWORD_FLAGS_CLOSER, false, true, 13); } else { if ((closeTag = getCloseTag(project, "<%" + elementText + ">")) != null) EditorModificationUtil.insertStringAtCaret(editor, closeTag, false, false); } } } else if (c == ' ') { PsiElement element = file.findElementAt(editor.getCaretModel().getOffset() - 2); if (element != null) { IElementType elementType = element.getNode().getElementType(); if (elementType == HTML_MASON_BLOCK_OPENER && !isNextElement(element, HTML_MASON_BLOCK_CLOSER)) { EditorModificationUtil.insertStringAtCaret(editor, " " + KEYWORD_BLOCK_CLOSER, false, false); } else if (elementType == HTML_MASON_CALL_OPENER && !isNextElement(element, HTML_MASON_CALL_CLOSER)) { EditorModificationUtil.insertStringAtCaret(editor, " " + KEYWORD_CALL_CLOSER, false, false); } else if (elementType == HTML_MASON_CALL_FILTERING_OPENER && !isNextElement(element, HTML_MASON_CALL_CLOSER)) { EditorModificationUtil.insertStringAtCaret(editor, " " + KEYWORD_CALL_CLOSER + KEYWORD_CALL_CLOSE_TAG_START + KEYWORD_TAG_CLOSER, false, false); } else if (elementType == HTML_MASON_METHOD_OPENER) { String closeTag = getCloseTag(project, element.getText()); if (closeTag != null) { EditorModificationUtil.insertStringAtCaret(editor, ">\n" + closeTag, false, false); } } else if (elementType == HTML_MASON_DEF_OPENER) { String closeTag = getCloseTag(project, element.getText()); if (closeTag != null) { EditorModificationUtil.insertStringAtCaret(editor, ">\n" + closeTag, false, false); } } } } } return super.charTyped(c, project, editor, file); }
From source file:com.perl5.lang.perl.idea.editor.smartkeys.PerlTypedHandler.java
License:Apache License
@Nullable private Result handleSingleQuote(char typedChar, boolean hasSpace, Editor editor) { char closeChar = getRegexCloseChar(typedChar, hasSpace); if (closeChar > 0) { EditorModificationUtil.insertStringAtCaret(editor, typedChar + "" + closeChar, false, true, 1); return Result.STOP; }/*from w w w .j a va2 s . c o m*/ return null; }
From source file:com.perl5.lang.perl.idea.editor.smartkeys.PerlTypedHandler.java
License:Apache License
@Nullable private Result handleDoubleQuote(char typedChar, boolean hasSpace, Editor editor) { char closeChar = getRegexCloseChar(typedChar, hasSpace); if (closeChar > 0) { String appendix = typedChar + "" + closeChar; if (closeChar == typedChar) { appendix += closeChar;//from w w w . ja va2s . c o m } else { appendix += appendix; } EditorModificationUtil.insertStringAtCaret(editor, appendix, false, true, 1); return Result.STOP; } return null; }
From source file:com.perl5.lang.pod.idea.editor.PodTypedHandler.java
License:Apache License
@Override public Result beforeCharTyped(char c, Project project, Editor editor, PsiFile file, FileType fileType) { if (file instanceof PodFile) { if (c == '<') { CaretModel caretModel = editor.getCaretModel(); int offset = caretModel.getOffset() - 1; PsiElement element = file.findElementAt(offset); IElementType elementType = element == null ? null : element.getNode().getElementType(); String text = element == null ? null : element.getText(); if (elementType == POD_IDENTIFIER && text != null) { if (text.length() == 1 && StringUtil.containsChar(POD_COMMANDS, text.charAt(0))) { EditorModificationUtil.insertStringAtCaret(editor, ">", false, false, 0); }/*w w w . ja v a 2s. c o m*/ } else if (elementType == POD_ANGLE_LEFT || POD_COMMANDS_TOKENSET.contains(elementType)) { //noinspection ConstantConditions extendAngles(element.getParent()); caretModel.moveToOffset(offset + 2); return Result.STOP; } } else if (c == '>') // '>' { CaretModel caretModel = editor.getCaretModel(); int offset = caretModel.getOffset(); PsiElement element = file.findElementAt(offset); IElementType elementType = element == null ? null : element.getNode().getElementType(); int extraOffset = 0; if (elementType != POD_ANGLE_RIGHT) { offset--; element = file.findElementAt(offset); elementType = element == null ? null : element.getNode().getElementType(); extraOffset++; } if (elementType == POD_ANGLE_RIGHT) { //noinspection ConstantConditions caretModel.moveToOffset(offset + extendAngles(element.getParent()) + extraOffset); return Result.STOP; } } } return super.beforeCharTyped(c, project, editor, file, fileType); }
From source file:com.perl5.lang.tt2.idea.editor.TemplateToolkitTypedHandler.java
License:Apache License
protected Result processChar(char c, Project project, Editor editor, PsiFile file, FileType fileType) { FileViewProvider viewProvider = file.getViewProvider(); if (!(viewProvider instanceof TemplateToolkitFileViewProvider)) { return null; }/* w ww .ja v a 2 s .c o m*/ TemplateToolkitSettings settings = TemplateToolkitSettings.getInstance(project); String openTag = settings.START_TAG; if (StringUtil.isEmpty(openTag) || c != openTag.charAt(openTag.length() - 1)) { return null; } int offset = editor.getCaretModel().getOffset(); if (offset == 0) { return null; } PsiElement element = viewProvider.findElementAt(offset - 1, TemplateToolkitLanguage.INSTANCE); if (element == null) { return null; } IElementType tokenType = element.getNode().getElementType(); if (tokenType != TT2_HTML) { return null; } String openTagPrefix = openTag.substring(0, openTag.length() - 1); if (openTagPrefix.length() == 0) { return null; } int startOffset = offset - openTagPrefix.length(); if (startOffset < 0) { return null; } if (StringUtil.equals(file.getText().subSequence(startOffset, offset), openTagPrefix)) { EditorModificationUtil.insertStringAtCaret(editor, c + " " + settings.END_TAG, false, true, 2); return Result.STOP; } return null; }