Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'src/gotolist.rs')
| -rw-r--r-- | src/gotolist.rs | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/src/gotolist.rs b/src/gotolist.rs index bed2abf..1999446 100644 --- a/src/gotolist.rs +++ b/src/gotolist.rs @@ -4,10 +4,10 @@ use std::path::Path; use dsb::Cell; use dsb::cell::Style; -use lsp_types::request::GotoImplementation; use lsp_types::{ - CallHierarchyIncomingCall, CallHierarchyOutgoingCall, Location, - LocationLink, Range, + CallHierarchyIncomingCall, CallHierarchyOutgoingCall, Definition, + DefinitionResponse, ImplementationRequest, Location, LocationLink, + LocationUriOnly, Range, WorkspaceSymbolLocation, }; use crate::FG; @@ -20,8 +20,8 @@ pub type GoToList = GenericMenu<GTL>; pub enum GTL {} #[derive(Debug)] pub enum O { - Impl(RqS<(), GotoImplementation>), - References(RqS<(), lsp_types::request::References>), + Impl(RqS<(), ImplementationRequest>), + References(RqS<(), lsp_types::ReferencesRequest>), Incoming( Rq<(), Vec<CallHierarchyIncomingCall>, (), rootcause::Report>, ), @@ -118,6 +118,22 @@ impl<'a> Hash for GoTo<'a> { self.path.hash(state); } } +impl From<&LocationUriOnly> for GoTo<'static> { + fn from(LocationUriOnly { uri }: &LocationUriOnly) -> Self { + Self { + path: Cow::Owned(uri.to_file_path().unwrap()), + at: At::P(0), + } + } +} +impl<'a> From<&'a WorkspaceSymbolLocation> for GoTo<'static> { + fn from(value: &'a WorkspaceSymbolLocation) -> Self { + match value { + WorkspaceSymbolLocation::Location(location) => location.into(), + WorkspaceSymbolLocation::LocationUriOnly(x) => x.into(), + } + } +} impl From<Location> for GoTo<'static> { fn from(Location { uri, range }: Location) -> Self { Self { @@ -135,6 +151,16 @@ impl From<&Location> for GoTo<'static> { } } +impl From<&Definition> for GoTo<'static> { + fn from(x: &Definition) -> Self { + match x { + Definition::LocationList([x]) | Definition::Location(x) => + x.into(), + _ => panic!(), + } + } +} + impl From<&LocationLink> for GoTo<'static> { fn from( LocationLink { target_uri, target_range, .. }: &LocationLink, |