@marimo-team/codemirror-languageserver v1.15.15
CodeMirror 6 Language Server Protocol (LSP) Plugin
A powerful LSP client plugin for CodeMirror 6 that brings IDE-like features to your editor.
This is a fork of FurqanSoftware/codemirror-languageserver with additional features and modernization.
Features
- 🔍 Code Completion - Intelligent autocompletion with support for snippets
- 💡 Hover Information - Rich documentation on hover
- ⚠️ Diagnostics - Real-time error checking and warnings
- 🔄 Code Actions - Quick fixes and refactoring suggestions
- 🏷️ Symbol Renaming - Smart symbol renaming across files
- 🎯 Go to Definition - Jump to symbol definitions
- 🎨 Markdown Support - Rich formatting in hover tooltips and documentation
Installation
npm install @marimo-team/codemirror-languageserver
# or
pnpm add @marimo-team/codemirror-languageserver
# or
yarn add @marimo-team/codemirror-languageserverUsage
import { languageServer } from '@marimo-team/codemirror-languageserver';
import { EditorState, EditorView } from '@codemirror/basic-setup';
import { WebSocketTransport } from '@open-rpc/client-js';
// Create a WebSocket transport
const transport = new WebSocketTransport('ws://your-language-server-url');
// Configure the language server plugin
const ls = languageServer({
transport,
rootUri: 'file:///',
documentUri: 'file:///path/to/your/file',
languageId: 'typescript', // Or any other language ID supported by your LSP
// Optional: Customize keyboard shortcuts
keyboardShortcuts: {
rename: 'F2', // Default: F2
goToDefinition: 'ctrlcmd', // Ctrl/Cmd + Click
},
// Optional: Allow HTML content in tooltips
allowHTMLContent: true,
});
// Create editor with the LSP plugin
const view = new EditorView({
state: EditorState.create({
doc: 'Your initial content',
extensions: [
// ... other extensions ...
ls
]
}),
parent: document.querySelector('#editor')
});Keyboard Shortcuts
F2- Rename symbol under cursorCtrl/Cmd + Click- Go to definitionCtrl/Cmd + Space- Trigger completion manually
Advanced Configuration
Sharing Client Across Multiple Instances
import { LanguageServerClient } from '@marimo-team/codemirror-languageserver';
const client = new LanguageServerClient({
transport,
rootUri: 'file:///',
workspaceFolders: [{ name: 'workspace', uri: 'file:///' }]
});
// Use in multiple editors
const ls1 = languageServerWithClient({
client,
documentUri: 'file:///file1.ts',
languageId: 'typescript'
});
const ls2 = languageServerWithClient({
client,
documentUri: 'file:///file2.ts',
languageId: 'typescript'
});Contributing
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
Please ensure your PR includes appropriate tests and documentation.
Demo
Check out our live demo to see the plugin in action.
License
BSD 3-Clause License
Credits
This is a modernized fork of FurqanSoftware/codemirror-languageserver with additional features:
- Modernized codebase (linting, formatting, etc.)
- Testing
- GitHub Actions CI
- Symbol renaming
- Markdown code completions
- Code completion
resolvesupport - Code actions and quick fixes
- Go-to-definition
- Improved demo page
- Better error handling
- Enhanced documentation
8 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago