Skip to content

Commit

Permalink
[Bug 419934] [Editor] Vi Keybindings - Added 'Visual' mode. --Signed-…
Browse files Browse the repository at this point in the history
…of-by: Steve Jahns <s.t.jahns@gmail.com>
  • Loading branch information
stjahns committed Oct 20, 2013
1 parent 316d885 commit f514b0a
Show file tree
Hide file tree
Showing 5 changed files with 303 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ define("orion/editor/actions", [ //$NON-NLS-0$
textView.setKeyBinding(new mKeyBinding.KeyBinding("k", true), "findNext"); //$NON-NLS-1$ //$NON-NLS-0$
textView.setAction("findNext", function(options) { //$NON-NLS-0$
if (this._find){
options.useLastString = true;
this._find.find(true, options);
return true;
}
Expand All @@ -88,6 +89,7 @@ define("orion/editor/actions", [ //$NON-NLS-0$
textView.setKeyBinding(new mKeyBinding.KeyBinding("k", true, true), "findPrevious"); //$NON-NLS-1$ //$NON-NLS-0$
textView.setAction("findPrevious", function(options) { //$NON-NLS-0$
if (this._find){
options.useLastString = true;
this._find.find(false, options);
return true;
}
Expand Down Expand Up @@ -536,8 +538,8 @@ define("orion/editor/actions", [ //$NON-NLS-0$
init: function() {
var textView = this.editor.getTextView();

textView.setAction("lineStart", function() { //$NON-NLS-0$
return this.lineStart();
textView.setAction("lineStart", function(data) { //$NON-NLS-0$
return this.lineStart(data);
}.bind(this));

textView.setAction("enter", function() { //$NON-NLS-0$
Expand Down Expand Up @@ -945,7 +947,7 @@ define("orion/editor/actions", [ //$NON-NLS-0$
}
return {commentStart: commentStart, commentEnd: commentEnd};
},
lineStart: function() {
lineStart: function(args) {
var editor = this.editor;
var model = editor.getModel();
var caretOffset = editor.getCaretOffset();
Expand All @@ -961,7 +963,15 @@ define("orion/editor/actions", [ //$NON-NLS-0$
}
offset += lineOffset;
if (caretOffset !== offset) {
editor.setSelection(offset, offset);
if (args.select) {
var view = editor.getTextView();
var selection = view.getSelection();
var caret = view.getCaretOffset();
var anchor = (selection.start === caret) ? selection.end : selection.start;
view.setSelection(anchor, offset);
} else {
editor.setSelection(offset, offset);
}
return true;
}
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,9 @@ define("orion/editor/find", [ //$NON-NLS-0$
reverse : !forward
});
var string = this.getFindString();
if (tempOptions && tempOptions.useLastString) {
string = this._lastString;
}
var count;
if (tempOptions) {
string = tempOptions.findString || string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,14 @@ define({
"vip": "Paste After Char or Line", //$NON-NLS-1$ //$NON-NLS-0$
"viP": "Paste Before Char or Line", //$NON-NLS-1$ //$NON-NLS-0$
"viStar": "Search Word Under Cursor", //$NON-NLS-1$ //$NON-NLS-0$

"viv": "Enter Visual Mode", //$NON-NLS-1$ //$NON-NLS-0$
"vivisual": "(Visual)", //$NON-NLS-1$ //$NON-NLS-0$
"vivc": "${0} Change Selection", //$NON-NLS-1$ //$NON-NLS-0$
"vivy": "${0} Yank Selection", //$NON-NLS-1$ //$NON-NLS-0$
"vivY": "${0} Yank Selection Lines", //$NON-NLS-1$ //$NON-NLS-0$
"vivx": "${0} Kill Selection", //$NON-NLS-1$ //$NON-NLS-0$
"vivX": "${0} Kill Selection Lines", //$NON-NLS-1$ //$NON-NLS-0$
"vivr": "${0} Replace Selection", //$NON-NLS-1$ //$NON-NLS-0$

"replaceAll": "Replacing all...", //$NON-NLS-1$ //$NON-NLS-0$
"replacedMatches": "Replaced ${0} matches", //$NON-NLS-1$ //$NON-NLS-0$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4645,22 +4645,22 @@ define("orion/editor/textView", [ //$NON-NLS-0$
this._actions = {
"noop": {defaultHandler: function() {return self._doNoop();}}, //$NON-NLS-0$

"lineUp": {defaultHandler: function(data) {return self._doLineUp(merge(data,{select: false}));}, actionDescription: {name: messages.lineUp}}, //$NON-NLS-0$
"lineDown": {defaultHandler: function(data) {return self._doLineDown(merge(data,{select: false}));}, actionDescription: {name: messages.lineDown}}, //$NON-NLS-0$
"lineStart": {defaultHandler: function(data) {return self._doHome(merge(data,{select: false, ctrl:false}));}, actionDescription: {name: messages.lineStart}}, //$NON-NLS-0$
"lineEnd": {defaultHandler: function(data) {return self._doEnd(merge(data,{select: false, ctrl:false}));}, actionDescription: {name: messages.lineEnd}}, //$NON-NLS-0$
"charPrevious": {defaultHandler: function(data) {return self._doCursorPrevious(merge(data,{select: false, unit:"character"}));}, actionDescription: {name: messages.charPrevious}}, //$NON-NLS-1$ //$NON-NLS-0$
"charNext": {defaultHandler: function(data) {return self._doCursorNext(merge(data,{select: false, unit:"character"}));}, actionDescription: {name: messages.charNext}}, //$NON-NLS-1$ //$NON-NLS-0$
"pageUp": {defaultHandler: function(data) {return self._doPageUp(merge(data,{select: false}));}, actionDescription: {name: messages.pageUp}}, //$NON-NLS-0$
"pageDown": {defaultHandler: function(data) {return self._doPageDown(merge(data,{select: false}));}, actionDescription: {name: messages.pageDown}}, //$NON-NLS-0$
"lineUp": {defaultHandler: function(data) {return self._doLineUp(data);}, actionDescription: {name: messages.lineUp}}, //$NON-NLS-0$
"lineDown": {defaultHandler: function(data) {return self._doLineDown(data);}, actionDescription: {name: messages.lineDown}}, //$NON-NLS-0$
"lineStart": {defaultHandler: function(data) {return self._doHome(merge(data,{ctrl:false}));}, actionDescription: {name: messages.lineStart}}, //$NON-NLS-0$
"lineEnd": {defaultHandler: function(data) {return self._doEnd(merge(data,{ctrl:false}));}, actionDescription: {name: messages.lineEnd}}, //$NON-NLS-0$
"charPrevious": {defaultHandler: function(data) {return self._doCursorPrevious(merge(data,{unit:"character"}));}, actionDescription: {name: messages.charPrevious}}, //$NON-NLS-1$ //$NON-NLS-0$
"charNext": {defaultHandler: function(data) {return self._doCursorNext(merge(data,{unit:"character"}));}, actionDescription: {name: messages.charNext}}, //$NON-NLS-1$ //$NON-NLS-0$
"pageUp": {defaultHandler: function(data) {return self._doPageUp(data);}, actionDescription: {name: messages.pageUp}}, //$NON-NLS-0$
"pageDown": {defaultHandler: function(data) {return self._doPageDown(data);}, actionDescription: {name: messages.pageDown}}, //$NON-NLS-0$
"scrollPageUp": {defaultHandler: function(data) {return self._doScroll(merge(data,{type: "pageUp"}));}, actionDescription: {name: messages.scrollPageUp}}, //$NON-NLS-1$ //$NON-NLS-0$
"scrollPageDown": {defaultHandler: function(data) {return self._doScroll(merge(data,{type: "pageDown"}));}, actionDescription: {name: messages.scrollPageDown}}, //$NON-NLS-1$ //$NON-NLS-0$
"scrollLineUp": {defaultHandler: function(data) {return self._doScroll(merge(data,{type: "lineUp"}));}, actionDescription: {name: messages.scrollLineUp}}, //$NON-NLS-1$ //$NON-NLS-0$
"scrollLineDown": {defaultHandler: function(data) {return self._doScroll(merge(data,{type: "lineDown"}));}, actionDescription: {name: messages.scrollLineDown}}, //$NON-NLS-1$ //$NON-NLS-0$
"wordPrevious": {defaultHandler: function(data) {return self._doCursorPrevious(merge(data,{select: false, unit:"word"}));}, actionDescription: {name: messages.wordPrevious}}, //$NON-NLS-1$ //$NON-NLS-0$
"wordNext": {defaultHandler: function(data) {return self._doCursorNext(merge(data,{select: false, unit:"word"}));}, actionDescription: {name: messages.wordNext}}, //$NON-NLS-1$ //$NON-NLS-0$
"textStart": {defaultHandler: function(data) {return self._doHome(merge(data,{select: false, ctrl:true}));}, actionDescription: {name: messages.textStart}}, //$NON-NLS-0$
"textEnd": {defaultHandler: function(data) {return self._doEnd(merge(data,{select: false, ctrl:true}));}, actionDescription: {name: messages.textEnd}}, //$NON-NLS-0$
"wordPrevious": {defaultHandler: function(data) {return self._doCursorPrevious(merge(data,{unit:"word"}));}, actionDescription: {name: messages.wordPrevious}}, //$NON-NLS-1$ //$NON-NLS-0$
"wordNext": {defaultHandler: function(data) {return self._doCursorNext(merge(data,{unit:"word"}));}, actionDescription: {name: messages.wordNext}}, //$NON-NLS-1$ //$NON-NLS-0$
"textStart": {defaultHandler: function(data) {return self._doHome(merge(data,{ctrl:true}));}, actionDescription: {name: messages.textStart}}, //$NON-NLS-0$
"textEnd": {defaultHandler: function(data) {return self._doEnd(merge(data,{ctrl:true}));}, actionDescription: {name: messages.textEnd}}, //$NON-NLS-0$
"scrollTextStart": {defaultHandler: function(data) {return self._doScroll(merge(data,{type: "textStart"}));}, actionDescription: {name: messages.scrollTextStart}}, //$NON-NLS-1$ //$NON-NLS-0$
"scrollTextEnd": {defaultHandler: function(data) {return self._doScroll(merge(data,{type: "textEnd"}));}, actionDescription: {name: messages.scrollTextEnd}}, //$NON-NLS-1$ //$NON-NLS-0$
"centerLine": {defaultHandler: function(data) {return self._doScroll(merge(data,{type: "centerLine"}));}, actionDescription: {name: messages.centerLine}}, //$NON-NLS-1$ //$NON-NLS-0$
Expand Down

0 comments on commit f514b0a

Please sign in to comment.