Skip to content
Snippets Groups Projects
Commit 1696785c authored by Marijn Haverbeke's avatar Marijn Haverbeke
Browse files

[sublime keymap] Fix findUnder, add test

Issue #2380
parent 38afa1e5
No related branches found
No related tags found
No related merge requests found
......@@ -455,40 +455,31 @@
});
};
function findAndGoTo(cm,next){
function findAndGoTo(cm, forward) {
var from = cm.getCursor("from"), to = cm.getCursor("to");
var selected = CodeMirror.cmpPos(from, to);
if (!selected) {
if (CodeMirror.cmpPos(from, to) == 0) {
var word = wordAt(cm, from);
if (!word.word) return;
cm.setSelection(word.from, word.to);
from = word.from;
to = word.to;
selected = true;
}
if (selected){
var query = cm.getRange(from, to);
var searchstart = (next ? to : {line:from.line,ch:from.ch-1});
var cur = cm.getSearchCursor(query, searchstart);
var found;
if(next) found = cur.findNext();
else found = cur.findPrevious();
if (found)
cm.setSelection(cur.from(), cur.to());
else{
if(next){
cur = cm.getSearchCursor(query, Pos(cm.firstLine(),0));
cur.findNext();
} else {
cur = cm.getSearchCursor(query, Pos(cm.lastLine()+1,0));
cur.findPrevious();
}
var query = cm.getRange(from, to);
var cur = cm.getSearchCursor(query, forward ? to : from);
if (forward ? cur.findNext() : cur.findPrevious()) {
cm.setSelection(cur.from(), cur.to());
} else {
cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0)
: cm.clipPos(Pos(cm.lastLine())));
if (forward ? cur.findNext() : cur.findPrevious())
cm.setSelection(cur.from(), cur.to());
}
else if (word)
cm.setSelection(from, to);
}
};
cmds[map[ctrl+"F3"] = "findUnder"] = function(cm) {findAndGoTo(cm,true);};
cmds[map[ctrl+"Shift-F3"] = "findUnderPrevious"] = function(cm) {findAndGoTo(cm,false);};
cmds[map[ctrl + "F3"] = "findUnder"] = function(cm) { findAndGoTo(cm, true); };
cmds[map["Shift-" + ctrl + "F3"] = "findUnderPrevious"] = function(cm) { findAndGoTo(cm,false); };
map["Shift-" + ctrl + "["] = "fold";
map["Shift-" + ctrl + "]"] = "unfold";
......
......@@ -286,4 +286,12 @@
Pos(0, 1), "swapWithSublimeMark", at(1, 1), "swapWithSublimeMark", at(0, 1),
"deleteToSublimeMark", val("aef\nghi"),
"sublimeYank", val("abc\ndef\nghi"), at(1, 1));
stTest("findUnder", "foo foobar a",
"findUnder", hasSel(0, 4, 0, 7),
"findUnder", hasSel(0, 0, 0, 3),
"findUnderPrevious", hasSel(0, 4, 0, 7),
"findUnderPrevious", hasSel(0, 0, 0, 3),
Pos(0, 4), "findUnder", hasSel(0, 4, 0, 10),
Pos(0, 11), "findUnder", hasSel(0, 11, 0, 11));
})();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment