Fixed #392: Comment & Uncomment line does not work for selection

This commit is contained in:
Akash Yadav
2022-10-25 11:20:31 +05:30
parent 1a54179340
commit 7f3606df8f
3 changed files with 12 additions and 12 deletions
@@ -20,6 +20,7 @@ import com.itsaky.androidide.actions.ActionData
import com.itsaky.androidide.actions.requireEditor
import com.itsaky.androidide.resources.R
import com.itsaky.androidide.lsp.java.actions.BaseJavaCodeAction
import com.itsaky.androidide.utils.ILogger
/** @author Akash Yadav */
class CommentAction : BaseJavaCodeAction() {
@@ -28,18 +29,16 @@ class CommentAction : BaseJavaCodeAction() {
override val titleTextRes: Int = R.string.action_comment_line
override var requiresUIThread: Boolean = true
override fun execAction(data: ActionData): Boolean {
val editor = requireEditor(data)
val text = editor.text
val cursor = editor.cursor
var line = cursor.leftLine
text.beginBatchEdit()
while (line >= cursor.leftLine && line <= cursor.rightLine) {
if (!text.getLineString(line).trim { it <= ' ' }.startsWith("//")) {
text.insert(line, 0, "//")
}
line++
for (line in cursor.leftLine..cursor.rightLine) {
text.insert(line, 0, "//")
}
text.endBatchEdit()
@@ -20,6 +20,7 @@ import com.itsaky.androidide.actions.ActionData
import com.itsaky.androidide.actions.requireEditor
import com.itsaky.androidide.resources.R
import com.itsaky.androidide.lsp.java.actions.BaseJavaCodeAction
import com.itsaky.androidide.utils.ILogger
/** @author Akash Yadav */
class UncommentAction : BaseJavaCodeAction() {
@@ -27,21 +28,21 @@ class UncommentAction : BaseJavaCodeAction() {
override var label: String = ""
override val titleTextRes: Int = R.string.action_uncomment_line
override var requiresUIThread: Boolean = true
override fun execAction(data: ActionData): Boolean {
val editor = requireEditor(data)
val text = editor.text
val cursor = editor.cursor
var line = cursor.leftLine
text.beginBatchEdit()
while (line >= cursor.leftLine && line <= cursor.rightLine) {
for (line in cursor.leftLine..cursor.rightLine) {
val l = text.getLineString(line)
if (l.trim { it <= ' ' }.startsWith("//")) {
if (l.trim().startsWith("//")) {
val i = l.indexOf("//")
text.delete(line, i, line, i + 2)
}
line++
}
text.endBatchEdit()
Binary file not shown.