Skip to content

Commit

Permalink
Integrate rename provider
Browse files Browse the repository at this point in the history
  • Loading branch information
pfoerster committed May 1, 2019
1 parent 8fc9505 commit 682e7e1
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 13 deletions.
20 changes: 9 additions & 11 deletions src/feature.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,16 @@ macro_rules! concat_feature {

#[macro_export]
macro_rules! choice_feature {
($request:expr) => {
None
($request:expr, $provider:tt) => {
await!($provider::execute($request))
};
($request:expr, $provider:tt, $($providers:tt),*) => {{
$(
let value = await!($provider::execute($request));
if value.is_some() {
value
} else {
choice_feature!($request, $(providers),*)
}
)+
($request:expr, $provider:tt, $($providers:tt),+) => {{
let value = await!($provider::execute($request));
if value.is_some() {
value
} else {
choice_feature!($request, $($providers),+)
}
}};
}

Expand Down
22 changes: 22 additions & 0 deletions src/rename/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,25 @@ mod bibtex_entry;
mod latex_command;
mod latex_environment;
mod latex_label;

use crate::choice_feature;
use crate::feature::FeatureRequest;
use crate::rename::bibtex_entry::BibtexEntryRenameProvider;
use crate::rename::latex_command::LatexCommandRenameProvider;
use crate::rename::latex_environment::LatexEnvironmentRenameProvider;
use crate::rename::latex_label::LatexLabelRenameProvider;
use lsp_types::{RenameParams, WorkspaceEdit};

pub struct RenameProvider;

impl RenameProvider {
pub async fn execute(request: &FeatureRequest<RenameParams>) -> Option<WorkspaceEdit> {
choice_feature!(
&request,
BibtexEntryRenameProvider,
LatexCommandRenameProvider,
LatexEnvironmentRenameProvider,
LatexLabelRenameProvider
)
}
}
7 changes: 5 additions & 2 deletions src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use crate::feature::FeatureRequest;
use crate::folding::FoldingProvider;
use crate::link::LinkProvider;
use crate::reference::ReferenceProvider;
use crate::rename::RenameProvider;
use crate::request;
use crate::workspace::WorkspaceActor;
use log::*;
Expand Down Expand Up @@ -64,7 +65,7 @@ impl LatexLspServer {
document_formatting_provider: None,
document_range_formatting_provider: None,
document_on_type_formatting_provider: None,
rename_provider: None,
rename_provider: Some(RenameProviderCapability::Simple(true)),
document_link_provider: Some(DocumentLinkOptions {
resolve_provider: Some(false),
}),
Expand Down Expand Up @@ -151,7 +152,9 @@ impl LatexLspServer {
}

pub async fn rename(&self, params: RenameParams) -> LspResult<Option<WorkspaceEdit>> {
Ok(None)
let request = request!(self, params)?;
let edit = await!(RenameProvider::execute(&request));
Ok(edit)
}

pub async fn folding_range(&self, params: FoldingRangeParams) -> LspResult<Vec<FoldingRange>> {
Expand Down

0 comments on commit 682e7e1

Please sign in to comment.