package org.intellij.plugins.markdown.ui.actions.styling; import com.intellij.psi.tree.IElementType; import org.intellij.plugins.markdown.lang.MarkdownElementTypes; import org.jetbrains.annotations.NotNull; public class ToggleItalicAction extends BaseToggleStateAction { @NotNull protected String getBoundString(@NotNull CharSequence text, int selectionStart, int selectionEnd) { return isWord(text, selectionStart, selectionEnd) ? "_" : "*"; } protected boolean shouldMoveToWordBounds() { return true; } @NotNull protected IElementType getTargetNodeType() { return MarkdownElementTypes.EMPH; } private static boolean isWord(@NotNull CharSequence text, int from, int to) { return (from == 0 || !Character.isLetterOrDigit(text.charAt(from - 1))) && (to == text.length() || !Character.isLetterOrDigit(text.charAt(to))); } }