diff --git a/keymap/sublime.js b/keymap/sublime.js index 5710b9882583cb34229418fcf29c69cda91180a3..7662a82aff1f379b4a91a187a70e640efb79c5ed 100644 --- a/keymap/sublime.js +++ b/keymap/sublime.js @@ -455,6 +455,41 @@ }); }; + function findAndGoTo(cm,next){ + var from = cm.getCursor("from"), to = cm.getCursor("to"); + var selected = CodeMirror.cmpPos(from, to); + if (!selected) { + 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(); + } + cm.setSelection(cur.from(), cur.to()); + } + } + }; + cmds[map[ctrl+"F3"] = "findUnder"] = function(cm) {findAndGoTo(cm,true);}; + cmds[map[ctrl+"Shift-F3"] = "findUnderPrevious"] = function(cm) {findAndGoTo(cm,false);}; + map["Shift-" + ctrl + "["] = "fold"; map["Shift-" + ctrl + "]"] = "unfold"; mapK[ctrl + "0"] = mapK[ctrl + "j"] = "unfoldAll";