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