diff --git a/proto/exa/language_server_pb/language_server.proto b/proto/exa/language_server_pb/language_server.proto index 3110535..2c37357 100644 --- a/proto/exa/language_server_pb/language_server.proto +++ b/proto/exa/language_server_pb/language_server.proto @@ -246,10 +246,11 @@ message Document { Range visible_range = 9; } -// Next ID: 3, Previous field: insert_spaces. +// Next ID: 4, Previous field: disable_autocomplete_in_comments. message EditorOptions { uint64 tab_size = 1; bool insert_spaces = 2; + bool disable_autocomplete_in_comments = 3; } enum CodeiumState { diff --git a/src/main/kotlin/com/codeium/intellij/EditorManager.kt b/src/main/kotlin/com/codeium/intellij/EditorManager.kt index 706a57c..8f2702c 100644 --- a/src/main/kotlin/com/codeium/intellij/EditorManager.kt +++ b/src/main/kotlin/com/codeium/intellij/EditorManager.kt @@ -6,6 +6,7 @@ package com.codeium.intellij import com.codeium.intellij.auth.CodeiumAuthService import com.codeium.intellij.language_server.LanguageServerService +import com.codeium.intellij.settings.AppSettingsState import com.codeium.intellij.statusbar.CodeiumStatusService import com.intellij.codeInsight.lookup.LookupManager import com.intellij.injected.editor.VirtualFileWindow @@ -240,6 +241,7 @@ class EditorManager { return CodeiumCommon.EditorOptions.newBuilder() .setInsertSpaces(!settings.isUseTabCharacter(editor.project)) .setTabSize(settings.getTabSize(editor.project).toLong()) + .setDisableAutocompleteInComments(!AppSettingsState.instance.enableInComments) .build() } diff --git a/src/main/kotlin/com/codeium/intellij/settings/AppSettingsConfigurable.kt b/src/main/kotlin/com/codeium/intellij/settings/AppSettingsConfigurable.kt index 35b66e7..1f48aa7 100644 --- a/src/main/kotlin/com/codeium/intellij/settings/AppSettingsConfigurable.kt +++ b/src/main/kotlin/com/codeium/intellij/settings/AppSettingsConfigurable.kt @@ -38,8 +38,10 @@ class AppSettingsConfigurable : Configurable { override fun isModified(): Boolean { val settings: AppSettingsState = AppSettingsState.instance return (codeiumSettingsComponent?.chatInlayEnabled != settings.chatInlayEnabled || - codeiumSettingsComponent?.indexingEnabled != settings.indexingEnabled || - codeiumSettingsComponent?.indexingMaxFileCount != settings.indexingMaxFileCount) + codeiumSettingsComponent?.indexingEnabled != settings.indexingEnabled || + codeiumSettingsComponent?.indexingMaxFileCount != settings.indexingMaxFileCount || + codeiumSettingsComponent?.enableInComments != settings.enableInComments + ) } override fun apply() { @@ -47,6 +49,7 @@ class AppSettingsConfigurable : Configurable { settings.chatInlayEnabled = codeiumSettingsComponent!!.chatInlayEnabled settings.indexingEnabled = codeiumSettingsComponent!!.indexingEnabled settings.indexingMaxFileCount = codeiumSettingsComponent!!.indexingMaxFileCount + settings.enableInComments = codeiumSettingsComponent!!.enableInComments } override fun reset() { @@ -54,6 +57,7 @@ class AppSettingsConfigurable : Configurable { codeiumSettingsComponent!!.chatInlayEnabled = settings.chatInlayEnabled codeiumSettingsComponent!!.indexingEnabled = settings.indexingEnabled codeiumSettingsComponent!!.indexingMaxFileCount = settings.indexingMaxFileCount + codeiumSettingsComponent!!.enableInComments = settings.enableInComments } override fun disposeUIResources() { @@ -66,18 +70,22 @@ class AppSettingsConfigurable : Configurable { private val chatInlayEnabledCheckBox = JBCheckBox("Enable Chat Inlay Hints ") private val indexingEnabledCheckBox = JBCheckBox("Enable Codeium Indexing (Requires Reload)") private val indexingMaxFileCountTextField = JBTextField("5000") + private val enableInCommentsCheckBox = JBCheckBox("If true, Codeium will provide autocomplete suggestions in comments.") init { indexingMaxFileCountTextField.setToolTipText( - "If indexing is enabled, we will only attempt to index workspaces that have up to this many files. This file count ignores .gitignore and binary files. Raising this limit from default may lead to performance issues. Values 0 or below will be treated as unlimited.") + "If indexing is enabled, we will only attempt to index workspaces that have up to this many files. This file count ignores .gitignore and binary files. Raising this limit from default may lead to performance issues. Values 0 or below will be treated as unlimited." + ) panel = - FormBuilder.createFormBuilder() - .addComponent(chatInlayEnabledCheckBox, 1) - .addComponent(indexingEnabledCheckBox, 1) - .addLabeledComponent( - "Indexing Max Workspace Size (File Count)", indexingMaxFileCountTextField, 1) - .addComponentFillVertically(JPanel(), 0) - .getPanel() + FormBuilder.createFormBuilder() + .addComponent(chatInlayEnabledCheckBox, 1) + .addComponent(indexingEnabledCheckBox, 1) + .addLabeledComponent( + "Indexing Max Workspace Size (File Count)", indexingMaxFileCountTextField, 1 + ) + .addComponent(enableInCommentsCheckBox, 1) + .addComponentFillVertically(JPanel(), 0) + .getPanel() } val preferredFocusedComponent: JComponent @@ -98,5 +106,10 @@ class AppSettingsConfigurable : Configurable { set(newValue) { indexingMaxFileCountTextField.setText(newValue.toString()) } + var enableInComments: Boolean + get() = enableInCommentsCheckBox.isSelected + set(newStatus) { + enableInCommentsCheckBox.isSelected = newStatus + } } } diff --git a/src/main/kotlin/com/codeium/intellij/settings/AppSettingsState.kt b/src/main/kotlin/com/codeium/intellij/settings/AppSettingsState.kt index 728d249..3afd900 100644 --- a/src/main/kotlin/com/codeium/intellij/settings/AppSettingsState.kt +++ b/src/main/kotlin/com/codeium/intellij/settings/AppSettingsState.kt @@ -24,6 +24,7 @@ class AppSettingsState : PersistentStateComponent { var chatInlayEnabled = true var indexingEnabled = false var indexingMaxFileCount = 5000 + var enableInComments = false @Nullable override fun getState(): AppSettingsState {