summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/formatting.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/features/formatting.rs')
-rw-r--r--support/texlab/src/features/formatting.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/support/texlab/src/features/formatting.rs b/support/texlab/src/features/formatting.rs
new file mode 100644
index 0000000000..4492a0532d
--- /dev/null
+++ b/support/texlab/src/features/formatting.rs
@@ -0,0 +1,24 @@
+mod bibtex_internal;
+mod latexindent;
+
+use cancellation::CancellationToken;
+use lsp_types::{DocumentFormattingParams, TextEdit};
+
+use crate::BibtexFormatter;
+
+use self::{bibtex_internal::format_bibtex_internal, latexindent::format_with_latexindent};
+
+use super::FeatureRequest;
+
+pub fn format_source_code(
+ request: FeatureRequest<DocumentFormattingParams>,
+ cancellation_token: &CancellationToken,
+) -> Option<Vec<TextEdit>> {
+ let mut edits = None;
+ if request.context.options.read().unwrap().bibtex_formatter == BibtexFormatter::Texlab {
+ edits = edits.or_else(|| format_bibtex_internal(&request, cancellation_token));
+ }
+
+ edits = edits.or_else(|| format_with_latexindent(&request, cancellation_token));
+ edits
+}