fix: selection not included in prompt (fixes #844)

This commit is contained in:
Carl-Robert Linnupuu 2025-02-03 17:07:57 +00:00
parent 668c8ed27e
commit aa75902675
2 changed files with 18 additions and 14 deletions

View file

@ -49,19 +49,21 @@ class SelectionTagProcessor : TagProcessor {
tagDetails: TagDetails,
promptBuilder: StringBuilder
) {
val selectionModel = (tagDetails as? SelectionTagDetails)?.selectionModel ?: return
if (!selectionModel.hasSelection() || tagDetails.virtualFile == null) {
val selectionTagDetails = tagDetails as? SelectionTagDetails ?: return
if (selectionTagDetails.selectedText.isNullOrEmpty()) {
return
}
promptBuilder
.append("\n```${tagDetails.virtualFile?.extension}\n")
.append(selectionModel.selectedText)
.append("\n```${tagDetails.virtualFile.extension}\n")
.append(selectionTagDetails.selectedText)
.append("\n```\n")
tagDetails.virtualFile = null
tagDetails.selectionModel = null
selectionModel.removeSelection()
selectionTagDetails.selectionModel.let {
if (it.hasSelection()) {
it.removeSelection()
}
}
}
}

View file

@ -32,13 +32,15 @@ data class FileTagDetails(var virtualFile: VirtualFile) :
TagDetails(virtualFile.name, virtualFile.fileType.icon)
data class SelectionTagDetails(
var virtualFile: VirtualFile?,
var selectionModel: SelectionModel?,
) :
TagDetails(
"${virtualFile?.name} (${selectionModel?.selectionStartPosition?.line}:${selectionModel?.selectionEndPosition?.line})",
Icons.InSelection
)
var virtualFile: VirtualFile,
var selectionModel: SelectionModel
) : TagDetails(
"${virtualFile.name} (${selectionModel.selectionStartPosition?.line}:${selectionModel.selectionEndPosition?.line})",
Icons.InSelection
) {
var selectedText: String? = selectionModel.selectedText
private set
}
data class DocumentationTagDetails(var documentationDetails: DocumentationDetails) :
TagDetails(documentationDetails.name, AllIcons.Toolwindows.Documentation)