How ycm-core/youcompleteme works
YouCompleteMe is a Vim code-completion and IDE-feature engine, with a Python client communicating with the ycmd server. A typical workflow starts with editing a buffer: YCM prepares buffer context, sends completion or parse requests, and presents results in Vim. Separate feature branches provide diagnostics, navigation, signature help, semantic highlighting, inlay hints, and hierarchy views. The source index supports several client-side call relationships, but the Vim-to-Python wiring and most feature request flows were not sampled, so those links are omitted rather than inferred.
Main entry points: youcompleteme.py YCM coordinator · base_request.py HTTP request base · buffer.py Buffer state · semantic_highlighting.py Semantic highlighting
Components 24
Vim Integration
- Vim plugin
plugin/youcompleteme.vim - Vim autoload
autoload/youcompleteme.vim
Client Core
- YCM coordinator
python/ycm/youcompleteme.py - Vim API
python/ycm/vimsupport.py - Buffer state
python/ycm/buffer.py - Client utilities
python/ycm/base.py - Path utilities
python/ycm/paths.py
Editor Features
- Completion handling
python/ycm/client/completion_request.py - Diagnostic display
python/ycm/diagnostic_interface.py - Hierarchy views
python/ycm/hierarchy_tree.py - Inlay hints
python/ycm/inlay_hints.py - Omni completion
python/ycm/omni_completer.py - Scroll ranges
python/ycm/scrolling_range.py - Semantic highlighting
python/ycm/semantic_highlighting.py - Signature help
python/ycm/signature_help.py - Syntax parsing
python/ycm/syntax_parse.py - Text properties
python/ycm/text_properties.py
Server Requests
- Event notifications
python/ycm/client/event_notification.py - HTTP request base
python/ycm/client/base_request.py - Command requests
python/ycm/client/command_request.py - Completion resolve
python/ycm/client/resolve_completion_request.py - Debug info requests
python/ycm/client/debug_info_request.py
Other components
- Vim user
- ycmd server
third_party/ycmd
Connections 25
- Vim user → Vim plugin: uses
README.md - Completion handling → HTTP request base: inherits
python/ycm/client/completion_request.py - Command requests → HTTP request base: inherits
python/ycm/client/command_request.py - Event notifications → HTTP request base: inherits
python/ycm/client/event_notification.py - Completion resolve → HTTP request base: inherits
python/ycm/client/resolve_completion_request.py - Debug info requests → HTTP request base: inherits
python/ycm/client/debug_info_request.py - Buffer state → Event notifications: creates
python/ycm/buffer.py - Buffer state → Diagnostic display: delegates to
python/ycm/buffer.py - Buffer state → Semantic highlighting: uses
python/ycm/buffer.py - Buffer state → Inlay hints: uses
python/ycm/buffer.py - Diagnostic display → Text properties: uses
python/ycm/diagnostic_interface.py - Omni completion → HTTP request base: uses
python/ycm/omni_completer.py - Semantic highlighting → Text properties: uses
python/ycm/semantic_highlighting.py - Semantic highlighting → Scroll ranges: uses
python/ycm/semantic_highlighting.py - Inlay hints → Scroll ranges: uses
python/ycm/inlay_hints.py - YCM coordinator → Buffer state: uses
python/ycm/youcompleteme.py - YCM coordinator → Completion handling: uses
python/ycm/youcompleteme.py - YCM coordinator → Command requests: uses
python/ycm/youcompleteme.py - YCM coordinator → Signature help: uses
python/ycm/youcompleteme.py - YCM coordinator → Syntax parsing: uses
python/ycm/youcompleteme.py - YCM coordinator → Path utilities: uses
python/ycm/youcompleteme.py - HTTP request base → ycmd server: sends HTTP
python/ycm/client/base_request.py - YCM coordinator → Vim API: uses
python/ycm/youcompleteme.py - Client utilities → Path utilities: uses
python/ycm/base.py - Client utilities → Vim API: uses
python/ycm/base.py