Skip to content

Commit a082752

Browse files
authored
Merge pull request #219 from devchat-ai/release_0.3.9
fix: Improve IDE compatibility and fix PsiElement offset access
2 parents 53e3714 + 2f21162 commit a082752

File tree

10 files changed

+25
-25
lines changed

10 files changed

+25
-25
lines changed

build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ plugins {
1010
}
1111

1212
group = "ai.devchat"
13-
version = "0.3.3"
13+
version = "0.3.9"
1414

1515
repositories {
1616
mavenCentral()
@@ -38,7 +38,7 @@ configurations.all {
3838
// Configure Gradle IntelliJ Plugin
3939
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
4040
intellij {
41-
version.set("2023.2.5")
41+
version.set("2022.3.3")
4242
type.set("IC") // Target IDE Platform
4343

4444
plugins.set(listOf(/* Plugin Dependencies */))
@@ -100,7 +100,7 @@ tasks {
100100

101101
patchPluginXml {
102102
sinceBuild.set("223")
103-
untilBuild.set("242.*")
103+
untilBuild.set("243.*")
104104
}
105105

106106
signPlugin {

src/main/kotlin/ai/devchat/common/IDEUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ object IDEUtils {
328328
var currentIndex = 0
329329

330330
for (descriptor in sortedDescriptors) {
331-
val range = descriptor.range.shiftRight(-startOffset)
331+
val range = descriptor.range.shiftRight(-this.textRange.startOffset)
332332
if (range.startOffset >= currentIndex) {
333333
builder.append(text, currentIndex, range.startOffset)
334334
builder.append(descriptor.placeholderText)

src/main/kotlin/ai/devchat/core/handlers/OpenLinkRequestHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class OpenLinkRequestHandler(project: Project, requestAction: String, metadata:
1717

1818
override fun action() {
1919
val url = payload!!.getString("url")
20-
BrowserUtil.browse(URL(url))
20+
BrowserUtil.browse(url)
2121
send()
2222
}
2323
}

src/main/kotlin/ai/devchat/plugin/DevChatToolWindowFactory.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class DevChatToolWindowFactory : ToolWindowFactory, DumbAware, Disposable {
5959
Log.info("-----------> DevChatToolWindowFactory.createToolWindowContent started")
6060

6161
try {
62-
project.service<RecentFilesTracker>()
62+
project.getService(RecentFilesTracker::class.java)
6363
Log.info("-----------> RecentFilesTracker service initialized")
6464

6565
val devChatService = project.getService(DevChatService::class.java)

src/main/kotlin/ai/devchat/plugin/IDEServer.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerEx
99
import com.intellij.codeInsight.daemon.impl.HighlightInfo
1010
import com.intellij.codeInsight.intention.IntentionAction
1111
import com.intellij.codeInsight.navigation.actions.GotoTypeDeclarationAction
12+
import com.intellij.ide.plugins.PluginManager
1213
import com.intellij.lang.Language
1314
import com.intellij.lang.annotation.HighlightSeverity.INFORMATION
1415
import com.intellij.openapi.Disposable
@@ -30,6 +31,8 @@ import com.intellij.openapi.vfs.VirtualFile
3031
import com.intellij.psi.*
3132
import com.intellij.psi.search.searches.ReferencesSearch
3233
import com.intellij.psi.util.PsiTreeUtil
34+
import com.intellij.psi.PsiElement
35+
import com.intellij.psi.PsiDocumentManager
3336
import com.intellij.refactoring.suggested.endOffset
3437
import com.intellij.refactoring.suggested.startOffset
3538
import io.ktor.http.*
@@ -49,7 +52,6 @@ import java.awt.Point
4952
import java.io.File
5053
import java.net.ServerSocket
5154
import kotlin.reflect.full.memberFunctions
52-
import com.intellij.ide.plugins.PluginManagerCore
5355

5456

5557
@Serializable
@@ -101,7 +103,7 @@ class IDEServer(private var project: Project): Disposable {
101103
routing {
102104
post("/get_extension_version") {
103105
val currentPlugin = try {
104-
PluginManagerCore.getLoadedPlugins().find { plugin ->
106+
PluginManager.getPlugins().find { plugin ->
105107
plugin.pluginClassLoader == IDEServer::class.java.classLoader
106108
}
107109
} catch (e: Exception) {
@@ -548,7 +550,7 @@ fun PsiElement.getRange(): Range? {
548550
}
549551

550552
return try {
551-
Range(calculatePosition(this.startOffset), calculatePosition(this.endOffset))
553+
Range(calculatePosition(this.textRange.startOffset), calculatePosition(this.textRange.endOffset))
552554
} catch (e: Exception) {
553555
Log.warn(e.toString())
554556
null

src/main/kotlin/ai/devchat/plugin/ToolWindowStateListener.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import ai.devchat.common.Constants.ASSISTANT_NAME_ZH
44
import ai.devchat.common.DevChatBundle
55
import ai.devchat.storage.DevChatState
66
import ai.devchat.storage.ToolWindowState
7-
import ai.grazie.utils.applyIf
87
import com.intellij.openapi.application.runInEdt
98
import com.intellij.openapi.wm.ToolWindowManager
109
import com.intellij.openapi.wm.ex.ToolWindowManagerListener
@@ -15,13 +14,12 @@ class ToolWindowStateListener : ToolWindowManagerListener {
1514
super.toolWindowsRegistered(ids, toolWindowManager)
1615
ids.find { it == ASSISTANT_NAME_ZH }?.let {
1716
runInEdt {
18-
toolWindowManager.getToolWindow(it)?.applyIf(
19-
DevChatState.instance.lastToolWindowState == ToolWindowState.SHOWN.name
20-
) {
21-
while (!this.isAvailable) {
17+
val toolWindow = toolWindowManager.getToolWindow(it)
18+
if (DevChatState.instance.lastToolWindowState == ToolWindowState.SHOWN.name && toolWindow != null) {
19+
while (!toolWindow.isAvailable) {
2220
Thread.sleep(1000)
2321
}
24-
this.show()
22+
toolWindow.show()
2523
}
2624
}
2725
}

src/main/kotlin/ai/devchat/plugin/completion/actions/TriggerCompletion.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.intellij.openapi.components.service
1313
class TriggerCompletion : AnAction() {
1414
override fun actionPerformed(e: AnActionEvent) {
1515
val completionScheduler = service<CompletionProvider>()
16-
val editor = e.getRequiredData(CommonDataKeys.EDITOR)
16+
val editor = e.getData(CommonDataKeys.EDITOR) ?: return
1717
val offset = editor.caretModel.primaryCaret.offset
1818
completionScheduler.provideCompletion(editor, offset, manually = true)
1919
}

src/main/kotlin/ai/devchat/plugin/hints/DocStringCVProvider.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ import javax.swing.Icon
1313
class DocStringCVProvider : ChatCVProviderBase() {
1414
override fun buildPayload(editor: Editor, element: PsiElement): JSONObject {
1515
val document = editor.document
16-
val startLine = document.getLineNumber(element.startOffset)
16+
val startLine = document.getLineNumber(element.textRange.startOffset)
1717
val lineStartOffset = document.getLineStartOffset(startLine)
18-
val startOffset = if (document.text.substring(lineStartOffset, element.startOffset).isBlank()) {
18+
val startOffset = if (document.text.substring(lineStartOffset, element.textRange.startOffset).isBlank()) {
1919
lineStartOffset
2020
} else {
21-
element.startOffset
21+
element.textRange.startOffset
2222
}
23-
editor.selectionModel.setSelection(startOffset, null, element.endOffset)
23+
editor.selectionModel.setSelection(startOffset, null, element.textRange.endOffset)
2424
return JSONObject(mapOf("message" to "/docstring"))
2525
}
2626

src/main/kotlin/ai/devchat/plugin/hints/ExplainCodeCVProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import javax.swing.Icon
1111

1212
class ExplainCodeCVProvider : ChatCVProviderBase() {
1313
override fun buildPayload(editor: Editor, element: PsiElement): JSONObject {
14-
editor.selectionModel.setSelection(element.startOffset, null, element.endOffset)
14+
editor.selectionModel.setSelection(element.textRange.startOffset, null, element.textRange.endOffset)
1515
return JSONObject(mapOf("message" to "/explain"))
1616
}
1717

src/main/kotlin/ai/devchat/plugin/hints/UnitTestsCVProvider.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ class UnitTestsCVProvider : ChatCVProviderBase() {
1717
"message" to "/unit_tests " + listOf(
1818
FileDocumentManager.getInstance().getFile(editor.document)!!.path,
1919
(element as? PsiNamedElement)?.name,
20-
editor.document.getLineNumber(element.startOffset),
21-
editor.document.getLineNumber(element.endOffset),
22-
editor.document.getLineNumber(element.parent.startOffset),
23-
editor.document.getLineNumber(element.parent.endOffset),
20+
editor.document.getLineNumber(element.textRange.startOffset),
21+
editor.document.getLineNumber(element.textRange.endOffset),
22+
editor.document.getLineNumber(element.parent.textRange.startOffset),
23+
editor.document.getLineNumber(element.parent.textRange.endOffset),
2424
).joinToString(":::"),
2525
)
2626
)

0 commit comments

Comments
 (0)