Skip to content

Commit 0636322

Browse files
committed
cursor
1 parent 237b746 commit 0636322

File tree

3 files changed

+31
-21
lines changed
  • plugins/amazonq
    • chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow
    • shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp

3 files changed

+31
-21
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQPanel.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,7 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
5656
AsyncChatUiListener.TOPIC,
5757
object : AsyncChatUiListener {
5858
override fun onChange(message: String) {
59-
runInEdt {
60-
browser.get()?.postChat(message)
61-
}
59+
browser.get()?.postChat(message)
6260
}
6361
}
6462
)

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/CursorState.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@
44
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
55

66
import org.eclipse.lsp4j.Range
7+
import org.eclipse.lsp4j.Position
78

8-
data class CursorState(
9+
sealed interface CursorState
10+
11+
data class CursorPosition(
12+
val position: Position,
13+
) : CursorState
14+
15+
data class CursorRange(
916
val range: Range,
10-
)
17+
) : CursorState

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/LspEditorUtil.kt

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import org.eclipse.lsp4j.Position
1111
import org.eclipse.lsp4j.Range
1212
import software.aws.toolkits.core.utils.getLogger
1313
import software.aws.toolkits.core.utils.warn
14+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorPosition
15+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorRange
1416
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorState
1517
import java.io.File
1618
import java.net.URI
@@ -43,27 +45,30 @@ object LspEditorUtil {
4345
}
4446
}
4547

48+
/**
49+
* Works but is divergent from [FocusAreaContextExtrator]
50+
*/
4651
fun getCursorState(editor: Editor): CursorState =
4752
runReadAction {
4853
val selectionModel = editor.selectionModel
49-
val document = editor.document
54+
if (selectionModel.hasSelection()) {
55+
val selectedStartPos = editor.offsetToLogicalPosition(selectionModel.selectionStart)
56+
val selectedEndPos = editor.offsetToLogicalPosition(selectionModel.selectionEnd)
5057

51-
// Get start position
52-
val startOffset = selectionModel.selectionStart
53-
val startLine = document.getLineNumber(startOffset)
54-
val startColumn = startOffset - document.getLineStartOffset(startLine)
55-
56-
// Get end position
57-
val endOffset = selectionModel.selectionEnd
58-
val endLine = document.getLineNumber(endOffset)
59-
val endColumn = endOffset - document.getLineStartOffset(endLine)
60-
61-
return@runReadAction CursorState(
62-
Range(
63-
Position(startLine, startColumn),
64-
Position(endLine, endColumn)
58+
return@runReadAction CursorRange(
59+
Range(
60+
Position(selectedStartPos.line, selectedStartPos.column),
61+
Position(selectedEndPos.line, selectedEndPos.column)
62+
)
63+
)
64+
} else {
65+
return@runReadAction CursorPosition(
66+
Position(
67+
editor.caretModel.primaryCaret.logicalPosition.line,
68+
editor.caretModel.primaryCaret.logicalPosition.column
69+
)
6570
)
66-
)
71+
}
6772
}
6873

6974
private val LOG = getLogger<LspEditorUtil>()

0 commit comments

Comments
 (0)