com.maddyhome.idea.vim.ex.handler.ShiftRightHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.maddyhome.idea.vim.ex.handler.ShiftRightHandler.java

Source

/*
 * IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
 * Copyright (C) 2003-2016 The IdeaVim authors
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

package com.maddyhome.idea.vim.ex.handler;

import com.google.common.collect.Lists;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.editor.Caret;
import com.intellij.openapi.editor.Editor;
import com.intellij.util.ArrayUtil;
import com.maddyhome.idea.vim.VimPlugin;
import com.maddyhome.idea.vim.common.TextRange;
import com.maddyhome.idea.vim.ex.CommandHandler;
import com.maddyhome.idea.vim.ex.ExCommand;
import com.maddyhome.idea.vim.handler.CaretOrder;
import org.jetbrains.annotations.NotNull;

import java.util.List;

/**
 *
 */
public class ShiftRightHandler extends CommandHandler {
    public ShiftRightHandler() {
        super(">", ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", ARGUMENT_OPTIONAL | WRITABLE, true,
                CaretOrder.DECREASING_OFFSET);
    }

    public boolean execute(@NotNull Editor editor, @NotNull Caret caret, @NotNull DataContext context,
            @NotNull ExCommand cmd) {
        final TextRange range = cmd.getTextRange(editor, caret, context, true);
        final int[] endOffsets = range.getEndOffsets();
        final List<Integer> ends = Lists.newArrayListWithCapacity(endOffsets.length);
        for (int endOffset : endOffsets) {
            ends.add(endOffset - 1);
        }
        VimPlugin.getChange().indentRange(editor, caret, context,
                new TextRange(range.getStartOffsets(), ArrayUtil.toIntArray(ends)), cmd.getCommand().length(), 1);

        return true;
    }
}