diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index a4caccbe63..99a29b43d2 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -582,9 +582,6 @@ impl Config { pub fn code_action_group(&self) -> bool { self.experimental("codeActionGroup") } - pub fn experimental_hover_actions(&self) -> bool { - self.experimental("hoverActions") - } pub fn server_status_notification(&self) -> bool { self.experimental("serverStatusNotification") } @@ -790,13 +787,13 @@ impl Config { } } pub fn hover_actions(&self) -> HoverActionsConfig { + let enable = self.experimental("hoverActions") && self.data.hoverActions_enable; HoverActionsConfig { - implementations: self.data.hoverActions_enable - && self.data.hoverActions_implementations, - references: self.data.hoverActions_enable && self.data.hoverActions_references, - run: self.data.hoverActions_enable && self.data.hoverActions_run, - debug: self.data.hoverActions_enable && self.data.hoverActions_debug, - goto_type_def: self.data.hoverActions_enable && self.data.hoverActions_gotoTypeDef, + implementations: enable && self.data.hoverActions_implementations, + references: enable && self.data.hoverActions_references, + run: enable && self.data.hoverActions_run, + debug: enable && self.data.hoverActions_debug, + goto_type_def: enable && self.data.hoverActions_gotoTypeDef, } } pub fn highlighting_strings(&self) -> bool { diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 52b557f156..129b35999d 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -882,7 +882,11 @@ pub(crate) fn handle_hover( contents: HoverContents::Markup(to_proto::markup_content(info.info.markup)), range: Some(range), }, - actions: prepare_hover_actions(&snap, &info.info.actions), + actions: if snap.config.hover_actions().none() { + Vec::new() + } else { + prepare_hover_actions(&snap, &info.info.actions) + }, }; Ok(Some(hover)) @@ -1594,10 +1598,6 @@ fn prepare_hover_actions( snap: &GlobalStateSnapshot, actions: &[HoverAction], ) -> Vec { - if snap.config.hover_actions().none() || !snap.config.experimental_hover_actions() { - return Vec::new(); - } - actions .iter() .filter_map(|it| match it {