]> git.lizzy.rs Git - rust.git/commitdiff
Hide comments in rust section of doc comments
authorRoman Stoliar <rizakrko@rambler.ru>
Tue, 30 Jul 2019 00:46:38 +0000 (03:46 +0300)
committerRoman Stoliar <rizakrko@rambler.ru>
Tue, 30 Jul 2019 00:46:38 +0000 (03:46 +0300)
crates/ra_lsp_server/src/conv.rs
crates/ra_lsp_server/src/main_loop/handlers.rs
crates/ra_lsp_server/src/markdown.rs

index 6b3be444fdf829297a627d1827c50e36a1ed1e8b..59c5e158238b4e08aaae2e780f7d69ea7e3a49ee 100644 (file)
@@ -171,7 +171,7 @@ impl Conv for ra_ide_api::Documentation {
     fn conv(self) -> Documentation {
         Documentation::MarkupContent(MarkupContent {
             kind: MarkupKind::Markdown,
-            value: crate::markdown::mark_fenced_blocks_as_rust(self.as_str()),
+            value: crate::markdown::format_docs(self.as_str()),
         })
     }
 }
index 9006aa316f161ca3f8b6d79c36686b7da5cf58fd..ee48d0cb8a53678d1183821401feaff8978b2453 100644 (file)
@@ -485,7 +485,7 @@ pub fn handle_hover(
     let res = Hover {
         contents: HoverContents::Markup(MarkupContent {
             kind: MarkupKind::Markdown,
-            value: info.info.to_markup(),
+            value: crate::markdown::format_docs(&info.info.to_markup()),
         }),
         range: Some(range),
     };
index e382eee90c9032351a22ee2621f2131cf3e1dd6c..905e8c90b7081b0286c273d3d6a3c4c28c1cb28d 100644 (file)
@@ -1,7 +1,11 @@
-pub(crate) fn mark_fenced_blocks_as_rust(src: &str) -> String {
+pub(crate) fn format_docs(src: &str) -> String {
     let mut processed_lines = Vec::new();
     let mut in_code_block = false;
     for line in src.lines() {
+        if in_code_block && line.trim_start().starts_with("# ") {
+            continue;
+        }
+
         if line.starts_with("```") {
             in_code_block ^= true
         }
@@ -22,8 +26,20 @@ mod tests {
     use super::*;
 
     #[test]
-    fn test_codeblock_adds_rust() {
+    fn test_format_docs_adds_rust() {
         let comment = "```\nfn some_rust() {}\n```";
-        assert_eq!(mark_fenced_blocks_as_rust(comment), "```rust\nfn some_rust() {}\n```");
+        assert_eq!(format_docs(comment), "```rust\nfn some_rust() {}\n```");
+    }
+
+    #[test]
+    fn test_format_docs_skips_comments_in_rust_block() {
+        let comment = "```rust\n # skip1\n# skip2\n#stay1\nstay2\n```";
+        assert_eq!(format_docs(comment), "```rust\n#stay1\nstay2\n```");
+    }
+
+    #[test]
+    fn test_format_docs_keeps_comments_outside_of_rust_block() {
+        let comment = " # stay1\n# stay2\n#stay3\nstay4";
+        assert_eq!(format_docs(comment), comment);
     }
 }