Skip to main content

Features

Pike LSP provides a comprehensive set of Language Server Protocol features for Pike development.

Core Language Features

FeatureDescriptionStatus
Syntax HighlightingFull semantic token-based highlighting✅ Available
Code CompletionIntelligent autocomplete with snippets✅ Available
Go to DefinitionNavigate to symbol definitions (F12)✅ Available
Find ReferencesFind all usages of a symbol (Shift+F12)✅ Available
Hover InformationType info, documentation, deprecation warnings✅ Available
DiagnosticsReal-time syntax error detection✅ Available
Signature HelpParameter hints while typing✅ Available

Advanced Features

FeatureDescriptionStatus
Rename SymbolSafely rename across files (F2)✅ Available
Call HierarchyView incoming/outgoing calls✅ Available
Type HierarchyExplore class inheritance✅ Available
Code LensReference counts above functions✅ Available
Document LinksClickable paths in comments✅ Available
Workspace SymbolsSearch symbols project-wide (Ctrl+T)✅ Available
Code ActionsQuick fixes and organize imports✅ Available
FormattingDocument and range formatting✅ Available
Folding RangesSmart code folding✅ Available
Selection RangesSmart selection expansion✅ Available
Semantic TokensAdvanced syntax highlighting✅ Available
Inlay HintsParameter name hints inline✅ Available
Document SymbolsNavigate document structure (Ctrl+Shift+O)✅ Available
Linked EditingMulti-cursor editing for linked ranges✅ Available

Pike-Specific Features

FeatureDescriptionStatus
Smart CompletionScope operator (::, ->) completion with deprecated tag support✅ Available
AutoDoc RenderingFull AutoDoc tag support (@returns, @mapping, @member)✅ Available
Nested ClassesRecursive extraction up to depth 5 with full symbol resolution✅ Available
Preprocessor ExtractionToken-based symbol extraction from conditional blocks✅ Available
Stdlib ResolutionSmart caching for Pike 8 stdlib modules✅ Available
Module ResolutionAutomatic module path discovery✅ Available
Import/Inherit ResolutionNavigate to imported/inherited modules✅ Available

Roxen Framework Support

FeatureDescriptionStatus
Module DetectionAutomatic detection of Roxen modules via markers✅ Available
RXML Tag CompletionTag and attribute completion for RXML templates✅ Available
Defvar ExtractionVariable extraction and symbol grouping✅ Available
Lifecycle CallbacksDetection and validation of module callbacks✅ Available
Constant CompletionsMODULE**, TYPE*_, VAR__ constant completions✅ Available
RequestID MembersProperties and methods completion for RequestID✅ Available
Roxen DiagnosticsValidation of Roxen module structure✅ Available

Keyboard Shortcuts

ActionShortcut
Go to DefinitionF12
Find ReferencesShift+F12
Rename SymbolF2
Trigger CompletionCtrl+Space
Signature HelpCtrl+Shift+Space
Go to SymbolCtrl+Shift+O
Workspace SymbolCtrl+T
Show HoverCtrl+K Ctrl+I
Trigger Code ActionsCtrl+.
Format DocumentShift+Alt+F

Performance

Pike LSP is designed for performance:

  • Parses 1000+ line files in ~15ms
  • Batch parsing for fast workspace indexing
  • Smart caching for stdlib modules
  • Request deduplication for concurrent operations
  • Lazy loading of modules

Supported File Types

  • .pike - Pike source files
  • .pmod - Pike module files
  • .inc - Pike include files (via file association)
  • .pike files within Roxen modules
  • .rjs - Roxen JavaScript files (via file association)

Known Limitations

Analysis Limitations

LimitationDescription
Preprocessor DirectivesToken-based extraction for symbols in #if/#else/#endif blocks
Nested ClassesRecursive extraction up to depth 5 (configurable)
Type InferenceBasic types from literals and function signatures
Dynamic ModulesRuntime-loaded modules cannot be statically analyzed
Live Benchmarks

View performance benchmarks at thesmuks.github.io/pike-lsp