diff --git a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/TagProcessorFactory.kt b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/TagProcessorFactory.kt index e24fedb2..4e0dcb0e 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/TagProcessorFactory.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/TagProcessorFactory.kt @@ -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() + } + } } } diff --git a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/header/tag/TagDetails.kt b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/header/tag/TagDetails.kt index 6cec80bd..b4e892f6 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/header/tag/TagDetails.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/header/tag/TagDetails.kt @@ -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)