From eb0ef20e96b4dfc821eb693982510af60ab6ac45 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke <marijnh@gmail.com> Date: Wed, 19 Aug 2015 10:35:15 +0200 Subject: [PATCH] [search addon] Allow \n and \r in search and replace strings Closes #3456 --- addon/search/search.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/addon/search/search.js b/addon/search/search.js index ed3c47755..5ec6ed6fb 100644 --- a/addon/search/search.js +++ b/addon/search/search.js @@ -76,11 +76,21 @@ else if (confirm(shortText)) fs[0](); } + function parseString(string) { + return string.replace(/\\(.)/g, function(_, ch) { + if (ch == "n") return "\n" + if (ch == "r") return "\r" + return ch + }) + } + function parseQuery(query) { var isRE = query.match(/^\/(.*)\/([a-z]*)$/); if (isRE) { try { query = new RegExp(isRE[1], isRE[2].indexOf("i") == -1 ? "" : "i"); } catch(e) {} // Not a regular expression after all, do a string search + } else { + query = parseString(query) } if (typeof query == "string" ? query == "" : query.test("")) query = /x^/; @@ -157,6 +167,7 @@ if (!query) return; query = parseQuery(query); dialog(cm, replacementQueryDialog, "Replace with:", "", function(text) { + text = parseString(text) if (all) { cm.operation(function() { for (var cursor = getSearchCursor(cm, query); cursor.findNext();) { -- GitLab