feat: add streamd lsp subcommand with LSP server #90
3 changed files with 55 additions and 6 deletions
|
|
@ -53,6 +53,10 @@ jobs:
|
|||
if: steps.version.outputs.SKIP != 'true'
|
||||
run: nix build .#streamd-windows -o result-windows
|
||||
|
||||
- name: Build Zed extension
|
||||
if: steps.version.outputs.SKIP != 'true'
|
||||
run: nix build .#zed-extension-zip -o result-zed-extension-zip
|
||||
|
||||
- name: Prepare release artifacts
|
||||
if: steps.version.outputs.SKIP != 'true'
|
||||
run: |
|
||||
|
|
@ -60,6 +64,7 @@ jobs:
|
|||
cp result-deb release/streamd_${{ steps.version.outputs.VERSION }}_amd64.deb
|
||||
cp result-musl/bin/streamd release/streamd-${{ steps.version.outputs.VERSION }}-linux-x86_64
|
||||
cp result-windows/bin/streamd.exe release/streamd-${{ steps.version.outputs.VERSION }}-windows-x86_64.exe
|
||||
cp result-zed-extension-zip release/streamd-zed-extension-${{ steps.version.outputs.VERSION }}.zip
|
||||
|
||||
- name: Create release
|
||||
if: steps.version.outputs.SKIP != 'true'
|
||||
|
|
|
|||
35
README.md
35
README.md
|
|
@ -153,6 +153,41 @@ Add to `~/.config/zed/settings.json`:
|
|||
|
||||
The `"..."` keeps Zed's default Markdown servers (e.g. `marksman`) active alongside streamd.
|
||||
|
||||
#### Zed Extension (WSL2)
|
||||
|
||||
If you run Zed on Windows with streamd installed inside WSL2, use the pre-built Zed extension instead of the manual config above. The extension auto-detects Windows and routes LSP communication through WSL2.
|
||||
|
||||
**1. Install streamd in WSL2** (e.g. via the `.deb` package):
|
||||
|
||||
```bash
|
||||
wget https://git.konstantinfickel.de/kfickel/streamd/releases/download/vX.Y.Z/streamd_X.Y.Z_amd64.deb
|
||||
sudo dpkg -i streamd_X.Y.Z_amd64.deb
|
||||
```
|
||||
|
||||
**2. Download the extension** from the same release page:
|
||||
|
||||
```
|
||||
streamd-zed-extension-X.Y.Z.zip
|
||||
```
|
||||
|
||||
**3. Extract the zip** to a permanent folder on your Windows machine, e.g.:
|
||||
|
||||
```
|
||||
C:\Users\<you>\zed-extensions\streamd-zed-extension\
|
||||
```
|
||||
|
||||
The folder must contain `extension.toml` and `extension.wasm`.
|
||||
|
||||
**4. Install the extension in Zed** via the command palette (`Ctrl+Shift+P`):
|
||||
|
||||
```
|
||||
zed: install dev extension
|
||||
```
|
||||
|
||||
Point Zed to the extracted folder.
|
||||
|
||||
**5. Verify** by opening a Markdown file inside a directory that contains `.streamd.toml` — `@` completions and diagnostics should become active.
|
||||
|
||||
### Neovim (nvim-lspconfig)
|
||||
|
||||
**1. Register the server** — add to your Neovim config (e.g. `~/.config/nvim/init.lua` or a plugin file):
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use zed_extension_api::{self as zed, Command, LanguageServerId, Result, Worktree};
|
||||
use zed_extension_api::{self as zed, Command, LanguageServerId, Os, Result, Worktree, current_platform};
|
||||
|
||||
struct StreamdExtension;
|
||||
|
||||
|
|
@ -12,11 +12,20 @@ impl zed::Extension for StreamdExtension {
|
|||
_language_server_id: &LanguageServerId,
|
||||
_worktree: &Worktree,
|
||||
) -> Result<Command> {
|
||||
Ok(Command {
|
||||
command: "streamd".into(),
|
||||
args: vec!["lsp".into()],
|
||||
env: vec![],
|
||||
})
|
||||
let (os, _) = current_platform();
|
||||
if os == Os::Windows {
|
||||
Ok(Command {
|
||||
command: "wsl".into(),
|
||||
args: vec!["streamd".into(), "lsp".into()],
|
||||
env: vec![],
|
||||
})
|
||||
} else {
|
||||
Ok(Command {
|
||||
command: "streamd".into(),
|
||||
args: vec!["lsp".into()],
|
||||
env: vec![],
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue