@@ -4,7 +4,6 @@ import com.aallam.openai.api.exception.OpenAIAPIException
44import com.github.blarc.ai.commits.intellij.plugin.AICommitsBundle.message
55import com.github.blarc.ai.commits.intellij.plugin.OpenAIService
66import com.intellij.icons.AllIcons
7- import com.intellij.ide.starters.shared.withValidation
87import com.intellij.openapi.options.BoundConfigurable
98import com.intellij.openapi.progress.runBackgroundableTask
109import com.intellij.ui.components.JBLabel
@@ -46,15 +45,29 @@ class AppSettingsConfigurable : BoundConfigurable(message("settings.general.grou
4645
4746 // Prompt to use with OpenAI
4847 row {
49- textField ()
48+ val promptTextArea = textArea ()
5049 .label(message(" settings.prompt" ))
5150 .bindText(
5251 { AppSettings .instance.getPrompt() },
5352 { AppSettings .instance.savePrompt(it) }
5453 )
5554 .align(Align .FILL )
5655 .resizableColumn()
56+
57+ promptTextArea.component.wrapStyleWord = true
58+ promptTextArea.component.lineWrap = true
59+
60+ promptTextArea.component.addCaretListener {
61+ val fontMetrics = promptTextArea.component.getFontMetrics(promptTextArea.component.font)
62+ val lineHeight = fontMetrics.height
63+ val contentWidth = promptTextArea.component.size.width - promptTextArea.component.insets.left - promptTextArea.component.insets.right
64+ val maxLineWidth = promptTextArea.component.ui.getPreferredSize(promptTextArea.component).width
65+ val contentHeight = promptTextArea.component.preferredSize.height
66+ val rows = ((contentHeight / lineHeight).coerceAtLeast(1 ) * maxLineWidth / contentWidth).coerceAtLeast(1 )
67+ promptTextArea.rows(rows)
68+ }
5769 }
70+
5871 }
5972
6073 @OptIn(DelicateCoroutinesApi ::class )
0 commit comments