use navigation target in API

This commit is contained in:
Aleksey Kladov 2019-01-02 17:09:39 +03:00
parent d25c89f760
commit 830abe0c1b
4 changed files with 44 additions and 26 deletions

View file

@ -2,7 +2,7 @@ use languageserver_types::{
self, Location, Position, Range, SymbolKind, TextDocumentEdit, TextDocumentIdentifier,
TextDocumentItem, TextDocumentPositionParams, Url, VersionedTextDocumentIdentifier, InsertTextFormat,
};
use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileEdit, FilePosition,FileRange, CompletionItem, CompletionItemKind, InsertText};
use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileEdit, FilePosition,FileRange, CompletionItem, CompletionItemKind, InsertText, NavigationTarget};
use ra_editor::{LineCol, LineIndex, translate_offset_with_edit};
use ra_text_edit::{AtomTextEdit, TextEdit};
use ra_syntax::{SyntaxKind, TextRange, TextUnit};
@ -322,6 +322,15 @@ impl TryConvWith for FileSystemEdit {
}
}
impl TryConvWith for &NavigationTarget {
type Ctx = ServerWorld;
type Output = Location;
fn try_conv_with(self, world: &ServerWorld) -> Result<Location> {
let line_index = world.analysis().file_line_index(self.file_id());
to_location(self.file_id(), self.range(), &world, &line_index)
}
}
pub fn to_location(
file_id: FileId,
range: TextRange,