Only show ssh logs when toggled (#43445)
Same as in collab projects. Release Notes: - N/A
This commit is contained in:
@@ -344,22 +344,7 @@ impl LogStore {
|
||||
enabled,
|
||||
toggled_log_kind,
|
||||
} => {
|
||||
if let Some(server_state) =
|
||||
log_store.get_language_server_state(*server_id)
|
||||
{
|
||||
if *enabled {
|
||||
server_state.toggled_log_kind = Some(*toggled_log_kind);
|
||||
} else {
|
||||
server_state.toggled_log_kind = None;
|
||||
}
|
||||
}
|
||||
if LogKind::Rpc == *toggled_log_kind {
|
||||
if *enabled {
|
||||
log_store.enable_rpc_trace_for_language_server(*server_id);
|
||||
} else {
|
||||
log_store.disable_rpc_trace_for_language_server(*server_id);
|
||||
}
|
||||
}
|
||||
log_store.toggle_lsp_logs(*server_id, *enabled, *toggled_log_kind);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
@@ -676,7 +661,6 @@ impl LogStore {
|
||||
}
|
||||
|
||||
fn emit_event(&mut self, e: Event, cx: &mut Context<Self>) {
|
||||
let on_headless_host = self.on_headless_host;
|
||||
match &e {
|
||||
Event::NewServerLogEntry { id, kind, text } => {
|
||||
if let Some(state) = self.get_language_server_state(*id) {
|
||||
@@ -690,9 +674,7 @@ impl LogStore {
|
||||
}
|
||||
.and_then(|lsp_store| lsp_store.read(cx).downstream_client());
|
||||
if let Some((client, project_id)) = downstream_client {
|
||||
if on_headless_host
|
||||
|| Some(LogKind::from_server_log_type(kind)) == state.toggled_log_kind
|
||||
{
|
||||
if Some(LogKind::from_server_log_type(kind)) == state.toggled_log_kind {
|
||||
client
|
||||
.send(proto::LanguageServerLog {
|
||||
project_id,
|
||||
@@ -709,4 +691,26 @@ impl LogStore {
|
||||
|
||||
cx.emit(e);
|
||||
}
|
||||
|
||||
pub fn toggle_lsp_logs(
|
||||
&mut self,
|
||||
server_id: LanguageServerId,
|
||||
enabled: bool,
|
||||
toggled_log_kind: LogKind,
|
||||
) {
|
||||
if let Some(server_state) = self.get_language_server_state(server_id) {
|
||||
if enabled {
|
||||
server_state.toggled_log_kind = Some(toggled_log_kind);
|
||||
} else {
|
||||
server_state.toggled_log_kind = None;
|
||||
}
|
||||
}
|
||||
if LogKind::Rpc == toggled_log_kind {
|
||||
if enabled {
|
||||
self.enable_rpc_trace_for_language_server(server_id);
|
||||
} else {
|
||||
self.disable_rpc_trace_for_language_server(server_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ use project::{
|
||||
debugger::{breakpoint_store::BreakpointStore, dap_store::DapStore},
|
||||
git_store::GitStore,
|
||||
image_store::ImageId,
|
||||
lsp_store::log_store::{self, GlobalLogStore, LanguageServerKind},
|
||||
lsp_store::log_store::{self, GlobalLogStore, LanguageServerKind, LogKind},
|
||||
project_settings::SettingsObserver,
|
||||
search::SearchQuery,
|
||||
task_store::TaskStore,
|
||||
@@ -623,26 +623,28 @@ impl HeadlessProject {
|
||||
async fn handle_toggle_lsp_logs(
|
||||
_: Entity<Self>,
|
||||
envelope: TypedEnvelope<proto::ToggleLspLogs>,
|
||||
mut cx: AsyncApp,
|
||||
cx: AsyncApp,
|
||||
) -> Result<()> {
|
||||
let server_id = LanguageServerId::from_proto(envelope.payload.server_id);
|
||||
let lsp_logs = cx
|
||||
.update(|cx| {
|
||||
cx.try_global::<GlobalLogStore>()
|
||||
.map(|lsp_logs| lsp_logs.0.clone())
|
||||
})?
|
||||
.context("lsp logs store is missing")?;
|
||||
cx.update(|cx| {
|
||||
let log_store = cx
|
||||
.try_global::<GlobalLogStore>()
|
||||
.map(|global_log_store| global_log_store.0.clone())
|
||||
.context("lsp logs store is missing")?;
|
||||
let toggled_log_kind =
|
||||
match proto::toggle_lsp_logs::LogType::from_i32(envelope.payload.log_type)
|
||||
.context("invalid log type")?
|
||||
{
|
||||
proto::toggle_lsp_logs::LogType::Log => LogKind::Logs,
|
||||
proto::toggle_lsp_logs::LogType::Trace => LogKind::Trace,
|
||||
proto::toggle_lsp_logs::LogType::Rpc => LogKind::Rpc,
|
||||
};
|
||||
log_store.update(cx, |log_store, _| {
|
||||
log_store.toggle_lsp_logs(server_id, envelope.payload.enabled, toggled_log_kind);
|
||||
});
|
||||
anyhow::Ok(())
|
||||
})??;
|
||||
|
||||
lsp_logs.update(&mut cx, |lsp_logs, _| {
|
||||
// RPC logs are very noisy and we need to toggle it on the headless server too.
|
||||
// The rest of the logs for the ssh project are very important to have toggled always,
|
||||
// to e.g. send language server error logs to the client before anything is toggled.
|
||||
if envelope.payload.enabled {
|
||||
lsp_logs.enable_rpc_trace_for_language_server(server_id);
|
||||
} else {
|
||||
lsp_logs.disable_rpc_trace_for_language_server(server_id);
|
||||
}
|
||||
})?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user