From cdf0af0f725375a2365ad39839def38f4b89c226 Mon Sep 17 00:00:00 2001 From: fda-odoo Date: Fri, 24 Oct 2025 17:56:54 +0200 Subject: [PATCH 1/2] [FIX] remove deprecated isAarch64 calls --- .../odoo/odools/OdooLSLspServerSupportProvider.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt b/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt index ce31d76..c46ab6e 100644 --- a/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt +++ b/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt @@ -10,18 +10,19 @@ import com.intellij.platform.lsp.api.* import com.intellij.platform.lsp.api.customization.* import com.intellij.psi.search.FilenameIndex import com.intellij.psi.search.GlobalSearchScope +import com.intellij.util.system.CpuArch import org.eclipse.lsp4j.ConfigurationItem val osName = System.getProperty("os.name").lowercase() val arch = System.getProperty("os.arch").lowercase() val targetOs = when { - SystemInfo.isWindows && !SystemInfo.isAarch64 -> "win32-x64" - SystemInfo.isWindows && SystemInfo.isAarch64 -> "win32-arm64" - SystemInfo.isLinux && !SystemInfo.isAarch64 -> "linux-x64" - SystemInfo.isLinux && SystemInfo.isAarch64 -> "linux-arm64" - SystemInfo.isMac && !SystemInfo.isAarch64 -> "darwin-x64" - SystemInfo.isMac && SystemInfo.isAarch64 -> "darwin-arm64" + SystemInfo.isWindows && !CpuArch.isArm64() -> "win32-x64" + SystemInfo.isWindows && CpuArch.isArm64() -> "win32-arm64" + SystemInfo.isLinux && !CpuArch.isArm64() -> "linux-x64" + SystemInfo.isLinux && CpuArch.isArm64() -> "linux-arm64" + SystemInfo.isMac && !CpuArch.isArm64() -> "darwin-x64" + SystemInfo.isMac && CpuArch.isArm64() -> "darwin-arm64" else -> throw IllegalStateException("Unsupported OS: $osName $arch") } From a271fa3baa5c39c7abeadce3064a568cdfc28934 Mon Sep 17 00:00:00 2001 From: fda-odoo Date: Tue, 28 Oct 2025 13:46:32 +0100 Subject: [PATCH 2/2] [IMP] automatically start OdooLS after installation remove the "findManifest" logic, as OdooLS should be started anyway, to get profiles list --- .../com/odoo/odools/OdooCustomLsp4jClient.kt | 2 +- .../OdooLSInstallationProjectActivity.kt | 4 ++- .../odools/OdooLSLspServerSupportProvider.kt | 20 +------------- .../com/odoo/odools/OdooStatusBarWidget.kt | 27 +++++++------------ 4 files changed, 15 insertions(+), 38 deletions(-) diff --git a/src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt b/src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt index 77fbc98..1972e4b 100644 --- a/src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt +++ b/src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt @@ -36,7 +36,7 @@ class OdooCustomLsp4jClient(val project: Project, handler: LspServerNotification fun setConfiguration(payload: SetConfigurationParams) { var html = payload.getHtml() var profiles = html.keys.filter { it != "__all__" }.toMutableList() - profiles.add("disabled") + profiles.add("Disabled") val statusBar = WindowManager.getInstance().getStatusBar(project) val widget = statusBar?.getWidget("OdooLspStatusWidget") as? OdooLspStatusWidget widget?.updateListProfiles(profiles) diff --git a/src/main/kotlin/com/odoo/odools/OdooLSInstallationProjectActivity.kt b/src/main/kotlin/com/odoo/odools/OdooLSInstallationProjectActivity.kt index 0ac0305..6c96100 100644 --- a/src/main/kotlin/com/odoo/odools/OdooLSInstallationProjectActivity.kt +++ b/src/main/kotlin/com/odoo/odools/OdooLSInstallationProjectActivity.kt @@ -13,6 +13,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.startup.ProjectActivity import com.intellij.openapi.util.Key import com.intellij.openapi.util.SystemInfo +import com.intellij.platform.lsp.api.LspServerManager import java.nio.charset.StandardCharsets import java.nio.file.FileSystems import java.nio.file.Files @@ -47,8 +48,9 @@ class OdooLSInstallationProjectActivity : ProjectActivity, DumbAware { if (isInstalled == null || !isInstalled) { installFromResources(pathToInstallation) { project.putUserData(ODOO_LSP_INSTALLED, true) + LspServerManager.getInstance(project) + .stopAndRestartIfNeeded(OdooLSLspServerSupportProvider::class.java) } - return } } diff --git a/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt b/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt index c46ab6e..b95084e 100644 --- a/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt +++ b/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt @@ -8,8 +8,6 @@ import com.intellij.openapi.util.SystemInfo import com.intellij.openapi.vfs.VirtualFile import com.intellij.platform.lsp.api.* import com.intellij.platform.lsp.api.customization.* -import com.intellij.psi.search.FilenameIndex -import com.intellij.psi.search.GlobalSearchScope import com.intellij.util.system.CpuArch import org.eclipse.lsp4j.ConfigurationItem @@ -30,31 +28,15 @@ private val HAS_MANIFEST_KEY = Key.create("OdooLS.HasManifest") internal class OdooLSLspServerSupportProvider : LspServerSupportProvider { - fun findManifest(project: Project): Boolean { - project.getUserData(HAS_MANIFEST_KEY)?.let { return it } - val scope = GlobalSearchScope.projectScope(project) - val found = FilenameIndex.getVirtualFilesByName("__manifest__.py", scope).isNotEmpty() - - project.putUserData(HAS_MANIFEST_KEY, found) - return found - } - override fun fileOpened(project: Project, file: VirtualFile, serverStarter: LspServerSupportProvider.LspServerStarter) { - val isInstalled = project.getUserData(ODOO_LSP_INSTALLED) - if (isInstalled != true) { - return - } // Only run if project is loaded if (project.isDisposed) return - if (!findManifest(project)) return - println("__manifest__.py file detected in project. Starting OdooLS") - serverStarter.ensureServerStarted(OdooLsServerDescriptor(project)) } } -private class OdooLsServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "OdooLS") { +class OdooLsServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "OdooLS") { override val lspServerListener: LspServerListener? get() = OdooLspServerListener(project) override val lspCustomization: LspCustomization diff --git a/src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt b/src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt index 03b9925..69e608f 100644 --- a/src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt +++ b/src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt @@ -32,7 +32,7 @@ class OdooLspStatusWidget( ) : EditorBasedStatusBarPopup(project, false) { private var widgetState = WidgetState("Odoo", "Odoo (not started)", true) - private var listProfiles: List = listOf("default", "disabled") + private var listProfiles: List = listOf("default", "Disabled") private var gotProfiles: Boolean = false private var configHtml: Map = mapOf(); private var currentStatus = "stop" @@ -55,7 +55,7 @@ class OdooLspStatusWidget( val currentProfile = project.service().state.selectedProfile var config = configHtml[currentProfile] if (config == null) { - config = "No configuration for this name" + config = "No configuration for this name: $currentProfile" } return Pair( currentProfile, @@ -106,7 +106,7 @@ class OdooLspStatusWidget( override fun setSelected(e: AnActionEvent, state: Boolean) { if (state) { project.service().state.selectedProfile = option - if (option == "disabled") { + if (option == "Disabled") { LspServerManager.getInstance(project) .stopServers(OdooLSLspServerSupportProvider::class.java) updateStatus() @@ -151,16 +151,14 @@ class OdooLspStatusWidget( } }) } - var textStart = "Start Server" if (isRunning) { - textStart = "Restart Server" + add(object : AnAction("Restart Server") { + override fun actionPerformed(e: AnActionEvent) { + LspServerManager.getInstance(project) + .stopAndRestartIfNeeded(OdooLSLspServerSupportProvider::class.java) + } + }) } - add(object : AnAction(textStart) { - override fun actionPerformed(e: AnActionEvent) { - LspServerManager.getInstance(project) - .stopAndRestartIfNeeded(OdooLSLspServerSupportProvider::class.java) - } - }) add(object : AnAction("Open Logs") { override fun actionPerformed(e: AnActionEvent) { val pathToInstallation = OdooLSApplicationSettings.getInstance().state.dataPath; @@ -180,13 +178,8 @@ class OdooLspStatusWidget( }) } - var title = "Odoo LS: Stopped" - if (isRunning) { - title = "Odoo LS: Running" - } - val popup = JBPopupFactory.getInstance().createActionGroupPopup( - title, + "Odoo LS", group, context, JBPopupFactory.ActionSelectionAid.SPEEDSEARCH,