mirror of
https://github.com/atom/atom.git
synced 2026-02-11 15:14:59 -05:00
🎨 toggleLineCommentsForBufferRows
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user