From 38afa1e5210bdaf12d75bd7625468121603a1092 Mon Sep 17 00:00:00 2001
From: B Krishna Chaitanya <bkchaitan94@gmail.com>
Date: Mon, 17 Mar 2014 19:30:26 +0530
Subject: [PATCH] [sublime keymap] Ctrl-F3 and Ctrl-Shift-F3 bindings

---
 keymap/sublime.js | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/keymap/sublime.js b/keymap/sublime.js
index 5710b988..7662a82a 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";
-- 
GitLab