🎨 toggleLineCommentsForBufferRows

This commit is contained in:
Max Brunsfeld
2017-10-03 11:03:37 -07:00
parent 44d6868855
commit 4975f659c0

View File

@@ -199,17 +199,20 @@ class TokenizedBuffer {
})
}
} else {
let allBlank = true
let allBlankOrCommented = true
let hasCommentedLines = false
let hasUncommentedLines = false
for (let row = start; row <= end; row++) {
const line = this.buffer.lineForRow(row)
const blank = line.match(/^\s*$/)
if (!blank) allBlank = false
if (!blank && !commentStartRegex.testSync(line)) allBlankOrCommented = false
if (NON_WHITESPACE_REGEX.test(line)) {
if (commentStartRegex.testSync(line)) {
hasCommentedLines = true
} else {
hasUncommentedLines = true
}
}
}
const shouldUncomment = allBlankOrCommented && !allBlank
const shouldUncomment = hasCommentedLines && !hasUncommentedLines
if (shouldUncomment) {
for (let row = start; row <= end; row++) {
@@ -221,20 +224,22 @@ class TokenizedBuffer {
}
}
} else {
let minIndentLevel = null
let minBlankIndentLevel
let minIndentLevel = Infinity
let minBlankIndentLevel = Infinity
for (let row = start; row <= end; row++) {
const line = this.buffer.lineForRow(row)
const indentLevel = this.indentLevelForLine(line)
if (NON_WHITESPACE_REGEX.test(line)) {
const indentLevel = this.indentLevelForLine(line)
if (minIndentLevel == null || indentLevel < minIndentLevel) minIndentLevel = indentLevel
} else if (minIndentLevel == null) {
const indentLevel = this.indentLevelForLine(line)
if (minBlankIndentLevel == null || indentLevel < minBlankIndentLevel) minBlankIndentLevel = indentLevel
if (indentLevel < minIndentLevel) minIndentLevel = indentLevel
} else {
if (indentLevel < minBlankIndentLevel) minBlankIndentLevel = indentLevel
}
}
if (minIndentLevel == null) minIndentLevel = minBlankIndentLevel
if (minIndentLevel == null) minIndentLevel = 0
minIndentLevel = Number.isFinite(minIndentLevel)
? minIndentLevel
: Number.isFinite(minBlankIndentLevel)
? minBlankIndentLevel
: 0
const tabLength = this.getTabLength()
const indentString = ' '.repeat(tabLength * minIndentLevel)