Skip to content

feat: add setting to toggle language package completion#2361

Merged
bajrangCoder merged 2 commits into
mainfrom
feat/add-setting-lang-compl
Jun 23, 2026
Merged

feat: add setting to toggle language package completion#2361
bajrangCoder merged 2 commits into
mainfrom
feat/add-setting-lang-compl

Conversation

@bajrangCoder

Copy link
Copy Markdown
Member

No description provided.

@github-actions github-actions Bot added enhancement New feature or request translations Anything related to Translations Whether a Issue or PR labels Jun 22, 2026
@greptile-apps

greptile-apps Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a languageCompletion settings toggle that lets users disable CodeMirror language-package completions (keywords, snippets, etc.) while preserving LSP, local-word, and Emmet completions.

  • src/lib/editorManager.js: Introduces getAutocompleteConfig() which, when languageCompletion is false, sets autocompletion({ override: [...] }) to bypass CodeMirror's normal source discovery and explicitly re-registers the three surviving sources; the completionCompartment key list is expanded to react to the new setting.
  • src/cm/lsp/clientManager.ts: Exports a new lspCompletionEnabled facet that is pushed into per-file LSP extensions when a server supports completion, giving editorManager a way to gate serverCompletionSource inside the override path.
  • src/lib/settings.js / src/settings/editorSettings.js / 29 locale files / src/lang/index.d.ts: Default value (true), UI toggle, i18n strings, and TypeScript type declaration for the new setting.

Confidence Score: 5/5

Safe to merge. The change adds an opt-in toggle defaulting to the current behavior, so no existing functionality is altered unless the user explicitly disables the setting.

All three of the explicitly re-added completion sources (LSP, local word, Emmet) are correctly gated behind their own existing settings checks inside the override array, and the facet-based LSP gate evaluates at completion time so it picks up late-attached servers. The default value preserves the pre-PR behavior for all existing users.

No files require special attention.

Important Files Changed

Filename Overview
src/lib/editorManager.js Core change: adds getAutocompleteConfig() that switches autocompletion to override mode when languageCompletion is false, explicitly re-adding LSP, local word, and emmet sources. completionCompartment key list expanded to include the two new settings.
src/cm/lsp/clientManager.ts Exports new lspCompletionEnabled facet (combine: any-true) and pushes it into per-file lsp extensions when the server has completion enabled, so editorManager can gate serverCompletionSource in override mode.
src/lib/settings.js Adds languageCompletion: true to the defaults object, preserving existing behavior for users who have not yet toggled the setting.
src/settings/editorSettings.js Adds the language package completion toggle to the editor settings UI under the assistance category, placed adjacent to the existing localWordCompletion toggle.
src/lang/index.d.ts Type definitions for the two new i18n string keys added to LangStrings.
src/lang/en-us.json English locale: adds language package completion label and settings-info-editor-language-completion description strings.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User triggers completion] --> B{languageCompletion\nsetting}
    B -- true / default --> C[autocompletion\nno override]
    C --> D[CodeMirror normal\nsource discovery]
    D --> E[Language package completions\nkeywords / snippets]
    D --> F[LSP via serverCompletion\nextension]
    D --> G[Local word via\nlanguageData]
    D --> H[Emmet via\nmaybeAttachEmmetCompletions]

    B -- false --> I[autocompletion\noverride array]
    I --> J{lspCompletionEnabled\nfacet?}
    J -- true --> K[serverCompletionSource]
    J -- false --> L[null / skip LSP]
    I --> M{localWordCompletion\nsetting?}
    M -- true --> N[localWordCompletionSource]
    M -- false --> O[skip]
    I --> P{useEmmet\nsetting?}
    P -- true --> Q[getEmmetCompletionSource\nwith try/catch]
    P -- false --> R[skip]
    I --> S[Language package completions\nBYPASSED]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[User triggers completion] --> B{languageCompletion\nsetting}
    B -- true / default --> C[autocompletion\nno override]
    C --> D[CodeMirror normal\nsource discovery]
    D --> E[Language package completions\nkeywords / snippets]
    D --> F[LSP via serverCompletion\nextension]
    D --> G[Local word via\nlanguageData]
    D --> H[Emmet via\nmaybeAttachEmmetCompletions]

    B -- false --> I[autocompletion\noverride array]
    I --> J{lspCompletionEnabled\nfacet?}
    J -- true --> K[serverCompletionSource]
    J -- false --> L[null / skip LSP]
    I --> M{localWordCompletion\nsetting?}
    M -- true --> N[localWordCompletionSource]
    M -- false --> O[skip]
    I --> P{useEmmet\nsetting?}
    P -- true --> Q[getEmmetCompletionSource\nwith try/catch]
    P -- false --> R[skip]
    I --> S[Language package completions\nBYPASSED]
Loading

Reviews (2): Last reviewed commit: "docs" | Re-trigger Greptile

Comment thread src/cm/lsp/clientManager.ts
@bajrangCoder

This comment was marked as outdated.

@bajrangCoder bajrangCoder merged commit a6f53da into main Jun 23, 2026
10 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in The Code Board - Acode Jun 23, 2026
@bajrangCoder bajrangCoder deleted the feat/add-setting-lang-compl branch June 23, 2026 03:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request translations Anything related to Translations Whether a Issue or PR

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant