From 8a5f74a24f726a839f3a0e154cfadec23040e14c Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 11 Jan 2019 16:01:48 +0300 Subject: use location link in goto def --- crates/ra_lsp_server/src/main_loop/handlers.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'crates/ra_lsp_server/src/main_loop') diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index e3bf55ae7..aad9d6568 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs @@ -9,7 +9,7 @@ use languageserver_types::{ SignatureInformation, SymbolInformation, TextDocumentIdentifier, TextEdit, WorkspaceEdit, }; use ra_ide_api::{ - FileId, FilePosition, FileRange, FoldKind, Query, RunnableKind, Severity, SourceChange, RangeInfo, + FileId, FilePosition, FileRange, FoldKind, Query, RunnableKind, Severity, RangeInfo, }; use ra_syntax::{TextUnit, AstNode}; use rustc_hash::FxHashMap; @@ -17,7 +17,7 @@ use serde_json::to_value; use std::io::Write; use crate::{ - conv::{to_location, Conv, ConvWith, MapConvWith, TryConvWith}, + conv::{to_location, to_location_link, Conv, ConvWith, MapConvWith, TryConvWith}, project_model::TargetKind, req::{self, Decoration}, server_world::ServerWorld, @@ -208,6 +208,7 @@ pub fn handle_goto_definition( params: req::TextDocumentPositionParams, ) -> Result> { let position = params.try_conv_with(&world)?; + let line_index = world.analysis().file_line_index(position.file_id); let nav_info = match world.analysis().goto_definition(position)? { None => return Ok(None), Some(it) => it, @@ -217,9 +218,9 @@ pub fn handle_goto_definition( .info .into_iter() .map(|nav| RangeInfo::new(nav_range, nav)) - .map(|nav| nav.try_conv_with(&world)) + .map(|nav| to_location_link(&nav, &world, &line_index)) .collect::>>()?; - Ok(Some(req::GotoDefinitionResponse::Array(res))) + Ok(Some(req::GotoDefinitionResponse::Link(res))) } pub fn handle_parent_module( -- cgit v1.2.3