on master help sign in
lsp: Pass through language_id on didOpenTextDocument.
eca2a73Blaž Hrastnik
helix-lsp/src/client.rs+2−1
@@ -244,11 +244,12 @@ impl Client {
244 uri: lsp::Url,
244 uri: lsp::Url,
245 version: i32,
245 version: i32,
246 doc: &Rope,
246 doc: &Rope,
247+ language_id: String,
247 ) -> Result<()> {
248 ) -> Result<()> {
248 self.notify::<lsp::notification::DidOpenTextDocument>(lsp::DidOpenTextDocumentParams {
249 self.notify::<lsp::notification::DidOpenTextDocument>(lsp::DidOpenTextDocumentParams {
249 text_document: lsp::TextDocumentItem {
250 text_document: lsp::TextDocumentItem {
250 uri,
251 uri,
251− language_id: "rust".to_string(), // TODO: hardcoded for now
252+ language_id,
252 version,
253 version,
253 text: String::from(doc),
254 text: String::from(doc),
254 },
255 },
helix-term/src/commands.rs+1
@@ -1183,6 +1183,7 @@ pub fn completion(cx: &mut Context) {
1183 let pos = helix_lsp::util::pos_to_lsp_pos(doc.text().slice(..), doc.selection().cursor());
1183 let pos = helix_lsp::util::pos_to_lsp_pos(doc.text().slice(..), doc.selection().cursor());
1184
1184
1185 // TODO: handle fails
1185 // TODO: handle fails
1186+
1186 let res = smol::block_on(language_server.completion(doc.identifier(), pos)).unwrap_or_default();
1187 let res = smol::block_on(language_server.completion(doc.identifier(), pos)).unwrap_or_default();
1187
1188
1188 // TODO: if no completion, show some message or something
1189 // TODO: if no completion, show some message or something
helix-view/src/editor.rs+7
@@ -46,10 +46,17 @@ impl Editor {
46 if let Some(language_server) = language_server {
46 if let Some(language_server) = language_server {
47 doc.set_language_server(Some(language_server.clone()));
47 doc.set_language_server(Some(language_server.clone()));
48
48
49+ let language_id = doc
50+ .language()
51+ .and_then(|s| s.split(".").last()) // source.rust
52+ .map(ToOwned::to_owned)
53+ .unwrap_or_default();
54+
49 smol::block_on(language_server.text_document_did_open(
55 smol::block_on(language_server.text_document_did_open(
50 doc.url().unwrap(),
56 doc.url().unwrap(),
51 doc.version(),
57 doc.version(),
52 doc.text(),
58 doc.text(),
59+ language_id,
53 ))
60 ))
54 .unwrap();
61 .unwrap();
55 }
62 }