Simplify
This commit is contained in:
parent
e75e30b25f
commit
679c24282d
1 changed files with 29 additions and 46 deletions
|
@ -38,7 +38,7 @@ pub struct LogStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ProjectState {
|
struct ProjectState {
|
||||||
_subscriptions: [gpui::Subscription; 3],
|
_subscriptions: [gpui::Subscription; 2],
|
||||||
}
|
}
|
||||||
|
|
||||||
trait Message: AsRef<str> {
|
trait Message: AsRef<str> {
|
||||||
|
@ -259,13 +259,13 @@ impl LogStore {
|
||||||
|
|
||||||
let copilot_subscription = Copilot::global(cx).map(|copilot| {
|
let copilot_subscription = Copilot::global(cx).map(|copilot| {
|
||||||
let copilot = &copilot;
|
let copilot = &copilot;
|
||||||
cx.subscribe(copilot, |this, copilot, edit_prediction_event, cx| {
|
cx.subscribe(copilot, |log_store, copilot, edit_prediction_event, cx| {
|
||||||
if let copilot::Event::CopilotLanguageServerStarted = edit_prediction_event
|
if let copilot::Event::CopilotLanguageServerStarted = edit_prediction_event
|
||||||
&& let Some(server) = copilot.read(cx).language_server()
|
&& let Some(server) = copilot.read(cx).language_server()
|
||||||
{
|
{
|
||||||
let server_id = server.server_id();
|
let server_id = server.server_id();
|
||||||
let weak_this = cx.weak_entity();
|
let weak_this = cx.weak_entity();
|
||||||
this.copilot_log_subscription =
|
log_store.copilot_log_subscription =
|
||||||
Some(server.on_notification::<copilot::request::LogMessage, _>(
|
Some(server.on_notification::<copilot::request::LogMessage, _>(
|
||||||
move |params, cx| {
|
move |params, cx| {
|
||||||
weak_this
|
weak_this
|
||||||
|
@ -280,8 +280,9 @@ impl LogStore {
|
||||||
.ok();
|
.ok();
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|
||||||
let name = LanguageServerName::new_static("copilot");
|
let name = LanguageServerName::new_static("copilot");
|
||||||
this.add_language_server(
|
log_store.add_language_server(
|
||||||
LanguageServerKind::Global,
|
LanguageServerKind::Global,
|
||||||
server.server_id(),
|
server.server_id(),
|
||||||
Some(name),
|
Some(name),
|
||||||
|
@ -293,7 +294,7 @@ impl LogStore {
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
let this = Self {
|
let log_store = Self {
|
||||||
copilot_log_subscription: None,
|
copilot_log_subscription: None,
|
||||||
_copilot_subscription: copilot_subscription,
|
_copilot_subscription: copilot_subscription,
|
||||||
projects: HashMap::default(),
|
projects: HashMap::default(),
|
||||||
|
@ -302,9 +303,9 @@ impl LogStore {
|
||||||
io_tx,
|
io_tx,
|
||||||
};
|
};
|
||||||
|
|
||||||
cx.spawn(async move |this, cx| {
|
cx.spawn(async move |log_store, cx| {
|
||||||
while let Some((server_id, io_kind, message)) = io_rx.next().await {
|
while let Some((server_id, io_kind, message)) = io_rx.next().await {
|
||||||
if let Some(log_store) = this.upgrade() {
|
if let Some(log_store) = log_store.upgrade() {
|
||||||
log_store.update(cx, |log_store, cx| {
|
log_store.update(cx, |log_store, cx| {
|
||||||
log_store.on_io(server_id, io_kind, &message, cx);
|
log_store.on_io(server_id, io_kind, &message, cx);
|
||||||
})?;
|
})?;
|
||||||
|
@ -313,17 +314,11 @@ impl LogStore {
|
||||||
anyhow::Ok(())
|
anyhow::Ok(())
|
||||||
})
|
})
|
||||||
.detach_and_log_err(cx);
|
.detach_and_log_err(cx);
|
||||||
this
|
log_store
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_project(&mut self, project: &Entity<Project>, cx: &mut Context<Self>) {
|
pub fn add_project(&mut self, project: &Entity<Project>, cx: &mut Context<Self>) {
|
||||||
log::error!(
|
|
||||||
"?????????????? ssh: {} local: {}",
|
|
||||||
project.read(cx).is_via_ssh(),
|
|
||||||
project.read(cx).is_local()
|
|
||||||
);
|
|
||||||
let weak_project = project.downgrade();
|
let weak_project = project.downgrade();
|
||||||
let subscription_weak_project = weak_project.clone();
|
|
||||||
self.projects.insert(
|
self.projects.insert(
|
||||||
project.downgrade(),
|
project.downgrade(),
|
||||||
ProjectState {
|
ProjectState {
|
||||||
|
@ -395,29 +390,6 @@ impl LogStore {
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
cx.subscribe(&cx.entity(), move |_, _, e, cx| {
|
|
||||||
log::error!("||??????????????????????????????????????||||||@@@@|| {e:?}");
|
|
||||||
match e {
|
|
||||||
Event::NewServerLogEntry { id, kind, text } => {
|
|
||||||
subscription_weak_project
|
|
||||||
.update(cx, |project, cx| {
|
|
||||||
if let Some((client, project_id)) =
|
|
||||||
project.lsp_store().read(cx).downstream_client()
|
|
||||||
{
|
|
||||||
client
|
|
||||||
.send(proto::LanguageServerLog {
|
|
||||||
project_id,
|
|
||||||
language_server_id: id.to_proto(),
|
|
||||||
message: text.clone(),
|
|
||||||
log_type: Some(kind.to_proto()),
|
|
||||||
})
|
|
||||||
.log_err();
|
|
||||||
};
|
|
||||||
})
|
|
||||||
.ok();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -855,11 +827,28 @@ impl LspLogView {
|
||||||
|
|
||||||
cx.notify();
|
cx.notify();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let weak_lsp_store = project.read(cx).lsp_store().downgrade();
|
||||||
let events_subscriptions =
|
let events_subscriptions =
|
||||||
cx.subscribe_in(&log_store, window, move |log_view, _, e, window, cx| {
|
cx.subscribe_in(&log_store, window, move |log_view, _, e, window, cx| {
|
||||||
log::error!("||||||||@@@@|| {e:?}");
|
log::error!("||||||||@@@@|| {e:?}");
|
||||||
match e {
|
match e {
|
||||||
Event::NewServerLogEntry { id, kind, text } => {
|
Event::NewServerLogEntry { id, kind, text } => {
|
||||||
|
weak_lsp_store
|
||||||
|
.update(cx, |lsp_store, _| {
|
||||||
|
if let Some((client, project_id)) = lsp_store.downstream_client() {
|
||||||
|
client
|
||||||
|
.send(proto::LanguageServerLog {
|
||||||
|
project_id,
|
||||||
|
language_server_id: id.to_proto(),
|
||||||
|
message: text.clone(),
|
||||||
|
log_type: Some(kind.to_proto()),
|
||||||
|
})
|
||||||
|
.log_err();
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.ok();
|
||||||
|
|
||||||
if log_view.current_server_id == Some(*id)
|
if log_view.current_server_id == Some(*id)
|
||||||
&& LogKind::from_server_log_type(kind) == log_view.active_entry_kind
|
&& LogKind::from_server_log_type(kind) == log_view.active_entry_kind
|
||||||
{
|
{
|
||||||
|
@ -904,7 +893,7 @@ impl LspLogView {
|
||||||
window.focus(&log_view.editor.focus_handle(cx));
|
window.focus(&log_view.editor.focus_handle(cx));
|
||||||
});
|
});
|
||||||
|
|
||||||
let mut this = Self {
|
let mut lsp_log_view = Self {
|
||||||
focus_handle,
|
focus_handle,
|
||||||
editor,
|
editor,
|
||||||
editor_subscriptions,
|
editor_subscriptions,
|
||||||
|
@ -919,9 +908,9 @@ impl LspLogView {
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
if let Some(server_id) = server_id {
|
if let Some(server_id) = server_id {
|
||||||
this.show_logs_for_server(server_id, window, cx);
|
lsp_log_view.show_logs_for_server(server_id, window, cx);
|
||||||
}
|
}
|
||||||
this
|
lsp_log_view
|
||||||
}
|
}
|
||||||
|
|
||||||
fn editor_for_logs(
|
fn editor_for_logs(
|
||||||
|
@ -1849,12 +1838,6 @@ const SERVER_LOGS: &str = "Server Logs";
|
||||||
const SERVER_TRACE: &str = "Server Trace";
|
const SERVER_TRACE: &str = "Server Trace";
|
||||||
const SERVER_INFO: &str = "Server Info";
|
const SERVER_INFO: &str = "Server Info";
|
||||||
|
|
||||||
impl Default for LspLogToolbarItemView {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self::new()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl LspLogToolbarItemView {
|
impl LspLogToolbarItemView {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue