Skip to content

Language Service API Reference

The @rcs-lang/language-service package provides advanced IDE features for RCL through the Language Server Protocol.

Main service class providing all language features.

class LanguageService {
constructor(options?: LanguageServiceOptions)
// Initialization
initialize(params: InitializeParams): Promise<void>
// Core features
getCompletions(params: CompletionParams): Promise<CompletionItem[]>
getHover(params: HoverParams): Promise<Hover | null>
getDefinition(params: DefinitionParams): Promise<Location | null>
getReferences(params: ReferenceParams): Promise<Location[]>
// Document management
updateDocument(uri: string, content: string): Promise<void>
closeDocument(uri: string): void
// Diagnostics
getDiagnostics(uri: string): Promise<Diagnostic[]>
// Advanced features
rename(params: RenameParams): Promise<WorkspaceEdit | null>
getDocumentSymbols(uri: string): Promise<DocumentSymbol[]>
getSemanticTokens(uri: string): Promise<SemanticTokens>
}

Provides context-aware code completion.

class CompletionProvider {
getCompletions(
document: TextDocument,
position: Position,
context?: CompletionContext
): Promise<CompletionItem[]>
}

Enables "Go to Definition" functionality.

class DefinitionProvider {
getDefinition(
document: TextDocument,
position: Position
): Promise<Location | null>
}

Provides rich hover information.

class HoverProvider {
getHover(
document: TextDocument,
position: Position
): Promise<Hover | null>
}
import { LanguageService } from '@rcs-lang/language-service';
const service = new LanguageService();
// Initialize with workspace
await service.initialize({
workspaceFolders: ['/path/to/workspace']
});
// Get completions
const completions = await service.getCompletions({
uri: 'file:///example.rcl',
position: { line: 10, character: 15 }
});
// Get diagnostics
const diagnostics = await service.getDiagnostics('file:///example.rcl');

See the main README for detailed usage examples and integration patterns.