Better event naming

This commit is contained in:
Aleksey Kladov 2020-06-25 14:13:17 +02:00
parent 4ec0a2c454
commit 9cdeb1291e

View file

@ -7,7 +7,7 @@ use std::{
}; };
use crossbeam_channel::{never, select, unbounded, RecvError, Sender}; use crossbeam_channel::{never, select, unbounded, RecvError, Sender};
use lsp_server::{Connection, ErrorCode, Message, Notification, Request, RequestId, Response}; use lsp_server::{Connection, ErrorCode, Notification, Request, RequestId, Response};
use lsp_types::{request::Request as _, NumberOrString}; use lsp_types::{request::Request as _, NumberOrString};
use ra_db::VfsPath; use ra_db::VfsPath;
use ra_ide::{Canceled, FileId}; use ra_ide::{Canceled, FileId};
@ -128,7 +128,7 @@ pub fn main_loop(config: Config, connection: Connection) -> Result<()> {
log::trace!("selecting"); log::trace!("selecting");
let event = select! { let event = select! {
recv(&connection.receiver) -> msg => match msg { recv(&connection.receiver) -> msg => match msg {
Ok(msg) => Event::Msg(msg), Ok(msg) => Event::Lsp(msg),
Err(RecvError) => return Err("client exited without shutdown".into()), Err(RecvError) => return Err("client exited without shutdown".into()),
}, },
recv(task_receiver) -> task => Event::Task(task.unwrap()), recv(task_receiver) -> task => Event::Task(task.unwrap()),
@ -137,11 +137,11 @@ pub fn main_loop(config: Config, connection: Connection) -> Result<()> {
Err(RecvError) => return Err("vfs died".into()), Err(RecvError) => return Err("vfs died".into()),
}, },
recv(global_state.flycheck.as_ref().map_or(&never(), |it| &it.1)) -> task => match task { recv(global_state.flycheck.as_ref().map_or(&never(), |it| &it.1)) -> task => match task {
Ok(task) => Event::CheckWatcher(task), Ok(task) => Event::Flycheck(task),
Err(RecvError) => return Err("check watcher died".into()), Err(RecvError) => return Err("check watcher died".into()),
}, },
}; };
if let Event::Msg(Message::Request(req)) = &event { if let Event::Lsp(lsp_server::Message::Request(req)) = &event {
if connection.handle_shutdown(&req)? { if connection.handle_shutdown(&req)? {
break; break;
}; };
@ -173,10 +173,10 @@ enum Task {
} }
enum Event { enum Event {
Msg(Message), Lsp(lsp_server::Message),
Task(Task), Task(Task),
Vfs(vfs::loader::Message), Vfs(vfs::loader::Message),
CheckWatcher(flycheck::Message), Flycheck(flycheck::Message),
} }
impl fmt::Debug for Event { impl fmt::Debug for Event {
@ -186,7 +186,7 @@ impl fmt::Debug for Event {
}; };
match self { match self {
Event::Msg(Message::Notification(not)) => { Event::Lsp(lsp_server::Message::Notification(not)) => {
if notification_is::<lsp_types::notification::DidOpenTextDocument>(not) if notification_is::<lsp_types::notification::DidOpenTextDocument>(not)
|| notification_is::<lsp_types::notification::DidChangeTextDocument>(not) || notification_is::<lsp_types::notification::DidChangeTextDocument>(not)
{ {
@ -203,10 +203,10 @@ impl fmt::Debug for Event {
_ => (), _ => (),
} }
match self { match self {
Event::Msg(it) => fmt::Debug::fmt(it, f), Event::Lsp(it) => fmt::Debug::fmt(it, f),
Event::Task(it) => fmt::Debug::fmt(it, f), Event::Task(it) => fmt::Debug::fmt(it, f),
Event::Vfs(it) => fmt::Debug::fmt(it, f), Event::Vfs(it) => fmt::Debug::fmt(it, f),
Event::CheckWatcher(it) => fmt::Debug::fmt(it, f), Event::Flycheck(it) => fmt::Debug::fmt(it, f),
} }
} }
} }
@ -269,17 +269,17 @@ fn loop_turn(
) )
} }
}, },
Event::CheckWatcher(task) => { Event::Flycheck(task) => {
on_check_task(task, global_state, task_sender, &connection.sender)? on_check_task(task, global_state, task_sender, &connection.sender)?
} }
Event::Msg(msg) => match msg { Event::Lsp(msg) => match msg {
Message::Request(req) => { lsp_server::Message::Request(req) => {
on_request(global_state, pool, task_sender, &connection.sender, loop_start, req)? on_request(global_state, pool, task_sender, &connection.sender, loop_start, req)?
} }
Message::Notification(not) => { lsp_server::Message::Notification(not) => {
on_notification(&connection.sender, global_state, not)?; on_notification(&connection.sender, global_state, not)?;
} }
Message::Response(resp) => { lsp_server::Message::Response(resp) => {
let handler = global_state.req_queue.outgoing.complete(resp.id.clone()); let handler = global_state.req_queue.outgoing.complete(resp.id.clone());
handler(global_state, resp) handler(global_state, resp)
} }
@ -329,7 +329,7 @@ fn loop_turn(
Ok(()) Ok(())
} }
fn on_task(task: Task, msg_sender: &Sender<Message>, global_state: &mut GlobalState) { fn on_task(task: Task, msg_sender: &Sender<lsp_server::Message>, global_state: &mut GlobalState) {
match task { match task {
Task::Respond(response) => { Task::Respond(response) => {
if let Some((method, start)) = if let Some((method, start)) =
@ -353,7 +353,7 @@ fn on_request(
global_state: &mut GlobalState, global_state: &mut GlobalState,
pool: &ThreadPool, pool: &ThreadPool,
task_sender: &Sender<Task>, task_sender: &Sender<Task>,
msg_sender: &Sender<Message>, msg_sender: &Sender<lsp_server::Message>,
request_received: Instant, request_received: Instant,
req: Request, req: Request,
) -> Result<()> { ) -> Result<()> {
@ -415,7 +415,7 @@ fn on_request(
} }
fn on_notification( fn on_notification(
msg_sender: &Sender<Message>, msg_sender: &Sender<lsp_server::Message>,
global_state: &mut GlobalState, global_state: &mut GlobalState,
not: Notification, not: Notification,
) -> Result<()> { ) -> Result<()> {
@ -553,7 +553,7 @@ fn on_check_task(
task: flycheck::Message, task: flycheck::Message,
global_state: &mut GlobalState, global_state: &mut GlobalState,
task_sender: &Sender<Task>, task_sender: &Sender<Task>,
msg_sender: &Sender<Message>, msg_sender: &Sender<lsp_server::Message>,
) -> Result<()> { ) -> Result<()> {
match task { match task {
flycheck::Message::ClearDiagnostics => { flycheck::Message::ClearDiagnostics => {
@ -598,7 +598,11 @@ fn on_check_task(
Ok(()) Ok(())
} }
fn on_diagnostic_task(task: DiagnosticTask, msg_sender: &Sender<Message>, state: &mut GlobalState) { fn on_diagnostic_task(
task: DiagnosticTask,
msg_sender: &Sender<lsp_server::Message>,
state: &mut GlobalState,
) {
let subscriptions = state.diagnostics.handle_task(task); let subscriptions = state.diagnostics.handle_task(task);
for file_id in subscriptions { for file_id in subscriptions {
@ -623,7 +627,7 @@ fn percentage(done: usize, total: usize) -> f64 {
fn report_progress( fn report_progress(
global_state: &mut GlobalState, global_state: &mut GlobalState,
sender: &Sender<Message>, sender: &Sender<lsp_server::Message>,
title: &str, title: &str,
state: Progress, state: Progress,
message: Option<String>, message: Option<String>,
@ -672,7 +676,7 @@ struct PoolDispatcher<'a> {
req: Option<Request>, req: Option<Request>,
pool: &'a ThreadPool, pool: &'a ThreadPool,
global_state: &'a mut GlobalState, global_state: &'a mut GlobalState,
msg_sender: &'a Sender<Message>, msg_sender: &'a Sender<lsp_server::Message>,
task_sender: &'a Sender<Task>, task_sender: &'a Sender<Task>,
request_received: Instant, request_received: Instant,
} }