|
57 | 57 | return cm.getSearchCursor(query, pos, queryCaseInsensitive(query)); |
58 | 58 | } |
59 | 59 |
|
60 | | - function persistentDialog(cm, text, deflt, f) { |
61 | | - cm.openDialog(text, f, { |
| 60 | + function persistentDialog(cm, text, deflt, onEnter, onKeyDown) { |
| 61 | + cm.openDialog(text, onEnter, { |
62 | 62 | value: deflt, |
63 | 63 | selectValueOnOpen: true, |
64 | 64 | closeOnEnter: false, |
65 | 65 | onClose: function() { clearSearch(cm); }, |
66 | | - onKeyDown: function(ev, query) { |
67 | | - var cmd = CodeMirror.keyMap['default'][CodeMirror.keyName(ev)]; |
68 | | - if (cmd) { |
69 | | - var nextSearchCmds = ['findNext', 'findPrev']; |
70 | | - var searchCmds = ['find', 'findPersistent']; |
71 | | - if (nextSearchCmds.indexOf(cmd) !== -1) { |
72 | | - startSearch(cm, getSearchState(cm), query); |
73 | | - CodeMirror.commands[cmd](cm); |
74 | | - CodeMirror.e_stop(ev); |
75 | | - } else if (searchCmds.indexOf(cmd) !== -1) { |
76 | | - f(query, ev); |
77 | | - } |
78 | | - } |
79 | | - } |
| 66 | + onKeyDown: onKeyDown |
80 | 67 | }); |
81 | 68 | } |
82 | 69 |
|
|
132 | 119 | var q = cm.getSelection() || state.lastQuery; |
133 | 120 | if (persistent && cm.openDialog) { |
134 | 121 | var hiding = null |
135 | | - persistentDialog(cm, queryDialog, q, function(query, event) { |
| 122 | + var searchNext = function(query, event) { |
136 | 123 | CodeMirror.e_stop(event); |
137 | 124 | if (!query) return; |
138 | 125 | if (query != state.queryText) { |
|
147 | 134 | dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, "window").top) |
148 | 135 | (hiding = dialog).style.opacity = .4 |
149 | 136 | }) |
| 137 | + }; |
| 138 | + persistentDialog(cm, queryDialog, q, searchNext, function(event, query) { |
| 139 | + var cmd = CodeMirror.keyMap[cm.getOption("keyMap")][CodeMirror.keyName(event)]; |
| 140 | + if (cmd == "findNext" || cmd == "findPrev") { |
| 141 | + CodeMirror.e_stop(event); |
| 142 | + startSearch(cm, getSearchState(cm), query); |
| 143 | + cm.execCommand(cmd); |
| 144 | + } else if (cmd == "find" || cmd == "findPersistent") { |
| 145 | + CodeMirror.e_stop(event); |
| 146 | + searchNext(query, event); |
| 147 | + } |
150 | 148 | }); |
151 | 149 | } else { |
152 | 150 | dialog(cm, queryDialog, "Search for:", q, function(query) { |
|
0 commit comments