Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ fun showTutorial(project: Project) {
if (`is` == null) {
throw IOException("Resource not found: $tutorialFileName")
}
var content = StreamUtil.readText(`is`, StandardCharsets.UTF_8)
var content = `is`.bufferedReader(StandardCharsets.UTF_8).use { it.readText() }

// All jetbrains will use J instead of L
content = content.replace("[Cmd + L]", "[Cmd + J]")
Expand Down Expand Up @@ -95,7 +95,7 @@ class ContinuePluginStartupActivity : StartupActivity, DumbAware {
}

private fun getPlatformSpecificKeyStroke(key: String): String {
val osName = System.getProperty("os.name").toLowerCase()
val osName = System.getProperty("os.name").lowercase()
val modifier = if (osName.contains("mac")) "meta" else "control"
return "$modifier $key"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ class ContinueBrowser(
val json = gsonService.gson.toJson(BrowserMessage(messageType, messageId, data))
val jsCode = """window.postMessage($json, "*");"""
try {
browser.executeJavaScriptAsync(jsCode)
browser.cefBrowser.executeJavaScript(jsCode, getGuiUrl(), 0)
} catch (error: IllegalStateException) {
log.warn(error)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class ConfigJsonSchemaFileProvider : JsonSchemaFileProvider {
if (`is` == null) {
throw IOException("Resource not found: config_schema.json")
}
val content = StreamUtil.readText(`is`, StandardCharsets.UTF_8)
val content = `is`.bufferedReader(StandardCharsets.UTF_8).use { it.readText() }
val filepath = Paths.get(getContinueGlobalPath(), "config_schema.json").toString()
File(filepath).writeText(content)
return LocalFileSystem.getInstance().findFileByPath(filepath)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class ConfigRcJsonSchemaFileProvider : JsonSchemaFileProvider {
if (`is` == null) {
throw IOException("Resource not found: continue_rc_schema.json")
}
val content = StreamUtil.readText(`is`, StandardCharsets.UTF_8)
val content = `is`.bufferedReader(StandardCharsets.UTF_8).use { it.readText() }
val filepath = Paths.get(getContinueGlobalPath(), "continue_rc_schema.json").toString()
File(filepath).writeText(content)
return LocalFileSystem.getInstance().findFileByPath(filepath)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ class CoreMessenger(
// Responses for messageId
responseListeners[messageId]?.let { listener ->
listener(data)
val done = (data as Map<String, Boolean>)["done"]
@Suppress("UNCHECKED_CAST")
val done = (data as? Map<String, Boolean>)?.get("done")

if (done == true) {
responseListeners.remove(messageId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.testFramework.LightVirtualFile
import kotlinx.coroutines.*
import org.jetbrains.plugins.terminal.ShellTerminalWidget
import org.jetbrains.plugins.terminal.TerminalView
import org.jetbrains.plugins.terminal.TerminalToolWindowManager
import java.awt.Toolkit
import java.awt.datatransfer.DataFlavor
import java.io.BufferedReader
Expand Down Expand Up @@ -208,10 +208,10 @@ class IntelliJIDE(
try {
val toolWindow = ToolWindowManager.getInstance(project).getToolWindow("Terminal")

val terminalView = TerminalView.getInstance(project)
val terminalManager = TerminalToolWindowManager.getInstance(project)
// Find the first terminal widget selected, whatever its state, running command or not.
val widget = terminalView.getWidgets().filterIsInstance<ShellTerminalWidget>().firstOrNull {
toolWindow?.getContentManager()?.getContent(it)?.isSelected ?: false
val widget = terminalManager.getWidgets().filterIsInstance<ShellTerminalWidget>().firstOrNull {
toolWindow?.contentManager?.getContent(it)?.isSelected ?: false
}

if (widget != null) {
Expand Down Expand Up @@ -288,31 +288,31 @@ class IntelliJIDE(
val toolWindow = ToolWindowManager.getInstance(project).getToolWindow("Terminal")
toolWindow?.activate({
try {
val terminalView = TerminalView.getInstance(project)
val terminalManager = TerminalToolWindowManager.getInstance(project)
var widget: ShellTerminalWidget? = null

// 1. Handle reuseTerminal option
if (terminalOptions.reuseTerminal == true && terminalView.getWidgets().isNotEmpty()) {
if (terminalOptions.reuseTerminal == true && terminalManager.getWidgets().isNotEmpty()) {
// 2. Find by terminalName if provided
if (terminalOptions.terminalName != null) {
widget = terminalView.getWidgets().filterIsInstance<ShellTerminalWidget>()
widget = terminalManager.getWidgets().filterIsInstance<ShellTerminalWidget>()
.firstOrNull {
toolWindow.contentManager.getContent(it).tabName == terminalOptions.terminalName
&& !it.hasRunningCommands()
}
} else {
// 3. Find active terminal, or fall back to the first one
widget = terminalView.getWidgets().filterIsInstance<ShellTerminalWidget>()
widget = terminalManager.getWidgets().filterIsInstance<ShellTerminalWidget>()
.firstOrNull { toolWindow.contentManager.getContent(it).isSelected }
?: terminalView.getWidgets().filterIsInstance<ShellTerminalWidget>().firstOrNull {
?: terminalManager.getWidgets().filterIsInstance<ShellTerminalWidget>().firstOrNull {
!it.hasRunningCommands()
}
}
}

// 4. Create a new terminal if needed
if (widget == null) {
widget = terminalView.createLocalShellWidget(
widget = terminalManager.createLocalShellWidget(
project.basePath,
terminalOptions.terminalName,
true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ class EditorComponentInlaysManager(val editor: EditorImpl, private val onlyOneIn

@RequiresEdt
fun insert(lineIndex: Int, component: JComponent, showAbove: Boolean = false): Disposable? {
if (Disposer.isDisposed(this)) return null
try {
// Check if editor is disposed
if (editor.isDisposed) return null
} catch (e: Exception) {
return null
}

if (onlyOneInlay) {
// Dispose all other inlays
Expand Down Expand Up @@ -106,7 +111,7 @@ class EditorComponentInlaysManager(val editor: EditorImpl, private val onlyOneIn

init {
val metrics = editor.getFontMetrics(Font.PLAIN)
val spaceWidth = FontLayoutService.getInstance().charWidth2D(metrics, ' '.toInt())
val spaceWidth = FontLayoutService.getInstance().charWidth2D(metrics, ' '.code)
// -4 to create some space
maximumEditorTextWidth = ceil(spaceWidth * (editor.settings.getRightMargin(editor.project)) - 4).toInt()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,9 @@ class ContinueNextEditService(private val project: Project) : NextEditService {

private fun parseNextEditOutcome(response: Any?): NextEditOutcome? {
return try {
@Suppress("UNCHECKED_CAST")
val responseMap = response as? Map<String, Any> ?: return null
@Suppress("UNCHECKED_CAST")
val contentMap = responseMap["content"] as? Map<String, Any> ?: return null

parseNextEditOutcomeFromMap(contentMap)
Expand All @@ -231,6 +233,7 @@ class ContinueNextEditService(private val project: Project) : NextEditService {
private fun parseNextEditOutcomeFromMap(contentMap: Map<String, Any>): NextEditOutcome? {
return try {
// Extract position data
@Suppress("UNCHECKED_CAST")
val cursorPos = contentMap["cursorPosition"] as? Map<String, Any>
val cursorPosition = if (cursorPos != null) {
Position(
Expand All @@ -241,6 +244,7 @@ class ContinueNextEditService(private val project: Project) : NextEditService {
Position(0, 0)
}

@Suppress("UNCHECKED_CAST")
val finalCursorPos = contentMap["finalCursorPosition"] as? Map<String, Any>
val finalCursorPosition = if (finalCursorPos != null) {
Position(
Expand All @@ -252,6 +256,7 @@ class ContinueNextEditService(private val project: Project) : NextEditService {
}

// Extract diffLines
@Suppress("UNCHECKED_CAST")
val diffLinesRaw = contentMap["diffLines"] as? List<Map<String, Any>> ?: emptyList()
val diffLines = diffLinesRaw.map { diffLineMap ->
DiffLine(
Expand Down Expand Up @@ -313,15 +318,21 @@ class ContinueNextEditService(private val project: Project) : NextEditService {

private fun parseProcessedItem(response: Any?): ProcessedItem? {
return try {
@Suppress("UNCHECKED_CAST")
val responseMap = response as? Map<String, Any> ?: return null
val content = responseMap["content"] as Map<String, Any> ?: return null
@Suppress("UNCHECKED_CAST")
val content = responseMap["content"] as? Map<String, Any> ?: return null

// Parse location (RangeInFile)
@Suppress("UNCHECKED_CAST")
val locationMap = content["location"] as? Map<String, Any> ?: return null
val filepath = locationMap["filepath"] as? String ?: return null

@Suppress("UNCHECKED_CAST")
val rangeMap = locationMap["range"] as? Map<String, Any> ?: return null
@Suppress("UNCHECKED_CAST")
val startMap = rangeMap["start"] as? Map<String, Any> ?: return null
@Suppress("UNCHECKED_CAST")
val endMap = rangeMap["end"] as? Map<String, Any> ?: return null

val startPosition = Position(
Expand All @@ -338,6 +349,7 @@ class ContinueNextEditService(private val project: Project) : NextEditService {
val location = com.github.continuedev.continueintellijextension.RangeInFile(filepath, range)

// Parse outcome (NextEditOutcome) - reuse existing logic from parseNextEditOutcome
@Suppress("UNCHECKED_CAST")
val outcomeData = content["outcome"] as? Map<String, Any> ?: return null
val outcome = parseNextEditOutcomeFromMap(outcomeData) ?: return null

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.github.continuedev.continueintellijextension.utils

import com.intellij.ide.plugins.PluginManager
import com.intellij.ide.plugins.PluginManagerCore
import com.intellij.openapi.extensions.PluginId
import com.github.continuedev.continueintellijextension.constants.ContinueConstants
import java.nio.file.Path
Expand All @@ -14,7 +14,7 @@ import java.nio.file.Paths
*/
fun getContinuePluginPath(): Path {
val pluginDescriptor =
PluginManager.getPlugin(PluginId.getId(ContinueConstants.PLUGIN_ID)) ?: throw Exception("Plugin not found")
PluginManagerCore.getPlugin(PluginId.getId(ContinueConstants.PLUGIN_ID)) ?: throw Exception("Plugin not found")
return pluginDescriptor.pluginPath
}

Expand Down
Loading