or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

code-actions.mdcompletion.mdconfiguration.mddiagnostics.mdextensions.mdfloat-windows.mdindex.mdlists.mdnavigation.mdservice-management.md
tile.json

configuration.mddocs/

Configuration

JSON-based configuration system compatible with VSCode settings. Supports both global and workspace-specific configurations with live reloading, schema validation, and comprehensive customization options for all aspects of coc.nvim behavior.

Capabilities

Configuration Files

Manage global and workspace-specific configuration files with automatic creation and editing support.

:CocConfig
    " Open global configuration file (coc-settings.json)
    " Creates file if it doesn't exist
    " Located in coc config directory

:CocLocalConfig  
    " Open workspace-specific configuration file
    " Creates .vim/coc-settings.json in project root
    " Takes precedence over global config

coc#util#get_config_home()
    " Get coc configuration directory path
    " Returns: string - path to config directory

g:coc_config_home
    " Override default config directory
    " Type: string - custom config path

Usage Examples:

" Open global config
:CocConfig

" Open workspace config for project-specific settings
:CocLocalConfig

" Custom config directory
let g:coc_config_home = '~/.vim/coc-config'

" Check config location
echo 'Config directory: ' . coc#util#get_config_home()

" Auto-create basic config
function! SetupCocConfig()
  let config_file = coc#util#get_config_home() . '/coc-settings.json'
  if !filereadable(config_file)
    call writefile([
      \ '{',  
      \ '  "suggest.noselect": false,',
      \ '  "diagnostic.enable": true,',
      \ '  "coc.preferences.formatOnSaveFiletypes": ["json", "javascript", "typescript"]',
      \ '}'
    \ ], config_file)
    echo 'Created basic coc-settings.json'
  endif
endfunction

Programmatic Configuration

Modify configuration settings programmatically with runtime updates and validation.

coc#config({section}, {value})
    " Set configuration value programmatically
    " Parameters:
    "   {section} - string: configuration key (dot notation)
    "   {value} - any: configuration value
    " Returns: void

g:coc_user_config  
    " Runtime configuration dictionary
    " Type: dict - user config overrides
    " Merged with JSON configuration

CocAction('workspace.configuration', {section})
    " Get configuration value
    " Parameters:
    "   {section} - string: configuration section
    " Returns: configuration value

Usage Examples:

" Set configuration values
call coc#config('suggest.noselect', v:false)
call coc#config('diagnostic.enable', v:true)  
call coc#config('coc.preferences.formatOnSaveFiletypes', ['json', 'js'])

" Runtime config via global variable
let g:coc_user_config = {
  \ 'suggest.autoTrigger': 'always',
  \ 'diagnostic.checkCurrentLine': v:true,
  \ }

" Get configuration value
let formatOnSave = CocAction('workspace.configuration', 'coc.preferences.formatOnSaveFiletypes')
echo 'Format on save: ' . string(formatOnSave)

" Conditional configuration
if has('nvim-0.5.0')
  call coc#config('coc.preferences.useFloatWindow', v:true)
endif

Core Configuration Options

Essential settings controlling coc.nvim behavior, performance, and user experience.

" Completion settings
"suggest.autoTrigger": "always" | "none" | "trigger"
"suggest.noselect": boolean
"suggest.enablePreselect": boolean  
"suggest.timeout": number
"suggest.minTriggerInputLength": number
"suggest.maxCompleteItemCount": number

" Diagnostic settings
"diagnostic.enable": boolean
"diagnostic.level": "error" | "warning" | "information" | "hint"
"diagnostic.checkCurrentLine": boolean
"diagnostic.maxWindowHeight": number
"diagnostic.refreshOnInsertMode": boolean

" LSP settings  
"languageserver": {
  "{server-name}": {
    "command": string,
    "args": string[],
    "filetypes": string[],
    "rootPatterns": string[],
    "settings": object
  }
}

" UI preferences
"coc.preferences.useFloatWindow": boolean
"coc.preferences.hoverTarget": "preview" | "echo" | "float"
"coc.preferences.previewAutoClose": boolean

Usage Examples:

" Comprehensive configuration example
{
  "suggest.autoTrigger": "always",
  "suggest.noselect": false,
  "suggest.enablePreselect": true,
  "suggest.timeout": 500,
  "suggest.minTriggerInputLength": 1,
  "suggest.maxCompleteItemCount": 50,
  
  "diagnostic.enable": true,
  "diagnostic.level": "warning", 
  "diagnostic.checkCurrentLine": false,
  "diagnostic.maxWindowHeight": 10,
  "diagnostic.refreshOnInsertMode": true,
  "diagnostic.virtualText": true,
  
  "coc.preferences.useFloatWindow": true,
  "coc.preferences.hoverTarget": "float",
  "coc.preferences.previewAutoClose": true,
  "coc.preferences.formatOnSaveFiletypes": [
    "javascript", "typescript", "json", "css", "html", "python"
  ]
}

Language Server Configuration

Configure language servers for different programming languages with custom settings and initialization options.

" Language server configuration structure:
"languageserver": {
  "{server-id}": {
    "command": string,           // Server executable command
    "args": string[],           // Command line arguments  
    "filetypes": string[],      // Supported file types
    "rootPatterns": string[],   // Project root detection
    "settings": object,         // Server-specific settings
    "trace.server": string,     // Trace level
    "initializationOptions": object
  }
}

Usage Examples:

" Language server configurations
{
  "languageserver": {
    "golang": {
      "command": "gopls",
      "rootPatterns": ["go.mod", ".vim/", ".git/", ".hg/"],
      "filetypes": ["go"],
      "initializationOptions": {
        "usePlaceholders": true,
        "completeUnimported": true
      }
    },
    
    "rust": {
      "command": "rust-analyzer", 
      "filetypes": ["rust"],
      "rootPatterns": ["Cargo.toml"],
      "settings": {
        "rust-analyzer": {
          "cargo": {
            "loadOutDirsFromCheck": true
          },
          "procMacro": {
            "enable": true
          }
        }
      }
    },
    
    "lua": {
      "command": "lua-language-server",
      "filetypes": ["lua"],
      "rootPatterns": [".luarc.json", ".git/"],
      "settings": {
        "Lua": {
          "diagnostics": {
            "globals": ["vim"]
          },
          "workspace": {
            "library": {
              "${3rd}/luv/library": true,
              "${3rd}/busted/library": true
            }
          }
        }
      }
    }
  }
}

Performance and Optimization Settings

Configure performance-related settings for optimal experience with large codebases and resource management.

" Performance settings
"coc.preferences.maxFileSize": string          // Skip large files  
"coc.preferences.jumpCommand": string          // Jump command
"coc.preferences.enableMessageDialog": boolean // Dialog vs echo
"coc.preferences.extensionUpdateCheck": string // Update frequency

" Memory and resource settings
"workspace.ignoredFiletypes": string[]         // Skip file types
"workspace.ignoredFolders": string[]          // Skip directories  
"workspace.maxFileSize": number               // File size limit

" Completion performance
"suggest.snippetIndicator": string            // Snippet indicator
"suggest.filterGraceful": boolean             // Graceful filtering
"suggest.localityBonus": boolean              // Local completions first

Usage Examples:

" Performance optimization
{
  "coc.preferences.maxFileSize": "1MB",
  "coc.preferences.jumpCommand": "edit",
  "coc.preferences.enableMessageDialog": false,
  "coc.preferences.extensionUpdateCheck": "weekly",
  
  "workspace.ignoredFiletypes": ["markdown", "text"],
  "workspace.ignoredFolders": ["node_modules", ".git", "target", "build"],
  "workspace.maxFileSize": 5242880,
  
  "suggest.filterGraceful": true,
  "suggest.localityBonus": true,
  "suggest.snippetIndicator": "►"
}

" Conditional performance settings
if has('nvim-0.5')
  call coc#config('coc.preferences.useFloatWindow', v:true)
else
  call coc#config('coc.preferences.hoverTarget', 'preview')
endif

Keybinding and UI Configuration

Customize key mappings, UI behavior, and interface preferences through configuration.

" UI configuration options
"coc.preferences.colorSupport": boolean        // Color support
"coc.preferences.previewMaxHeight": number     // Preview height
"coc.preferences.currentFunctionSymbol": string // Function symbol
"coc.preferences.bracketEnterImprove": boolean // Bracket behavior

" List interface settings  
"list.indicator": string                      // List indicator
"list.selectedSignText": string               // Selection indicator
"list.normalMappings": object                 // Normal mode mappings
"list.insertMappings": object                 // Insert mode mappings

Usage Examples:

" UI customization
{
  "coc.preferences.colorSupport": true,
  "coc.preferences.previewMaxHeight": 20,
  "coc.preferences.currentFunctionSymbol": "🔗",
  "coc.preferences.bracketEnterImprove": true,
  
  "list.indicator": "❯",
  "list.selectedSignText": "▶",
  "list.normalMappings": {
    "<C-c>": "do:exit",
    "<C-j>": "do:next", 
    "<C-k>": "do:previous"
  },
  "list.insertMappings": {
    "<C-j>": "do:next",
    "<C-k>": "do:previous",
    "<C-v>": "action:vsplit"
  }
}

Configuration Validation and Debugging

Tools for validating configuration syntax and debugging configuration issues.

:CocCommand workspace.showOutput
    " Show coc.nvim output channel
    " Displays configuration errors and warnings

CocAction('checkJsonExtension')
    " Validate JSON configuration syntax
    " Returns: void (shows errors if any)

" Configuration debugging
:CocInfo                               // Show config and status info
:CocOpenLog                           // Open log file
:checkhealth coc                      // Health check (Neovim)

Usage Examples:

" Validate configuration
function! ValidateConfig()
  try
    call CocAction('checkJsonExtension')
    echo "Configuration is valid"
  catch
    echo "Configuration error: " . v:exception
  endtry
endfunction

command! ValidateConfig call ValidateConfig()

" Debug configuration issues
function! DebugConfig()
  echo "=== coc.nvim Configuration Debug ==="
  echo "Config directory: " . coc#util#get_config_home()
  echo "Service status: " . (coc#rpc#ready() ? "Ready" : "Not ready")
  
  CocInfo
  CocOpenLog
endfunction

command! DebugCoc call DebugConfig()