From c08a86c33e43bf90e474b17151acc47893979bf5 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Tue, 15 Sep 2026 18:40:34 -0700 Subject: [PATCH] removes `FoldingRangeRequest` support in SpaceManiac/vscode-dm-langclient#63, as dont currently it overrides the indentation-based defaults --- crates/dm-langserver/src/main.rs | 49 -------------------------------- 1 file changed, 49 deletions(-) diff --git a/crates/dm-langserver/src/main.rs b/crates/dm-langserver/src/main.rs index 5dcb447d..3de8aafc 100644 --- a/crates/dm-langserver/src/main.rs +++ b/crates/dm-langserver/src/main.rs @@ -1358,7 +1358,6 @@ impl Engine { Completion; SignatureHelpRequest; DocumentSymbolRequest; - FoldingRangeRequest; DocumentColor; ColorPresentationRequest; DocumentLinkRequest; @@ -1438,7 +1437,6 @@ impl Engine { work_done_progress_options: Default::default(), }), color_provider: Some(ColorProviderCapability::Simple(true)), - folding_range_provider: Some(FoldingRangeProviderCapability::Simple(true)), ..Default::default() }, server_info: Some(ServerInfo { @@ -2296,37 +2294,6 @@ impl Engine { } } - fn FoldingRangeRequest(&mut self, params: P) -> R { - let content = self - .docs - .get_contents(¶ms.text_document.uri) - .map_err(invalid_request)?; - - let mut region_starts = Vec::new(); - let mut ranges = Vec::new(); - - for (index, line) in content.lines().enumerate() { - let line = line.trim_start(); - let line_number = index as u32; - - if is_region_marker(line, "#region") { - region_starts.push(line_number); - } else if is_region_marker(line, "#endregion") - && let Some(start_line) = region_starts.pop() - { - ranges.push(FoldingRange { - start_line, - end_line: line_number, - start_character: None, - end_character: None, - kind: Some(FoldingRangeKind::Region), - }); - } - } - - Ok(Some(ranges)) - } - fn DocumentColor(&mut self, params: P) -> R { let content = self .docs @@ -2589,22 +2556,6 @@ fn path_to_url(path: PathBuf) -> Result { Url::from_file_path(path).map_err(|_| invalid_request(format!("bad file path: {formatted}"))) } -fn is_region_marker(line: &str, marker: &str) -> bool { - let Some(comment) = line.strip_prefix("//") else { - return false; - }; - - let rest = comment.strip_prefix(' ').unwrap_or(comment); - let Some(suffix) = rest.strip_prefix(marker) else { - return false; - }; - - match suffix.chars().next() { - None => true, - Some(ch) => ch.is_whitespace(), - } -} - fn convert_severity(severity: dm::Severity) -> lsp_types::DiagnosticSeverity { match severity { dm::Severity::Error => lsp_types::DiagnosticSeverity::ERROR,