1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2025-05-02 01:34:03 +02:00

Added support for i_F1, i_Ctrl-U and i_0 Ctrl-D

This commit is contained in:
rmaddy 2003-04-20 19:24:49 +00:00
parent 2b15dad5c8
commit 1bde1b42a3

View File

@ -45,7 +45,6 @@ import com.maddyhome.idea.vim.helper.CharacterHelper;
import com.maddyhome.idea.vim.helper.EditorData;
import com.maddyhome.idea.vim.helper.EditorHelper;
import com.maddyhome.idea.vim.key.KeyParser;
import com.maddyhome.idea.vim.ui.CommandEntryPanel;
import com.maddyhome.idea.vim.undo.UndoManager;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
@ -189,6 +188,12 @@ public class ChangeGroup extends AbstractActionGroup
}
}
public void insertHelp(Editor editor, DataContext context)
{
processEscape(editor, context);
KeyHandler.executeAction("HelpTopics", context);
}
public boolean insertRegister(Editor editor, DataContext context, char key)
{
Register register = CommandGroups.getInstance().getRegister().getRegister(key);
@ -224,6 +229,25 @@ public class ChangeGroup extends AbstractActionGroup
return res;
}
public boolean insertDeleteInsertedText(Editor editor, DataContext context)
{
int deleteTo = insertStart;
int offset = editor.getCaretModel().getOffset();
if (offset == insertStart)
{
deleteTo = CommandGroups.getInstance().getMotion().moveCaretToLineStartSkipLeading(editor);
}
if (deleteTo != -1)
{
deleteRange(editor, context, new TextRange(deleteTo, offset), MotionGroup.EXCLUSIVE);
return true;
}
return false;
}
public boolean insertDeletePreviousWord(Editor editor, DataContext context)
{
int deleteTo = insertStart;
@ -788,6 +812,9 @@ public class ChangeGroup extends AbstractActionGroup
{
// TODO: Hack - find better way to do this exceptional case - at least make constants out of these strings
// FIX - typing cw on a one char word results in two words being deleted because e moved to end of next
// word when on a one char word
// Vim treats cw as ce and cW as cE if cursor is on a non-blank character
String id = ActionManager.getInstance().getId(argument.getMotion().getAction());
if (id.equals("VimMotionWordRight"))
@ -945,10 +972,29 @@ public class ChangeGroup extends AbstractActionGroup
public void indentLines(Editor editor, DataContext context, int lines, int dir)
{
int cnt = 1;
if (CommandState.getInstance().getMode() == CommandState.MODE_INSERT ||
CommandState.getInstance().getMode() == CommandState.MODE_REPLACE)
{
if (strokes.size() > 0)
{
Object stroke = strokes.get(strokes.size() - 1);
if (stroke instanceof Character)
{
Character key = (Character)stroke;
if (key.charValue() == '0')
{
deleteCharacter(editor, context, -1);
cnt = 99;
}
}
}
}
int start = editor.getCaretModel().getOffset();
int end = CommandGroups.getInstance().getMotion().moveCaretToLineEndOffset(editor, lines - 1);
indentRange(editor, context, new TextRange(start, end), 1, dir);
indentRange(editor, context, new TextRange(start, end), cnt, dir);
}
public void indentMotion(Editor editor, DataContext context, int count, int rawCount, Argument argument, int dir)
@ -1008,6 +1054,8 @@ public class ChangeGroup extends AbstractActionGroup
}
}
// FIX - Undo of indent actually does reverse outdent!
if (CommandState.getInstance().getMode() != CommandState.MODE_INSERT &&
CommandState.getInstance().getMode() != CommandState.MODE_REPLACE)
{