diff --git a/lib/ex.coffee b/lib/ex.coffee index e026b96..e6af1fe 100644 --- a/lib/ex.coffee +++ b/lib/ex.coffee @@ -367,9 +367,12 @@ class Ex editor.transact -> for line in [range[0]..range[1]] - editor.scanInBufferRange( + # Following some simple testing and reading the atom docs + # calling backwardsScanInBufferRange is a better solution. + # https://atom.io/docs/api/v1.18.0/TextEditor#instance-backwardsScanInBufferRange + editor.backwardsScanInBufferRange( patternRE, - [[line, 0], [line + 1, 0]], + [[line, 0], [line - 1, 0]], ({match, replace}) -> replace(replaceGroups(match[..], substition)) ) diff --git a/spec/ex-commands-spec.coffee b/spec/ex-commands-spec.coffee index 4e3d839..6ca46d8 100644 --- a/spec/ex-commands-spec.coffee +++ b/spec/ex-commands-spec.coffee @@ -764,12 +764,12 @@ describe "the commands", -> test = (escapeChar, escaped) -> openEx() - submitNormalModeInputText(":substitute/,/\\#{escapeChar}/g") + submitNormalModeInputText(":substitute/,/#{escapeChar}/g") expect(editor.getText()).toEqual("abc#{escaped}def#{escaped}ghi") - it "replaces with a tab", -> test('t', '\t') - it "replaces with a linefeed", -> test('n', '\n') - it "replaces with a carriage return", -> test('r', '\r') + it "replaces with a tab", -> test('\\t', '\t') + it "replaces with a linefeed", -> test('\\n', '\n') + it "replaces with a carriage return", -> test('\\r', '\r') describe "case sensitivity", -> describe "respects the smartcase setting", ->