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
This commit is contained in:
Kevin Sawicki 2012-12-19 08:42:06 -08:00
parent b937e0dfbd
commit 6d31946d31
5 changed files with 41 additions and 60 deletions

View File

@ -1 +0,0 @@
module.exports = require 'single-trailing-newline/src/single-trailing-newline'

View File

@ -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 ""

View File

@ -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')

View File

@ -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 ""

View File

@ -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')