Comment .less code correctly

This commit is contained in:
Corey Johnson & Kevin Sawicki
2013-06-11 12:25:57 -07:00
parent e82a7f57fe
commit 7516cebb40
2 changed files with 24 additions and 5 deletions

View File

@@ -12,7 +12,7 @@ describe "LanguageMode", ->
beforeEach ->
atom.activatePackage('javascript-tmbundle', sync: true)
editSession = project.open('sample.js', autoIndent: false)
{ buffer, languageMode } = editSession
{buffer, languageMode} = editSession
describe ".toggleLineCommentsForBufferRows(start, end)", ->
it "comments/uncomments lines in the given range", ->
@@ -54,7 +54,7 @@ describe "LanguageMode", ->
beforeEach ->
atom.activatePackage('coffee-script-tmbundle', sync: true)
editSession = project.open('coffee.coffee', autoIndent: false)
{ buffer, languageMode } = editSession
{buffer, languageMode} = editSession
describe ".toggleLineCommentsForBufferRows(start, end)", ->
it "comments/uncomments lines in the given range", ->
@@ -90,7 +90,7 @@ describe "LanguageMode", ->
beforeEach ->
atom.activatePackage('css-tmbundle', sync: true)
editSession = project.open('css.css', autoIndent: false)
{ buffer, languageMode } = editSession
{buffer, languageMode} = editSession
describe ".toggleLineCommentsForBufferRows(start, end)", ->
it "comments/uncomments lines in the given range", ->
@@ -126,3 +126,16 @@ describe "LanguageMode", ->
buffer.change([[2, 0], [2, Infinity]], " /*width: 110%;*/ ")
languageMode.toggleLineCommentsForBufferRows(2, 2)
expect(buffer.lineForRow(2)).toBe " width: 110%; "
describe "less", ->
beforeEach ->
atom.activatePackage('less-tmbundle', sync: true)
atom.activatePackage('css-tmbundle', sync: true)
editSession = project.open('sample.less', autoIndent: false)
{buffer, languageMode} = editSession
describe "when commenting lines", ->
it "only uses the `commentEnd` pattern if it comes from the same grammar as the `commentStart`", ->
languageMode.toggleLineCommentsForBufferRows(0, 0)
expect(buffer.lineForRow(0)).toBe "// @color: #4D926F;"

View File

@@ -37,14 +37,20 @@ class LanguageMode
# Returns an {Array} of the commented {Ranges}.
toggleLineCommentsForBufferRows: (start, end) ->
scopes = @editSession.scopesForBufferPosition([start, 0])
return unless commentStartString = syntax.getProperty(scopes, "editor.commentStart")
properties = syntax.propertiesForScope(scopes, "editor.commentStart")[0]
return unless properties
commentStartString = _.valueForKeyPath(properties, "editor.commentStart")
commentEndString = _.valueForKeyPath(properties, "editor.commentEnd")
return unless commentStartString
buffer = @editSession.buffer
commentStartRegexString = _.escapeRegExp(commentStartString).replace(/(\s+)$/, '($1)?')
commentStartRegex = new OnigRegExp("^(\\s*)(#{commentStartRegexString})")
shouldUncomment = commentStartRegex.test(buffer.lineForRow(start))
if commentEndString = syntax.getProperty(scopes, "editor.commentEnd")
if commentEndString
if shouldUncomment
commentEndRegexString = _.escapeRegExp(commentEndString).replace(/^(\s+)/, '($1)?')
commentEndRegex = new OnigRegExp("(#{commentEndRegexString})(\\s*)$")