LspStdioConfig class
This class provides a configuration for Language Server Protocol (LSP) using standard input/output communication. Little bit complex compared to LspSocketConfig.
/// Documenation available here.
Example:
Create an async method to initialize the LSP configuration.
Future<LspConfig?> _initLsp() async {
try {
final config = await LspStdioConfig.start(
executable: '/home/athul/.nvm/versions/node/v20.19.2/bin/pyright-langserver',
args: ['--stdio']
filePath: '/home/athul/Projects/lsp/example.py',
workspacePath: '/home/athul/Projects/lsp',
languageId: 'python',
);
return config;
} catch (e) {
debugPrint('LSP Initialization failed: $e');
return null;
}
}
Then use a FutureBuilder to initialize the LSP configuration and pass it to the CodeCrafter widget:
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child: FutureBuilder(
future: _initLsp(), // Call the async method to get the LSP config
builder: (context, snapshot) {
if(snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
}
return CodeCrafter(
wrapLines: true,
editorTheme: anOldHopeTheme,
controller: controller,
filePath: '/home/athul/Projects/lsp/example.py',
textStyle: TextStyle(fontSize: 15, fontFamily: 'monospace'),
lspConfig: snapshot.data, // Pass the LSP config here
);
}
),
)
),
);
}
Properties
-
args
→ List<
String> ? -
Optional arguments for the executable.
final
- disableError → bool
-
Whether to disable errors from the LSP server.
finalinherited
- disableWarning → bool
-
Whether to disable warnings from the LSP server.
finalinherited
-
environment
→ Map<
String, String> ? -
Optional environement variables for the executable.
final
- executable → String
-
location of the LSP executable, such as
pyright-langserver,rust-analyzer, etc.final - filePath → String
-
The file path of the document to be processed by the LSP.
finalinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- languageId → String
-
The language ID of the language.
finalinherited
-
responses
→ Stream<
Map< String, dynamic> > -
Stream of responses from the LSP server.
Use this to listen for notifications like diagnostics.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
serverTokenModifiers
→ List<
String> ? -
The server's semantic token modifiers legend.
Returns null if not yet initialized.
no setterinherited
-
serverTokenTypes
→ List<
String> ? -
The server's semantic token types legend.
Returns null if not yet initialized.
no setterinherited
- workspacePath → String
-
The workspace path of the document to be processed by the LSP.
finalinherited
Methods
-
closeDocument(
) → Future< void> -
Updates the document in the LSP server if there is any change.
///
This method is used internally by the
CodeCrafterwidget and calling it directly is not recommended.inherited -
dispose(
) → void -
override
-
exitServer(
) → Future< void> -
Exits the LSP server process.
inherited
-
getCompletions(
int line, int character) → Future< List< LspCompletion> > -
This method is used to get completions at a specific position in the document.
inherited
-
getDefinition(
int line, int character) → Future< Map< String, dynamic> > -
Gets the definition location for a symbol at the specified position.
inherited
-
getHover(
int line, int character) → Future< String> -
This method is used to get details at a specific position in the document.
inherited
-
getReferences(
int line, int character) → Future< List> -
Gets all references to a symbol at the specified position.
inherited
-
getSemanticTokensFull(
) → Future< List< LspSemanticToken> > -
Gets all semantic tokens for the document.
inherited
-
initialize(
) → Future< void> -
This method is used to initialize the LSP server.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
openDocument(
{String? initialContent}) → Future< void> -
Opens the document in the LSP server.
inherited
-
saveDocument(
String content) → Future< void> -
Saves the document in the LSP server.
inherited
-
shutdown(
) → Future< void> -
Shuts down the LSP server gracefully.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
-
updateDocument(
String content) → Future< void> -
Updates the document content in the LSP server.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited