@@ -0,0 +1,2566 @@
+package com.maddyhome.idea.vim.ex.handler;%0A%0A/*%0A * IdeaVim - A Vim emulator plugin for IntelliJ Idea%0A * Copyright (C) 2003 Rick Maddy%0A *%0A * This program is free software; you can redistribute it and/or%0A * modify it under the terms of the GNU General Public License%0A * as published by the Free Software Foundation; either version 2%0A * of the License, or (at your option) any later version.%0A *%0A * This program is distributed in the hope that it will be useful,%0A * but WITHOUT ANY WARRANTY; without even the implied warranty of%0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the%0A * GNU General Public License for more details.%0A *%0A * You should have received a copy of the GNU General Public License%0A * along with this program; if not, write to the Free Software%0A * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.%0A */%0A%0Aimport com.intellij.openapi.actionSystem.DataContext;%0Aimport com.intellij.openapi.editor.Editor;%0Aimport com.maddyhome.idea.vim.common.Register;%0Aimport com.maddyhome.idea.vim.ex.CommandHandler;%0Aimport com.maddyhome.idea.vim.ex.CommandName;%0Aimport com.maddyhome.idea.vim.ex.CommandParser;%0Aimport com.maddyhome.idea.vim.ex.ExCommand;%0Aimport com.maddyhome.idea.vim.ex.ExException;%0Aimport com.maddyhome.idea.vim.group.CommandGroups;%0Aimport com.maddyhome.idea.vim.group.MotionGroup;%0A%0A/**%0A *%0A */%0Apublic class RepeatHandler extends CommandHandler%0A%7B%0A    public RepeatHandler()%0A    %7B%0A        super(new CommandName%5B%5D %7B%0A            new CommandName(%22@%22, %22%22)%0A        %7D, RANGE_OPTIONAL %7C ARGUMENT_REQUIRED %7C DONT_SAVE_LAST);%0A    %7D%0A%0A    public boolean execute(Editor editor, DataContext context, ExCommand cmd) throws ExException%0A    %7B%0A        char arg = cmd.getArgument().charAt(0);%0A        int line = cmd.getLine(editor, context);%0A%0A        if (arg == '@')%0A        %7B%0A            arg = lastArg;%0A        %7D%0A%0A        MotionGroup.moveCaret(editor, context, CommandGroups.getInstance().getMotion().moveCaretToLine(editor,%0A            context, line));%0A        lastArg = arg;%0A%0A        if (arg == ':')%0A        %7B%0A            return CommandParser.getInstance().processLastCommand(editor, context, 1);%0A        %7D%0A        else%0A        %7B%0A            Register reg = CommandGroups.getInstance().getRegister().getPlaybackRegister(arg);%0A            if (reg != null)%0A            %7B%0A                CommandParser.getInstance().processCommand(editor, context, reg.getText(), 1);%0A                return true;%0A            %7D%0A            else%0A            %7B%0A                return false;%0A            %7D%0A        %7D%0A    %7D%0A%0A    private char lastArg = ':';%0A%7D%0A

Support for :@ commands