mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 13:51:31 +00:00
Changes from review
This commit is contained in:
parent
8c32bdea36
commit
a14194b428
6 changed files with 14 additions and 47 deletions
|
@ -34,7 +34,7 @@ use crate::{
|
|||
config::RustfmtConfig,
|
||||
from_json, from_proto,
|
||||
global_state::{GlobalState, GlobalStateSnapshot},
|
||||
lsp_ext::{self, DocumentationLink, InlayHint, InlayHintsParams, OpenDocsParams},
|
||||
lsp_ext::{self, InlayHint, InlayHintsParams},
|
||||
to_proto, LspError, Result,
|
||||
};
|
||||
|
||||
|
@ -1312,15 +1312,14 @@ pub(crate) fn handle_semantic_tokens_range(
|
|||
|
||||
pub(crate) fn handle_open_docs(
|
||||
snap: GlobalStateSnapshot,
|
||||
params: OpenDocsParams,
|
||||
) -> Result<DocumentationLink> {
|
||||
params: lsp_types::TextDocumentPositionParams,
|
||||
) -> Result<Option<lsp_types::Url>> {
|
||||
let _p = profile::span("handle_open_docs");
|
||||
let position = from_proto::file_position(&snap, params.position)?;
|
||||
let position = from_proto::file_position(&snap, params)?;
|
||||
|
||||
// FIXME: Propogate or ignore this error instead of panicking.
|
||||
let remote = snap.analysis.get_doc_url(position)?.unwrap();
|
||||
let remote = snap.analysis.external_docs(position)?;
|
||||
|
||||
Ok(DocumentationLink { remote })
|
||||
Ok(remote.and_then(|remote| Url::parse(&remote).ok()))
|
||||
}
|
||||
|
||||
fn implementation_title(count: usize) -> String {
|
||||
|
|
|
@ -348,30 +348,10 @@ pub struct CommandLink {
|
|||
pub tooltip: Option<String>,
|
||||
}
|
||||
|
||||
pub enum OpenDocs {}
|
||||
pub enum ExternalDocs {}
|
||||
|
||||
impl Request for OpenDocs {
|
||||
type Params = OpenDocsParams;
|
||||
type Result = DocumentationLink;
|
||||
const METHOD: &'static str = "rust-analyzer/openDocs";
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct OpenDocsParams {
|
||||
// TODO: I don't know the difference between these two methods of passing position.
|
||||
#[serde(flatten)]
|
||||
pub position: lsp_types::TextDocumentPositionParams,
|
||||
// pub textDocument: lsp_types::TextDocumentIdentifier,
|
||||
// pub position: lsp_types::Position,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct DocumentationLink {
|
||||
pub remote: String, // TODO: Better API?
|
||||
// #[serde(skip_serializing_if = "Option::is_none")]
|
||||
// pub remote: Option<String>,
|
||||
// #[serde(skip_serializing_if = "Option::is_none")]
|
||||
// pub local: Option<String>
|
||||
impl Request for ExternalDocs {
|
||||
type Params = lsp_types::TextDocumentPositionParams;
|
||||
type Result = Option<lsp_types::Url>;
|
||||
const METHOD: &'static str = "experimental/externalDocs";
|
||||
}
|
||||
|
|
|
@ -384,7 +384,7 @@ impl GlobalState {
|
|||
.on::<lsp_ext::CodeActionRequest>(handlers::handle_code_action)?
|
||||
.on::<lsp_ext::ResolveCodeActionRequest>(handlers::handle_resolve_code_action)?
|
||||
.on::<lsp_ext::HoverRequest>(handlers::handle_hover)?
|
||||
.on::<lsp_ext::OpenDocs>(handlers::handle_open_docs)?
|
||||
.on::<lsp_ext::ExternalDocs>(handlers::handle_open_docs)?
|
||||
.on::<lsp_types::request::OnTypeFormatting>(handlers::handle_on_type_formatting)?
|
||||
.on::<lsp_types::request::DocumentSymbolRequest>(handlers::handle_document_symbol)?
|
||||
.on::<lsp_types::request::WorkspaceSymbol>(handlers::handle_workspace_symbol)?
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue