MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / open_document

Method open_document

crates/opencode-lsp/src/lib.rs:319–375  ·  view source on GitHub ↗
(
        &self,
        path: &Path,
        content: &str,
        language_id: &str,
    )

Source from the content-addressed store, hash-verified

317 }
318
319 pub async fn open_document(
320 &self,
321 path: &Path,
322 content: &str,
323 language_id: &str,
324 ) -> Result<(), LspError> {
325 let uri = path_to_uri(path)?;
326
327 let version = {
328 let mut versions = self.file_versions.write().await;
329 let v = versions.entry(path.to_path_buf()).or_insert(0);
330 *v
331 };
332
333 if version > 0 {
334 let next_version = version + 1;
335 self.file_versions
336 .write()
337 .await
338 .insert(path.to_path_buf(), next_version);
339
340 let params = DidChangeTextDocumentParams {
341 text_document: VersionedTextDocumentIdentifier {
342 uri,
343 version: next_version as i32,
344 },
345 content_changes: vec![TextDocumentContentChangeEvent {
346 range: None,
347 range_length: None,
348 text: content.to_string(),
349 }],
350 };
351
352 self.notify("textDocument/didChange", serde_json::to_value(params)?)
353 .await?;
354 } else {
355 self.file_versions
356 .write()
357 .await
358 .insert(path.to_path_buf(), 0);
359 self.diagnostics.write().await.remove(path);
360
361 let params = DidOpenTextDocumentParams {
362 text_document: TextDocumentItem {
363 uri,
364 language_id: language_id.to_string(),
365 version: 0,
366 text: content.to_string(),
367 },
368 };
369
370 self.notify("textDocument/didOpen", serde_json::to_value(params)?)
371 .await?;
372 }
373
374 Ok(())
375 }
376

Callers 6

handle_debug_commandFunction · 0.80
touch_fileMethod · 0.80
get_lsp_diagnostics_implFunction · 0.80

Calls 3

path_to_uriFunction · 0.85
notifyMethod · 0.80
removeMethod · 0.45

Tested by

no test coverage detected