Notify user about LSP errors from editor actions (#23011)
Closes #22976 Release Notes: * Improved visibility of errors from language servers by reporting them in the UI when the user invokes an LSP action.
This commit is contained in:
parent
6bc89eb4b1
commit
65c38f22f9
1 changed files with 23 additions and 17 deletions
|
@ -73,7 +73,7 @@ use ui::{
|
|||
};
|
||||
use unicode_segmentation::UnicodeSegmentation;
|
||||
use util::{RangeExt, ResultExt};
|
||||
use workspace::{item::Item, Workspace};
|
||||
use workspace::{item::Item, notifications::NotifyTaskExt, Workspace};
|
||||
|
||||
struct SelectionLayout {
|
||||
head: DisplayPoint,
|
||||
|
@ -314,32 +314,38 @@ impl EditorElement {
|
|||
register_action(view, cx, Editor::go_to_next_hunk);
|
||||
register_action(view, cx, Editor::go_to_prev_hunk);
|
||||
register_action(view, cx, |editor, a, cx| {
|
||||
editor.go_to_definition(a, cx).detach_and_log_err(cx);
|
||||
editor.go_to_definition(a, cx).detach_and_notify_err(cx);
|
||||
});
|
||||
register_action(view, cx, |editor, a, cx| {
|
||||
editor.go_to_definition_split(a, cx).detach_and_log_err(cx);
|
||||
editor
|
||||
.go_to_definition_split(a, cx)
|
||||
.detach_and_notify_err(cx);
|
||||
});
|
||||
register_action(view, cx, |editor, a, cx| {
|
||||
editor.go_to_declaration(a, cx).detach_and_log_err(cx);
|
||||
editor.go_to_declaration(a, cx).detach_and_notify_err(cx);
|
||||
});
|
||||
register_action(view, cx, |editor, a, cx| {
|
||||
editor.go_to_declaration_split(a, cx).detach_and_log_err(cx);
|
||||
editor
|
||||
.go_to_declaration_split(a, cx)
|
||||
.detach_and_notify_err(cx);
|
||||
});
|
||||
register_action(view, cx, |editor, a, cx| {
|
||||
editor.go_to_implementation(a, cx).detach_and_log_err(cx);
|
||||
editor.go_to_implementation(a, cx).detach_and_notify_err(cx);
|
||||
});
|
||||
register_action(view, cx, |editor, a, cx| {
|
||||
editor
|
||||
.go_to_implementation_split(a, cx)
|
||||
.detach_and_log_err(cx);
|
||||
.detach_and_notify_err(cx);
|
||||
});
|
||||
register_action(view, cx, |editor, a, cx| {
|
||||
editor.go_to_type_definition(a, cx).detach_and_log_err(cx);
|
||||
editor
|
||||
.go_to_type_definition(a, cx)
|
||||
.detach_and_notify_err(cx);
|
||||
});
|
||||
register_action(view, cx, |editor, a, cx| {
|
||||
editor
|
||||
.go_to_type_definition_split(a, cx)
|
||||
.detach_and_log_err(cx);
|
||||
.detach_and_notify_err(cx);
|
||||
});
|
||||
register_action(view, cx, Editor::open_url);
|
||||
register_action(view, cx, Editor::open_selected_filename);
|
||||
|
@ -382,14 +388,14 @@ impl EditorElement {
|
|||
register_action(view, cx, Editor::expand_all_hunk_diffs);
|
||||
register_action(view, cx, |editor, action, cx| {
|
||||
if let Some(task) = editor.format(action, cx) {
|
||||
task.detach_and_log_err(cx);
|
||||
task.detach_and_notify_err(cx);
|
||||
} else {
|
||||
cx.propagate();
|
||||
}
|
||||
});
|
||||
register_action(view, cx, |editor, action, cx| {
|
||||
if let Some(task) = editor.format_selections(action, cx) {
|
||||
task.detach_and_log_err(cx);
|
||||
task.detach_and_notify_err(cx);
|
||||
} else {
|
||||
cx.propagate();
|
||||
}
|
||||
|
@ -399,42 +405,42 @@ impl EditorElement {
|
|||
register_action(view, cx, Editor::show_character_palette);
|
||||
register_action(view, cx, |editor, action, cx| {
|
||||
if let Some(task) = editor.confirm_completion(action, cx) {
|
||||
task.detach_and_log_err(cx);
|
||||
task.detach_and_notify_err(cx);
|
||||
} else {
|
||||
cx.propagate();
|
||||
}
|
||||
});
|
||||
register_action(view, cx, |editor, action, cx| {
|
||||
if let Some(task) = editor.compose_completion(action, cx) {
|
||||
task.detach_and_log_err(cx);
|
||||
task.detach_and_notify_err(cx);
|
||||
} else {
|
||||
cx.propagate();
|
||||
}
|
||||
});
|
||||
register_action(view, cx, |editor, action, cx| {
|
||||
if let Some(task) = editor.confirm_code_action(action, cx) {
|
||||
task.detach_and_log_err(cx);
|
||||
task.detach_and_notify_err(cx);
|
||||
} else {
|
||||
cx.propagate();
|
||||
}
|
||||
});
|
||||
register_action(view, cx, |editor, action, cx| {
|
||||
if let Some(task) = editor.rename(action, cx) {
|
||||
task.detach_and_log_err(cx);
|
||||
task.detach_and_notify_err(cx);
|
||||
} else {
|
||||
cx.propagate();
|
||||
}
|
||||
});
|
||||
register_action(view, cx, |editor, action, cx| {
|
||||
if let Some(task) = editor.confirm_rename(action, cx) {
|
||||
task.detach_and_log_err(cx);
|
||||
task.detach_and_notify_err(cx);
|
||||
} else {
|
||||
cx.propagate();
|
||||
}
|
||||
});
|
||||
register_action(view, cx, |editor, action, cx| {
|
||||
if let Some(task) = editor.find_all_references(action, cx) {
|
||||
task.detach_and_log_err(cx);
|
||||
task.detach_and_notify_err(cx);
|
||||
} else {
|
||||
cx.propagate();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue