Skip to repository content67 lines · 2.2 KB · rust
tenant.openagents/omega
No repository description is available.
OpenAgents Git authority 2026-07-28T04:07:44.212Z Public web read
NIP-34 coordinate
30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omegaMaintainersHidden in public view
References2 branches · 1 tag
Read-only clone
git clone https://openagents.com/git/tenant.openagents/omega.gitBrowse files
proto.rs
1use zed_extension_api::{self as zed, Result, settings::LspSettings};
2
3use crate::language_servers::{BufLsp, ProtoLs, ProtobufLanguageServer};
4
5mod language_servers;
6
7struct ProtobufExtension {
8 protobuf_language_server: Option<ProtobufLanguageServer>,
9 protols: Option<ProtoLs>,
10 buf_lsp: Option<BufLsp>,
11}
12
13impl zed::Extension for ProtobufExtension {
14 fn new() -> Self {
15 Self {
16 protobuf_language_server: None,
17 protols: None,
18 buf_lsp: None,
19 }
20 }
21
22 fn language_server_command(
23 &mut self,
24 language_server_id: &zed_extension_api::LanguageServerId,
25 worktree: &zed_extension_api::Worktree,
26 ) -> zed_extension_api::Result<zed_extension_api::Command> {
27 match language_server_id.as_ref() {
28 ProtobufLanguageServer::SERVER_NAME => self
29 .protobuf_language_server
30 .get_or_insert_with(ProtobufLanguageServer::new)
31 .language_server_binary(worktree),
32
33 ProtoLs::SERVER_NAME => self
34 .protols
35 .get_or_insert_with(ProtoLs::new)
36 .language_server_binary(worktree),
37
38 BufLsp::SERVER_NAME => self
39 .buf_lsp
40 .get_or_insert_with(BufLsp::new)
41 .language_server_binary(worktree),
42
43 _ => Err(format!("Unknown language server ID {}", language_server_id)),
44 }
45 }
46
47 fn language_server_workspace_configuration(
48 &mut self,
49 server_id: &zed::LanguageServerId,
50 worktree: &zed::Worktree,
51 ) -> Result<Option<zed::serde_json::Value>> {
52 LspSettings::for_worktree(server_id.as_ref(), worktree)
53 .map(|lsp_settings| lsp_settings.settings)
54 }
55
56 fn language_server_initialization_options(
57 &mut self,
58 server_id: &zed::LanguageServerId,
59 worktree: &zed::Worktree,
60 ) -> Result<Option<zed_extension_api::serde_json::Value>> {
61 LspSettings::for_worktree(server_id.as_ref(), worktree)
62 .map(|lsp_settings| lsp_settings.initialization_options)
63 }
64}
65
66zed::register_extension!(ProtobufExtension);
67