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

diagnostics.mddocs/

Diagnostics

Real-time error detection, warning display, and diagnostic navigation. Integrates with language servers to provide immediate feedback on code issues with customizable display options, severity filtering, and location list integration.

Capabilities

Diagnostic Display Commands

View and manage diagnostic information from language servers with various display options and filtering capabilities.

:CocDiagnostics [height]
    " Open location list with current buffer diagnostics
    " Parameters:
    "   height - number: location list window height (optional)

:CocCommand diagnostics.refresh
    " Refresh diagnostics for current buffer

:CocCommand diagnostics.clear  
    " Clear all diagnostics for current workspace

Usage Examples:

" Open diagnostics in location list with default height
:CocDiagnostics

" Open with custom height
:CocDiagnostics 15

" Navigate location list
:lnext  " Next diagnostic
:lprev  " Previous diagnostic
:lclose " Close location list

Diagnostic Navigation

Navigate between diagnostic issues using key mappings for efficient error resolution workflows.

<Plug>(coc-diagnostic-info)
    " Show detailed diagnostic information at cursor
    " Displays error/warning message in float window
    " Mode: Normal

<Plug>(coc-diagnostic-next)
    " Jump to next diagnostic in current buffer
    " Mode: Normal

<Plug>(coc-diagnostic-prev)  
    " Jump to previous diagnostic in current buffer
    " Mode: Normal

<Plug>(coc-diagnostic-next-error)
    " Jump to next error (skip warnings)
    " Mode: Normal

<Plug>(coc-diagnostic-prev-error)
    " Jump to previous error (skip warnings)  
    " Mode: Normal

Usage Examples:

" Recommended diagnostic navigation mappings
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)

" Error-only navigation
nmap <silent> [e <Plug>(coc-diagnostic-prev-error)  
nmap <silent> ]e <Plug>(coc-diagnostic-next-error)

" Show diagnostic info
nmap <silent> <space>d <Plug>(coc-diagnostic-info)

" Auto-show diagnostic info on cursor hold
autocmd CursorHold * silent call CocActionAsync('doHover')

Diagnostic Status Integration

Integrate diagnostic status into statusline and other UI elements for at-a-glance code health monitoring.

coc#status()
    " Get formatted diagnostic status string for statusline
    " Returns: string - formatted diagnostic counts
    " Format: "E{error_count} W{warning_count}" or empty

" Status information access:
b:coc_diagnostic_info
    " Buffer-local diagnostic information dictionary
    " Keys: error, warning, information, hint
    " Values: number of diagnostics for each severity

g:coc_status_error_sign   
    " Error sign symbol for statusline (default: platform-specific)
    
g:coc_status_warning_sign
    " Warning sign symbol for statusline (default: platform-specific)

Usage Examples:

" Basic statusline integration
set statusline=%f\ %{coc#status()}%=

" Advanced statusline with diagnostic counts
function! DiagnosticStatus()
  let info = get(b:, 'coc_diagnostic_info', {})
  let errors = get(info, 'error', 0)
  let warnings = get(info, 'warning', 0)
  
  if errors > 0
    return printf(' E:%d', errors)
  elseif warnings > 0  
    return printf(' W:%d', warnings)
  endif
  
  return ''
endfunction

set statusline+=%{DiagnosticStatus()}

" Custom diagnostic signs
let g:coc_status_error_sign = '❌'
let g:coc_status_warning_sign = '⚠️ '

Diagnostic Configuration

Configure diagnostic behavior, appearance, and filtering through coc-settings.json for optimal development experience.

" Key diagnostic configuration options:

"diagnostic.enable": boolean
    " Enable/disable diagnostic feature

"diagnostic.level": "error" | "warning" | "information" | "hint"  
    " Minimum diagnostic level to display

"diagnostic.checkCurrentLine": boolean
    " Check diagnostics on current line only

"diagnostic.maxWindowHeight": number
    " Maximum height for diagnostic preview window

"diagnostic.refreshOnInsertMode": boolean
    " Refresh diagnostics while in insert mode

"diagnostic.virtualText": boolean
    " Show diagnostic messages as virtual text

"diagnostic.virtualTextPrefix": string
    " Prefix for virtual text messages

"diagnostic.enableSign": boolean
    " Show diagnostic signs in sign column

"diagnostic.errorSign": string
    " Sign character for errors

"diagnostic.warningSign": string  
    " Sign character for warnings

"diagnostic.infoSign": string
    " Sign character for information

"diagnostic.hintSign": string
    " Sign character for hints

Usage Examples:

" Comprehensive diagnostic configuration
{
  "diagnostic.enable": true,
  "diagnostic.level": "warning",
  "diagnostic.checkCurrentLine": false,
  "diagnostic.maxWindowHeight": 10,
  "diagnostic.refreshOnInsertMode": true,
  "diagnostic.virtualText": true,
  "diagnostic.virtualTextPrefix": " ► ",
  "diagnostic.enableSign": true,  
  "diagnostic.errorSign": "✗",
  "diagnostic.warningSign": "⚠",
  "diagnostic.infoSign": "ℹ",
  "diagnostic.hintSign": "💡"
}

" Disable diagnostics for specific filetypes
{
  "diagnostic.disableFiletypes": ["vim", "markdown"]
}

" Performance tuning for large files
{
  "diagnostic.refreshAfterSave": false,
  "diagnostic.displayByAle": false
}

Diagnostic Actions

Perform actions on diagnostic issues including quick fixes, code actions, and batch operations.

<Plug>(coc-fix-current)
    " Apply quick fix for diagnostic at cursor
    " Mode: Normal

CocAction('doQuickfix')
    " Apply quick fix programmatically  
    " Returns: boolean - success status

CocAction('diagnosticList')
    " Get list of all diagnostics
    " Returns: array of diagnostic objects

CocAction('diagnosticInfo')  
    " Get diagnostic info at current position
    " Returns: diagnostic object or null

CocAction('diagnosticNext' [, severity])
    " Jump to next diagnostic programmatically
    " Parameters:
    "   severity - string: 'error'|'warning'|'info'|'hint' (optional)

CocAction('diagnosticPrevious' [, severity])
    " Jump to previous diagnostic programmatically

Usage Examples:

" Quick fix mapping
nmap <silent> <space>qf <Plug>(coc-fix-current)

" Get all errors in current buffer
let errors = filter(CocAction('diagnosticList'), 'v:val.severity == 1')
echo "Found " . len(errors) . " errors"

" Custom diagnostic handler
function! HandleDiagnostics()
  let diagnostics = CocAction('diagnosticList')
  
  for diagnostic in diagnostics
    if diagnostic.severity == 1  " Error
      echo "Error at line " . (diagnostic.lnum + 1) . ": " . diagnostic.message
    endif
  endfor
endfunction

" Auto-fix on save for specific filetypes
augroup auto_fix
  autocmd!
  autocmd BufWritePre *.js,*.ts call CocAction('format')
  autocmd BufWritePre *.js,*.ts call CocAction('doQuickfix')
augroup end

Diagnostic Events and Hooks

Handle diagnostic events for custom processing, logging, and integration with other tools.

" Diagnostic-related autocmd events:
" - User CocDiagnosticChange: when diagnostics change
" - User CocStatusChange: when diagnostic status changes

" Custom event handlers:
autocmd User CocDiagnosticChange call OnDiagnosticChange()
autocmd User CocStatusChange call OnStatusChange()

Usage Examples:

" Log diagnostic changes
function! OnDiagnosticChange()
  let info = get(b:, 'coc_diagnostic_info', {})
  let total = get(info, 'error', 0) + get(info, 'warning', 0)
  
  if total > 0
    echom "Buffer has " . total . " diagnostic issues"
  endif
endfunction

" Auto-open location list on errors
function! OnStatusChange() 
  let info = get(b:, 'coc_diagnostic_info', {})
  let errors = get(info, 'error', 0)
  
  if errors > 0 && !getloclist(0, {'winid': 0}).winid
    CocDiagnostics
  endif
endfunction

" Custom diagnostic highlight groups
hi CocErrorHighlight ctermfg=red guifg=#ff0000
hi CocWarningHighlight ctermfg=yellow guifg=#ffaa00
hi CocInfoHighlight ctermfg=blue guifg=#0000ff  
hi CocHintHighlight ctermfg=green guifg=#00ff00