From 4fc7e1a9d5a8515d8a51e2d7c36d55ffd4168673 Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Mon, 22 Apr 2013 16:13:11 -0700 Subject: [PATCH 1/6] Leave Markdown files alone --- src/packages/whitespace/lib/whitespace.coffee | 3 ++- .../whitespace/spec/whitespace-spec.coffee | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/packages/whitespace/lib/whitespace.coffee b/src/packages/whitespace/lib/whitespace.coffee index a16f9877b..1d19347b9 100644 --- a/src/packages/whitespace/lib/whitespace.coffee +++ b/src/packages/whitespace/lib/whitespace.coffee @@ -4,13 +4,14 @@ module.exports = configDefaults: ensureSingleTrailingNewline: true + ignoredGrammars: ["GitHub Markdown"] whitespaceBeforeSave: (editSession) -> buffer = editSession.buffer buffer.on 'will-be-saved', -> + return if editSession.getGrammar().name in config.get("whitespace.ignoredGrammars") buffer.transact -> buffer.scan /[ \t]+$/g, ({replace}) -> replace('') - if config.get('whitespace.ensureSingleTrailingNewline') if buffer.getLastLine() is '' row = buffer.getLastRow() - 1 diff --git a/src/packages/whitespace/spec/whitespace-spec.coffee b/src/packages/whitespace/spec/whitespace-spec.coffee index 35fe6a8ee..ea945d827 100644 --- a/src/packages/whitespace/spec/whitespace-spec.coffee +++ b/src/packages/whitespace/spec/whitespace-spec.coffee @@ -86,3 +86,28 @@ describe "Whitespace", -> editor.getBuffer().save() expect(editor.getText()).toBe "foo\n" expect(editor.getCursorBufferPosition()).toEqual([0,3]) + + describe "whitespace.ensureSingleTrailingNewline config", -> + [originalConfigValue] = [] + grammar = null + + beforeEach -> + originalConfigValue = config.get("whitespace.ignoredGrammars") + expect(originalConfigValue).toEqual ["GitHub Markdown"] + spyOn(syntax, "addGrammar").andCallThrough() + atom.activatePackage("gfm") + expect(syntax.addGrammar).toHaveBeenCalled() + grammar = syntax.addGrammar.argsForCall[0][0] + + afterEach -> + config.set("whitespace.ignoredGrammars", originalConfigValue) + config.update() + + it "parses the grammar", -> + expect(grammar).toBeDefined() + expect(grammar.scopeName).toBe "source.gfm" + + it "leaves Markdown files alone", -> + editor.insertText "foo \nline break!" + editor.getBuffer().save() + expect(editor.getText()).toBe "foo \nline break!" From 4ed36ec0959a3d928309af3786fae92b36ded34e Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Mon, 22 Apr 2013 16:57:05 -0700 Subject: [PATCH 2/6] Fix dem specs --- src/packages/whitespace/spec/whitespace-spec.coffee | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/packages/whitespace/spec/whitespace-spec.coffee b/src/packages/whitespace/spec/whitespace-spec.coffee index ea945d827..444539932 100644 --- a/src/packages/whitespace/spec/whitespace-spec.coffee +++ b/src/packages/whitespace/spec/whitespace-spec.coffee @@ -87,7 +87,7 @@ describe "Whitespace", -> expect(editor.getText()).toBe "foo\n" expect(editor.getCursorBufferPosition()).toEqual([0,3]) - describe "whitespace.ensureSingleTrailingNewline config", -> + describe "whitespace.ignoredGrammars config", -> [originalConfigValue] = [] grammar = null @@ -103,11 +103,13 @@ describe "Whitespace", -> config.set("whitespace.ignoredGrammars", originalConfigValue) config.update() - it "parses the grammar", -> + it "parses the grammar as GFM", -> expect(grammar).toBeDefined() expect(grammar.scopeName).toBe "source.gfm" - it "leaves Markdown files alone", -> + it "leaves GFM files alone", -> + editor.activeEditSession.setGrammar(grammar) + expect(editor.getGrammar().name).toBe "GitHub Markdown" editor.insertText "foo \nline break!" editor.getBuffer().save() expect(editor.getText()).toBe "foo \nline break!" From f85e1ccf9a4914942efb00077529897d3df0b0f8 Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Tue, 23 Apr 2013 00:25:15 -0700 Subject: [PATCH 3/6] modify whitespace replace fn directly --- src/app/text-buffer.coffee | 2 +- src/packages/whitespace/lib/whitespace.coffee | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/app/text-buffer.coffee b/src/app/text-buffer.coffee index cc1cc1901..2a20ea1cc 100644 --- a/src/app/text-buffer.coffee +++ b/src/app/text-buffer.coffee @@ -587,7 +587,7 @@ class Buffer # startIndex - The starting row {Number} # endIndex - The ending row {Number} # - # Returns an {Array} of {RegExp}s, representing the matches + # Returns an {Array} of {RegExp}s, representing the matches. matchesInCharacterRange: (regex, startIndex, endIndex) -> text = @getText() matches = [] diff --git a/src/packages/whitespace/lib/whitespace.coffee b/src/packages/whitespace/lib/whitespace.coffee index 1d19347b9..7c48f4363 100644 --- a/src/packages/whitespace/lib/whitespace.coffee +++ b/src/packages/whitespace/lib/whitespace.coffee @@ -4,14 +4,18 @@ module.exports = configDefaults: ensureSingleTrailingNewline: true - ignoredGrammars: ["GitHub Markdown"] whitespaceBeforeSave: (editSession) -> buffer = editSession.buffer buffer.on 'will-be-saved', -> - return if editSession.getGrammar().name in config.get("whitespace.ignoredGrammars") buffer.transact -> - buffer.scan /[ \t]+$/g, ({replace}) -> replace('') + regex = null + + buffer.scan /[ \t]+$/g, ({match, replace}) -> + # GFM permits two whitespaces at the end of a line--trim anything else + unless editSession.getGrammar().scopeName = "scope.gfm" and match[0].length == 2 + replace('') + if config.get('whitespace.ensureSingleTrailingNewline') if buffer.getLastLine() is '' row = buffer.getLastRow() - 1 From 1b2b8861eec868c0dee96d0884f7139ff1e06795 Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Tue, 23 Apr 2013 09:06:36 -0700 Subject: [PATCH 4/6] fix specs --- src/packages/whitespace/lib/whitespace.coffee | 6 ++-- .../whitespace/spec/whitespace-spec.coffee | 31 ++++++++++--------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/packages/whitespace/lib/whitespace.coffee b/src/packages/whitespace/lib/whitespace.coffee index 7c48f4363..fd4e48867 100644 --- a/src/packages/whitespace/lib/whitespace.coffee +++ b/src/packages/whitespace/lib/whitespace.coffee @@ -9,11 +9,9 @@ module.exports = buffer = editSession.buffer buffer.on 'will-be-saved', -> buffer.transact -> - regex = null - - buffer.scan /[ \t]+$/g, ({match, replace}) -> + buffer.scan /[ \t]+$/g, ({match, replace}) -> # GFM permits two whitespaces at the end of a line--trim anything else - unless editSession.getGrammar().scopeName = "scope.gfm" and match[0].length == 2 + unless editSession.getGrammar().scopeName is "source.gfm" and match[0] == " " replace('') if config.get('whitespace.ensureSingleTrailingNewline') diff --git a/src/packages/whitespace/spec/whitespace-spec.coffee b/src/packages/whitespace/spec/whitespace-spec.coffee index 444539932..0f08fbe2a 100644 --- a/src/packages/whitespace/spec/whitespace-spec.coffee +++ b/src/packages/whitespace/spec/whitespace-spec.coffee @@ -87,29 +87,30 @@ describe "Whitespace", -> expect(editor.getText()).toBe "foo\n" expect(editor.getCursorBufferPosition()).toEqual([0,3]) - describe "whitespace.ignoredGrammars config", -> - [originalConfigValue] = [] + describe "GFM whitespace trimming", -> grammar = null beforeEach -> - originalConfigValue = config.get("whitespace.ignoredGrammars") - expect(originalConfigValue).toEqual ["GitHub Markdown"] spyOn(syntax, "addGrammar").andCallThrough() atom.activatePackage("gfm") expect(syntax.addGrammar).toHaveBeenCalled() grammar = syntax.addGrammar.argsForCall[0][0] - afterEach -> - config.set("whitespace.ignoredGrammars", originalConfigValue) - config.update() - - it "parses the grammar as GFM", -> - expect(grammar).toBeDefined() - expect(grammar.scopeName).toBe "source.gfm" - - it "leaves GFM files alone", -> + it "trims GFM text with a single space", -> + editor.activeEditSession.setGrammar(grammar) + editor.insertText "foo \nline break!" + editor.getBuffer().save() + expect(editor.getText()).toBe "foo\nline break!\n" + + it "leaves GFM text with double spaces alone", -> editor.activeEditSession.setGrammar(grammar) - expect(editor.getGrammar().name).toBe "GitHub Markdown" editor.insertText "foo \nline break!" editor.getBuffer().save() - expect(editor.getText()).toBe "foo \nline break!" + expect(editor.getText()).toBe "foo \nline break!\n" + + + it "trims GFM text with a more than two spaces", -> + editor.activeEditSession.setGrammar(grammar) + editor.insertText "foo \nline break!" + editor.getBuffer().save() + expect(editor.getText()).toBe "foo\nline break!\n" From 0ae599ad6f26cdf5cd13cd67b2f071f36805e094 Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Tue, 23 Apr 2013 16:47:09 -0700 Subject: [PATCH 5/6] double space outta my face --- src/packages/whitespace/spec/whitespace-spec.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/src/packages/whitespace/spec/whitespace-spec.coffee b/src/packages/whitespace/spec/whitespace-spec.coffee index 0f08fbe2a..ab7146846 100644 --- a/src/packages/whitespace/spec/whitespace-spec.coffee +++ b/src/packages/whitespace/spec/whitespace-spec.coffee @@ -108,7 +108,6 @@ describe "Whitespace", -> editor.getBuffer().save() expect(editor.getText()).toBe "foo \nline break!\n" - it "trims GFM text with a more than two spaces", -> editor.activeEditSession.setGrammar(grammar) editor.insertText "foo \nline break!" From 41c79789e3cabdaa941fd1bd4c24cae058a7b92c Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Tue, 23 Apr 2013 17:14:19 -0700 Subject: [PATCH 6/6] Make words more consistent --- src/packages/whitespace/lib/whitespace.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/packages/whitespace/lib/whitespace.coffee b/src/packages/whitespace/lib/whitespace.coffee index fd4e48867..1a68b1971 100644 --- a/src/packages/whitespace/lib/whitespace.coffee +++ b/src/packages/whitespace/lib/whitespace.coffee @@ -11,7 +11,7 @@ module.exports = buffer.transact -> buffer.scan /[ \t]+$/g, ({match, replace}) -> # GFM permits two whitespaces at the end of a line--trim anything else - unless editSession.getGrammar().scopeName is "source.gfm" and match[0] == " " + unless editSession.getGrammar().scopeName is "source.gfm" and match[0] is " " replace('') if config.get('whitespace.ensureSingleTrailingNewline')