Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'src/gotolist.rs')
-rw-r--r--src/gotolist.rs36
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,