Skip to content

Commit 37bf949

Browse files
committed
feat(core): optimize DevIn tag handling in AutoDevInlineChatPanel
- Improve handling of <devin> tag in suggestion building process - Add support for detecting and processing partial <devin> tag inputs - Refactor code to handle different scenarios in suggestion updates- Remove unnecessary language check in SketchToolWindow
1 parent 9d96605 commit 37bf949

File tree

2 files changed

+38
-12
lines changed

2 files changed

+38
-12
lines changed

core/src/main/kotlin/cc/unitmesh/devti/inline/AutoDevInlineChatPanel.kt

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,46 @@ class AutoDevInlineChatPanel(val editor: Editor) : JPanel(GridBagLayout()), Edit
5656
val suggestion = StringBuilder()
5757
panelView.onStart()
5858

59+
var isDevinTagInProgress = false
60+
val tagBuffer = StringBuilder()
61+
val devinPrefix = "<devin>"
62+
5963
flow?.cancelHandler { panelView.handleCancel = it }?.cancellable()?.collect { char ->
6064
suggestion.append(char)
6165

62-
invokeLater {
63-
panelView.onUpdate(suggestion.toString())
64-
panelView.resize()
66+
when {
67+
suggestion.length <= devinPrefix.length -> {
68+
tagBuffer.append(char)
69+
if (devinPrefix.startsWith(tagBuffer.toString())) {
70+
isDevinTagInProgress = true
71+
if (tagBuffer.toString() == devinPrefix) {
72+
invokeLater {
73+
panelView.onUpdate(suggestion.toString())
74+
panelView.resize()
75+
}
76+
isDevinTagInProgress = false
77+
}
78+
} else {
79+
isDevinTagInProgress = false
80+
invokeLater {
81+
panelView.onUpdate(suggestion.toString())
82+
panelView.resize()
83+
}
84+
}
85+
}
86+
isDevinTagInProgress -> {
87+
isDevinTagInProgress = false
88+
invokeLater {
89+
panelView.onUpdate(suggestion.toString())
90+
panelView.resize()
91+
}
92+
}
93+
else -> {
94+
invokeLater {
95+
panelView.onUpdate(suggestion.toString())
96+
panelView.resize()
97+
}
98+
}
6599
}
66100
}
67101

@@ -329,4 +363,4 @@ class EscHandler(private val targetEditor: Editor, private val action: () -> Uni
329363
EditorActionManager.getInstance().setActionHandler(IdeActions.ACTION_EDITOR_ESCAPE, it)
330364
}
331365
}
332-
}
366+
}

core/src/main/kotlin/cc/unitmesh/devti/sketch/SketchToolWindow.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -309,14 +309,6 @@ open class SketchToolWindow(
309309
}
310310

311311
var language = codeFence.language
312-
/// in stream API, the <devin> maybe split, like `<dev`, `<devin` or `<devin>`,
313-
/// so we need to check the language again
314-
if (codeFence.language.displayName == "Markdown" && codeFence.text.startsWith("/")) {
315-
logger<SketchToolWindow>().warn("Try to fix language error")
316-
language = findLanguage("DevIn")
317-
originLanguage = "devin"
318-
}
319-
320312
updateLanguage(language, originLanguage)
321313
updateViewText(codeFence.text, codeFence.isComplete)
322314
}

0 commit comments

Comments
 (0)