From 6d31946d31cb9d33e5dbd91859dbdbcc287d94de Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 19 Dec 2012 08:42:06 -0800 Subject: [PATCH] Merge single-trailing-newline into strip-trailing-whitepsace single-trailing-newline functionality is now available as a config option on the strip-trailing-whitespace package --- .../single-trailing-newline/index.coffee | 1 - .../spec/single-trailing-newline-spec.coffee | 39 ------------------- .../src/single-trailing-newline.coffee | 18 --------- .../strip-trailing-whitespace-spec.coffee | 31 +++++++++++++++ .../src/strip-trailing-whitespace.coffee | 12 +++++- 5 files changed, 41 insertions(+), 60 deletions(-) delete mode 100644 src/packages/single-trailing-newline/index.coffee delete mode 100644 src/packages/single-trailing-newline/spec/single-trailing-newline-spec.coffee delete mode 100644 src/packages/single-trailing-newline/src/single-trailing-newline.coffee diff --git a/src/packages/single-trailing-newline/index.coffee b/src/packages/single-trailing-newline/index.coffee deleted file mode 100644 index 92c48c277..000000000 --- a/src/packages/single-trailing-newline/index.coffee +++ /dev/null @@ -1 +0,0 @@ -module.exports = require 'single-trailing-newline/src/single-trailing-newline' diff --git a/src/packages/single-trailing-newline/spec/single-trailing-newline-spec.coffee b/src/packages/single-trailing-newline/spec/single-trailing-newline-spec.coffee deleted file mode 100644 index 2891bf9c4..000000000 --- a/src/packages/single-trailing-newline/spec/single-trailing-newline-spec.coffee +++ /dev/null @@ -1,39 +0,0 @@ -SingleTrailingNewline = require 'single-trailing-newline' -RootView = require 'root-view' -fs = require 'fs' - -describe "SingleTrailingNewline", -> - [rootView, editor, path] = [] - - beforeEach -> - path = "/tmp/atom-whitespace.txt" - fs.write(path, "") - rootView = new RootView(path) - - SingleTrailingNewline.activate(rootView) - rootView.focus() - editor = rootView.getActiveEditor() - - afterEach -> - fs.remove(path) if fs.exists(path) - rootView.remove() - - it "adds a trailing newline when there is no trailing newline", -> - editor.insertText "foo" - editor.save() - expect(editor.getText()).toBe "foo\n" - - it "removes extra trailing newlines and only keeps one", -> - editor.insertText "foo\n\n\n\n" - editor.save() - expect(editor.getText()).toBe "foo\n" - - it "leaves a buffer with a single trailing newline untouched", -> - editor.insertText "foo\nbar\n" - editor.save() - expect(editor.getText()).toBe "foo\nbar\n" - - it "leaves an empty buffer untouched", -> - editor.insertText "" - editor.save() - expect(editor.getText()).toBe "" diff --git a/src/packages/single-trailing-newline/src/single-trailing-newline.coffee b/src/packages/single-trailing-newline/src/single-trailing-newline.coffee deleted file mode 100644 index 434bc00e1..000000000 --- a/src/packages/single-trailing-newline/src/single-trailing-newline.coffee +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = - name: "Add a single trailing newline" - - activate: (rootView) -> - for buffer in rootView.project.getBuffers() - @addSingleTrailingNewlineBeforeSave(buffer) - - rootView.project.on 'new-buffer', (buffer) => - @addSingleTrailingNewlineBeforeSave(buffer) - - addSingleTrailingNewlineBeforeSave: (buffer) -> - buffer.on 'before-save', -> - if buffer.getLastLine() is '' - row = buffer.getLastRow() - while row and buffer.lineForRow(--row) is '' - buffer.deleteRow(row) - else - buffer.append('\n') diff --git a/src/packages/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee b/src/packages/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee index 857a8f5cb..d55f2c1bd 100644 --- a/src/packages/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee +++ b/src/packages/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee @@ -33,3 +33,34 @@ describe "StripTrailingWhitespace", -> editor.getBuffer().save() expect(editor.getText()).toBe 'Some text.\n' + + describe "stripTrailingWhitespace.singleTrailingNewline config", -> + [originalConfigValue] = [] + beforeEach -> + originalConfigValue = config.get("stripTrailingWhitespace.singleTrailingNewline") + config.set("stripTrailingWhitespace.singleTrailingNewline", true) + config.update() + + afterEach -> + config.set("stripTrailingWhitespace.singleTrailingNewline", originalConfigValue) + config.update() + + it "adds a trailing newline when there is no trailing newline", -> + editor.insertText "foo" + editor.save() + expect(editor.getText()).toBe "foo\n" + + it "removes extra trailing newlines and only keeps one", -> + editor.insertText "foo\n\n\n\n" + editor.save() + expect(editor.getText()).toBe "foo\n" + + it "leaves a buffer with a single trailing newline untouched", -> + editor.insertText "foo\nbar\n" + editor.save() + expect(editor.getText()).toBe "foo\nbar\n" + + it "leaves an empty buffer untouched", -> + editor.insertText "" + editor.save() + expect(editor.getText()).toBe "" diff --git a/src/packages/strip-trailing-whitespace/src/strip-trailing-whitespace.coffee b/src/packages/strip-trailing-whitespace/src/strip-trailing-whitespace.coffee index d33eafe87..eba8e6668 100644 --- a/src/packages/strip-trailing-whitespace/src/strip-trailing-whitespace.coffee +++ b/src/packages/strip-trailing-whitespace/src/strip-trailing-whitespace.coffee @@ -10,5 +10,13 @@ module.exports = stripTrailingWhitespaceBeforeSave: (buffer) -> buffer.on 'before-save', -> - buffer.scan /[ \t]+$/g, (match, range, { replace }) -> - replace('') + buffer.transact -> + buffer.scan /[ \t]+$/g, (match, range, { replace }) -> + replace('') + if config.get("stripTrailingWhitespace.singleTrailingNewline") + if buffer.getLastLine() is '' + row = buffer.getLastRow() + while row and buffer.lineForRow(--row) is '' + buffer.deleteRow(row) + else + buffer.append('\n')