LineCommenter.proto.toggleLineCommentsInRange comments / uncomments lines in a selection

This commit is contained in:
Nathan Sobo
2012-06-01 14:28:40 -06:00
parent 4c795718eb
commit 2c35a1f12d
4 changed files with 35 additions and 11 deletions

View File

@@ -10,9 +10,16 @@ describe "LineCommenter", ->
highlighter = new Highlighter(buffer)
lineCommenter = new LineCommenter(highlighter)
fdescribe "toggleLineCommentsInRange", ->
lineCommenter.toggleLineCommentsInRange([[4, 5], [7, 8]])
expect(buffer.lineForRow(4)).toBe "// while(items.length > 0) {"
expect(buffer.lineForRow(5)).toBe "// current = items.shift();"
expect(buffer.lineForRow(6)).toBe "// current < pivot ? left.push(current) : right.push(current);"
expect(buffer.lineForRow(7)).toBe "// }"
describe "toggleLineCommentsInRange", ->
it "comments/uncomments lines in the given range", ->
lineCommenter.toggleLineCommentsInRange([[4, 5], [7, 8]])
expect(buffer.lineForRow(4)).toBe "// while(items.length > 0) {"
expect(buffer.lineForRow(5)).toBe "// current = items.shift();"
expect(buffer.lineForRow(6)).toBe "// current < pivot ? left.push(current) : right.push(current);"
expect(buffer.lineForRow(7)).toBe "// }"
lineCommenter.toggleLineCommentsInRange([[4, 5], [5, 8]])
expect(buffer.lineForRow(4)).toBe " while(items.length > 0) {"
expect(buffer.lineForRow(5)).toBe " current = items.shift();"
expect(buffer.lineForRow(6)).toBe "// current < pivot ? left.push(current) : right.push(current);"
expect(buffer.lineForRow(7)).toBe "// }"

View File

@@ -0,0 +1,16 @@
Range = require 'range'
module.exports =
class AceLineCommentAdaptor
constructor: (@buffer) ->
getLine: (row) ->
@buffer.lineForRow(row)
indentRows: (startRow, endRow, indentString) ->
for row in [startRow..endRow]
@buffer.insert([row, 0], indentString)
replace: (range, text) ->
range = Range.fromObject(range)
@buffer.change(range, text)

View File

@@ -1,4 +1,5 @@
Range = require 'range'
AceLineCommentAdaptor = require 'ace-line-comment-adaptor'
module.exports =
class LineCommenter
@@ -9,9 +10,8 @@ class LineCommenter
constructor: (@highlighter) ->
@buffer = @highlighter.buffer
@aceMode = @buffer.getMode()
@adaptor = new AceLineCommentAdaptor(@buffer)
toggleLineCommentsInRange: (range) ->
range = Range.fromObject(range)
@aceMode.tog
@aceMode.toggleCommentLines(@highlighter.stateForRow(range.start.row), @adaptor, range.start.row, range.end.row)

View File

@@ -6,9 +6,10 @@ class Range
@fromObject: (object) ->
if _.isArray(object)
new Range(object...)
else
else if object instanceof Range
object
else
new Range(object.start, object.end)
constructor: (pointA = new Point(0, 0), pointB = new Point(0, 0)) ->
pointA = Point.fromObject(pointA)