Skip to content

Commit b41a423

Browse files
committed
Implemented replace functionality
1 parent 093c8ff commit b41a423

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

client/modules/IDE/components/Editor.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ class Editor extends React.Component {
121121
[`${metaKey}-F`]: 'findPersistent',
122122
[`${metaKey}-G`]: 'findNext',
123123
[`Shift-${metaKey}-G`]: 'findPrev',
124+
[`${metaKey}-R`]: 'replace',
124125
});
125126

126127
this.initializeDocuments(this.props.files);

client/utils/codemirror-search.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,16 @@ export default function(CodeMirror) {
8686

8787
var upArrow = dialog.getElementsByClassName("up-arrow")[0];
8888
CodeMirror.on(upArrow, "click", function () {
89+
cm.focus();
8990
CodeMirror.commands.findPrev(cm);
9091
searchField.blur();
91-
cm.focus();
9292
});
9393

9494
var downArrow = dialog.getElementsByClassName("down-arrow")[0];
9595
CodeMirror.on(downArrow, "click", function () {
96+
cm.focus();
9697
CodeMirror.commands.findNext(cm);
9798
searchField.blur();
98-
cm.focus();
9999
});
100100

101101
var regexpButton = dialog.getElementsByClassName("CodeMirror-regexp-button")[0];
@@ -401,18 +401,20 @@ export default function(CodeMirror) {
401401

402402
// TODO: This will need updating if replace is implemented
403403
function replace(cm, all) {
404+
const state = getSearchState(cm);
404405
var prevDialog = document.getElementsByClassName("CodeMirror-dialog")[0];
405406
if (prevDialog) {
406407
clearSearch(cm);
407408
prevDialog.parentNode.removeChild(prevDialog);
408409
cm.focus();
409410
}
410411
if (cm.getOption("readOnly")) return;
411-
var query = cm.getSelection() || getSearchState(cm).lastQuery;
412+
var query = cm.getSelection() || state.lastQuery;
412413
var dialogText = all ? "Replace all:" : "Replace:"
413414
dialog(cm, dialogText + replaceQueryDialog, dialogText, query, function(query) {
414415
if (!query) return;
415-
query = parseQuery(query);
416+
query = parseQuery(query, state);
417+
416418
dialog(cm, replacementQueryDialog, "Replace with:", "", function(text) {
417419
text = parseString(text)
418420
if (all) {
@@ -451,6 +453,6 @@ export default function(CodeMirror) {
451453
CodeMirror.commands.findNext = doSearch;
452454
CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};
453455
CodeMirror.commands.clearSearch = clearSearch;
454-
// CodeMirror.commands.replace = replace;
455-
// CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};
456+
CodeMirror.commands.replace = replace;
457+
CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};
456458
};

0 commit comments

Comments
 (0)