From 0192c116f78b3a81ef15587eecac29a2676ae00c Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 5 Nov 2018 14:57:41 +0300 Subject: Use FilePosition everywhere --- crates/ra_lsp_server/src/conv.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'crates/ra_lsp_server/src/conv.rs') diff --git a/crates/ra_lsp_server/src/conv.rs b/crates/ra_lsp_server/src/conv.rs index 84ffac2da..fa04f4b00 100644 --- a/crates/ra_lsp_server/src/conv.rs +++ b/crates/ra_lsp_server/src/conv.rs @@ -2,7 +2,7 @@ use languageserver_types::{ Location, Position, Range, SymbolKind, TextDocumentEdit, TextDocumentIdentifier, TextDocumentItem, TextDocumentPositionParams, TextEdit, Url, VersionedTextDocumentIdentifier, }; -use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileEdit}; +use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileEdit, FilePosition}; use ra_editor::{AtomEdit, Edit, LineCol, LineIndex}; use ra_syntax::{SyntaxKind, TextRange, TextUnit}; @@ -165,6 +165,17 @@ impl<'a> TryConvWith for &'a TextDocumentIdentifier { } } +impl<'a> TryConvWith for &'a TextDocumentPositionParams { + type Ctx = ServerWorld; + type Output = FilePosition; + fn try_conv_with(self, world: &ServerWorld) -> Result { + let file_id = self.text_document.try_conv_with(world)?; + let line_index = world.analysis().file_line_index(file_id); + let offset = self.position.conv_with(&line_index); + Ok(FilePosition { file_id, offset }) + } +} + impl TryConvWith for Vec { type Ctx = ::Ctx; type Output = Vec<::Output>; -- cgit v1.2.3