summaryrefslogtreecommitdiff
path: root/helix-view
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-09-01 05:49:48 +0000
committerBlaž Hrastnik2021-09-06 06:25:46 +0000
commit184637c55acca49380372ca118f13b3390bcb003 (patch)
tree0d726bccb3121f641e41a0df6aa547e22ed79032 /helix-view
parentc00cf238afe3dbd43327fd74bd8a9ff2dd9c21db (diff)
lsp: refactor format so we stop cloning the language_server
Diffstat (limited to 'helix-view')
-rw-r--r--helix-view/src/document.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index b2c02927..a27be8e6 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -386,21 +386,24 @@ impl Document {
/// If supported, returns the changes that should be applied to this document in order
/// to format it nicely.
pub fn format(&self) -> Option<impl Future<Output = LspFormatting> + 'static> {
- if let Some(language_server) = self.language_server.clone() {
+ if let Some(language_server) = self.language_server() {
let text = self.text.clone();
- let id = self.identifier();
+ let offset_encoding = language_server.offset_encoding();
+ let request = language_server.text_document_formatting(
+ self.identifier(),
+ lsp::FormattingOptions::default(),
+ None,
+ )?;
+
let fut = async move {
- let edits = language_server
- .text_document_formatting(id, lsp::FormattingOptions::default(), None)
- .await
- .unwrap_or_else(|e| {
- log::warn!("LSP formatting failed: {}", e);
- Default::default()
- });
+ let edits = request.await.unwrap_or_else(|e| {
+ log::warn!("LSP formatting failed: {}", e);
+ Default::default()
+ });
LspFormatting {
doc: text,
edits,
- offset_encoding: language_server.offset_encoding(),
+ offset_encoding,
}
};
Some(fut)