editor: Revert flattening of code actions in mouse context menu (#28988)
In light of making context not move dynamically, reverting back these changes. - Doing it async will lead to a loading state, which moves the context menu. - Doing it sync introduces noticeable lag in opening the context menu. Future idea is to introduce fixed code actions like refactor, rewrite, etc depending on code action kind [(see more)](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#codeActionKind) which will use submenus. Release Notes: - N/A
This commit is contained in:
parent
7e928dd615
commit
ba588161d9
5 changed files with 170 additions and 393 deletions
|
@ -775,7 +775,7 @@ pub struct AvailableCodeAction {
|
|||
pub provider: Rc<dyn CodeActionProvider>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Default)]
|
||||
#[derive(Clone)]
|
||||
pub struct CodeActionContents {
|
||||
pub tasks: Option<Rc<ResolvedTasks>>,
|
||||
pub actions: Option<Rc<[AvailableCodeAction]>>,
|
||||
|
@ -791,7 +791,7 @@ impl CodeActionContents {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn is_empty(&self) -> bool {
|
||||
fn is_empty(&self) -> bool {
|
||||
match (&self.tasks, &self.actions) {
|
||||
(Some(tasks), Some(actions)) => actions.is_empty() && tasks.templates.is_empty(),
|
||||
(Some(tasks), None) => tasks.templates.is_empty(),
|
||||
|
@ -800,7 +800,7 @@ impl CodeActionContents {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn iter(&self) -> impl Iterator<Item = CodeActionsItem> + '_ {
|
||||
fn iter(&self) -> impl Iterator<Item = CodeActionsItem> + '_ {
|
||||
self.tasks
|
||||
.iter()
|
||||
.flat_map(|tasks| {
|
||||
|
@ -868,14 +868,14 @@ pub enum CodeActionsItem {
|
|||
}
|
||||
|
||||
impl CodeActionsItem {
|
||||
pub fn as_task(&self) -> Option<&ResolvedTask> {
|
||||
fn as_task(&self) -> Option<&ResolvedTask> {
|
||||
let Self::Task(_, task) = self else {
|
||||
return None;
|
||||
};
|
||||
Some(task)
|
||||
}
|
||||
|
||||
pub fn as_code_action(&self) -> Option<&CodeAction> {
|
||||
fn as_code_action(&self) -> Option<&CodeAction> {
|
||||
let Self::CodeAction { action, .. } = self else {
|
||||
return None;
|
||||
};
|
||||
|
@ -1015,7 +1015,6 @@ impl CodeActionsMenu {
|
|||
if let Some(task) = editor.confirm_code_action(
|
||||
&ConfirmCodeAction {
|
||||
item_ix: Some(item_ix),
|
||||
from_mouse_context_menu: false,
|
||||
},
|
||||
window,
|
||||
cx,
|
||||
|
@ -1041,7 +1040,6 @@ impl CodeActionsMenu {
|
|||
if let Some(task) = editor.confirm_code_action(
|
||||
&ConfirmCodeAction {
|
||||
item_ix: Some(item_ix),
|
||||
from_mouse_context_menu: false,
|
||||
},
|
||||
window,
|
||||
cx,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue