Skip to content

Commit a66f8a5

Browse files
committed
[IMP] automatically start OdooLS after installation
remove the "findManifest" logic, as OdooLS should be started anyway, to get profiles list
1 parent 3fe52cb commit a66f8a5

File tree

4 files changed

+15
-38
lines changed

4 files changed

+15
-38
lines changed

src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class OdooCustomLsp4jClient(val project: Project, handler: LspServerNotification
3636
fun setConfiguration(payload: SetConfigurationParams) {
3737
var html = payload.getHtml()
3838
var profiles = html.keys.filter { it != "__all__" }.toMutableList()
39-
profiles.add("disabled")
39+
profiles.add("Disabled")
4040
val statusBar = WindowManager.getInstance().getStatusBar(project)
4141
val widget = statusBar?.getWidget("OdooLspStatusWidget") as? OdooLspStatusWidget
4242
widget?.updateListProfiles(profiles)

src/main/kotlin/com/odoo/odools/OdooLSInstallationProjectActivity.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.intellij.openapi.project.Project
1313
import com.intellij.openapi.startup.ProjectActivity
1414
import com.intellij.openapi.util.Key
1515
import com.intellij.openapi.util.SystemInfo
16+
import com.intellij.platform.lsp.api.LspServerManager
1617
import java.nio.charset.StandardCharsets
1718
import java.nio.file.FileSystems
1819
import java.nio.file.Files
@@ -47,8 +48,9 @@ class OdooLSInstallationProjectActivity : ProjectActivity, DumbAware {
4748
if (isInstalled == null || !isInstalled) {
4849
installFromResources(pathToInstallation) {
4950
project.putUserData(ODOO_LSP_INSTALLED, true)
51+
LspServerManager.getInstance(project)
52+
.stopAndRestartIfNeeded(OdooLSLspServerSupportProvider::class.java)
5053
}
51-
return
5254
}
5355
}
5456

src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import com.intellij.openapi.util.SystemInfo
88
import com.intellij.openapi.vfs.VirtualFile
99
import com.intellij.platform.lsp.api.*
1010
import com.intellij.platform.lsp.api.customization.*
11-
import com.intellij.psi.search.FilenameIndex
12-
import com.intellij.psi.search.GlobalSearchScope
1311
import com.intellij.util.system.CpuArch
1412
import org.eclipse.lsp4j.ConfigurationItem
1513

@@ -30,31 +28,15 @@ private val HAS_MANIFEST_KEY = Key.create<Boolean>("OdooLS.HasManifest")
3028

3129
internal class OdooLSLspServerSupportProvider : LspServerSupportProvider {
3230

33-
fun findManifest(project: Project): Boolean {
34-
project.getUserData(HAS_MANIFEST_KEY)?.let { return it }
35-
val scope = GlobalSearchScope.projectScope(project)
36-
val found = FilenameIndex.getVirtualFilesByName("__manifest__.py", scope).isNotEmpty()
37-
38-
project.putUserData(HAS_MANIFEST_KEY, found)
39-
return found
40-
}
41-
4231
override fun fileOpened(project: Project, file: VirtualFile, serverStarter: LspServerSupportProvider.LspServerStarter) {
43-
val isInstalled = project.getUserData<Boolean>(ODOO_LSP_INSTALLED)
44-
if (isInstalled != true) {
45-
return
46-
}
4732
// Only run if project is loaded
4833
if (project.isDisposed) return
4934

50-
if (!findManifest(project)) return
51-
println("__manifest__.py file detected in project. Starting OdooLS")
52-
5335
serverStarter.ensureServerStarted(OdooLsServerDescriptor(project))
5436
}
5537
}
5638

57-
private class OdooLsServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "OdooLS") {
39+
class OdooLsServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "OdooLS") {
5840
override val lspServerListener: LspServerListener?
5941
get() = OdooLspServerListener(project)
6042
override val lspCustomization: LspCustomization

src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class OdooLspStatusWidget(
3232
) : EditorBasedStatusBarPopup(project, false) {
3333

3434
private var widgetState = WidgetState("Odoo", "Odoo (not started)", true)
35-
private var listProfiles: List<String> = listOf("default", "disabled")
35+
private var listProfiles: List<String> = listOf("default", "Disabled")
3636
private var gotProfiles: Boolean = false
3737
private var configHtml: Map<String, Any> = mapOf();
3838
private var currentStatus = "stop"
@@ -55,7 +55,7 @@ class OdooLspStatusWidget(
5555
val currentProfile = project.service<OdooProjectSettingsService>().state.selectedProfile
5656
var config = configHtml[currentProfile]
5757
if (config == null) {
58-
config = "No configuration for this name"
58+
config = "No configuration for this name: $currentProfile"
5959
}
6060
return Pair<String, String>(
6161
currentProfile,
@@ -102,7 +102,7 @@ class OdooLspStatusWidget(
102102
override fun setSelected(e: AnActionEvent, state: Boolean) {
103103
if (state) {
104104
project.service<OdooProjectSettingsService>().state.selectedProfile = option
105-
if (option == "disabled") {
105+
if (option == "Disabled") {
106106
LspServerManager.getInstance(project)
107107
.stopServers(OdooLSLspServerSupportProvider::class.java)
108108
updateStatus()
@@ -147,16 +147,14 @@ class OdooLspStatusWidget(
147147
}
148148
})
149149
}
150-
var textStart = "Start Server"
151150
if (isRunning) {
152-
textStart = "Restart Server"
151+
add(object : AnAction("Restart Server") {
152+
override fun actionPerformed(e: AnActionEvent) {
153+
LspServerManager.getInstance(project)
154+
.stopAndRestartIfNeeded(OdooLSLspServerSupportProvider::class.java)
155+
}
156+
})
153157
}
154-
add(object : AnAction(textStart) {
155-
override fun actionPerformed(e: AnActionEvent) {
156-
LspServerManager.getInstance(project)
157-
.stopAndRestartIfNeeded(OdooLSLspServerSupportProvider::class.java)
158-
}
159-
})
160158
add(object : AnAction("Open Logs") {
161159
override fun actionPerformed(e: AnActionEvent) {
162160
val pathToInstallation = OdooLSApplicationSettings.getInstance().state.dataPath;
@@ -176,13 +174,8 @@ class OdooLspStatusWidget(
176174
})
177175
}
178176

179-
var title = "Odoo LS: Stopped"
180-
if (isRunning) {
181-
title = "Odoo LS: Running"
182-
}
183-
184177
val popup = JBPopupFactory.getInstance().createActionGroupPopup(
185-
title,
178+
"Odoo LS",
186179
group,
187180
context,
188181
JBPopupFactory.ActionSelectionAid.SPEEDSEARCH,

0 commit comments

Comments
 (0)