Распечатать индекс курсоров выбора в средах разработки JetBrains - PullRequest
0 голосов
/ 12 февраля 2019

Можно ли получить доступ к индексу курсоров, когда активны несколько курсоров выбора?

Пример:

Скажем, у меня был следующий текст с 5 курсорами

lo|rem
ip|sum
do|lor
si|t
am|et

Имея доступ к указателю курсоров, я мог легко превратить его в

lo1rem
ip2sum
do3lor
si4t
am5et

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете сделать это с помощью плагина, просто перебирая каждую каретку / курсор из getCaretModel().getAllCarets() и вставляя текущий индекс.Метод getAllCarets() всегда возвращает каретки, отсортированные по визуальному порядку:

public class CaretIndexAction extends AnAction {
    public CaretIndexAction() {
        super("Insert Caret Index(es)");
    }

    public void actionPerformed(AnActionEvent event) {
        Editor editor = PlatformDataKeys.EDITOR.getData(event.getDataContext());
        Document doc = editor.getDocument();

        WriteCommandAction.runWriteCommandAction(event.getProject(), () -> {
            int i = 1;
            for (Caret c : editor.getCaretModel().getAllCarets()) {
                doc.replaceString(c.getSelectionStart(), c.getSelectionEnd(), String.valueOf(i));
                i++;
            }
        });
    }
}

Результат:

enter image description here

...