From bb3533675734b02aec9337cad1aee06f1d4a03f8 Mon Sep 17 00:00:00 2001 From: Paul Faria Date: Wed, 10 May 2017 00:39:54 -0400 Subject: [PATCH] Implement hover subcommand for #292 --- src/cmd.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/cmd.rs b/src/cmd.rs index 93992e31d70..071defa9c6c 100644 --- a/src/cmd.rs +++ b/src/cmd.rs @@ -63,6 +63,12 @@ pub fn run() { let col = bits.next().expect("Expected column number"); def(file_name, row, col) } + "hover" => { + let file_name = bits.next().expect("Expected file name"); + let row = bits.next().expect("Expected line number"); + let col = bits.next().expect("Expected column number"); + hover(file_name, row, col) + } "h" | "help" => { help(); continue; @@ -99,6 +105,19 @@ fn def(file_name: &str, row: &str, col: &str) -> ServerMessage { ServerMessage::Request(request) } +fn hover(file_name: &str, row: &str, col: &str) -> ServerMessage { + let params = TextDocumentPositionParams { + text_document: TextDocumentIdentifier::new(url(file_name)), + position: Position::new(u64::from_str(row).expect("Bad line number"), + u64::from_str(col).expect("Bad column number")), + }; + let request = Request { + id: next_id(), + method: Method::Hover(params), + }; + ServerMessage::Request(request) +} + fn shutdown() -> ServerMessage { let request = Request { id: next_id(), @@ -208,4 +227,8 @@ fn help() { println!(" def file_name line_number column_number"); println!(" textDocument/definition"); println!(" used for 'goto def'"); + println!(""); + println!(" hover file_name line_number column_number"); + println!(" textDocument/hover"); + println!(" used for 'hover'"); }