diff --git a/crates/nuwiki-core/src/ast/inline.rs b/crates/nuwiki-core/src/ast/inline.rs index ed5c169..59c48b5 100644 --- a/crates/nuwiki-core/src/ast/inline.rs +++ b/crates/nuwiki-core/src/ast/inline.rs @@ -14,6 +14,7 @@ pub enum Keyword { Fixme, Fixed, Xxx, + Stopped, } #[derive(Debug, Clone, PartialEq, Eq)] diff --git a/crates/nuwiki-core/src/render/html.rs b/crates/nuwiki-core/src/render/html.rs index e449a8a..59cea3a 100644 --- a/crates/nuwiki-core/src/render/html.rs +++ b/crates/nuwiki-core/src/render/html.rs @@ -502,6 +502,7 @@ impl HtmlRenderer { Keyword::Fixme => ("FIXME", "fixme"), Keyword::Fixed => ("FIXED", "fixed"), Keyword::Xxx => ("XXX", "xxx"), + Keyword::Stopped => ("STOPPED", "stopped"), }; write!(w, "{label}") } diff --git a/crates/nuwiki-core/src/syntax/vimwiki/lexer.rs b/crates/nuwiki-core/src/syntax/vimwiki/lexer.rs index afcc8a6..f8f13da 100644 --- a/crates/nuwiki-core/src/syntax/vimwiki/lexer.rs +++ b/crates/nuwiki-core/src/syntax/vimwiki/lexer.rs @@ -1141,6 +1141,7 @@ const KEYWORDS: &[(&str, Keyword)] = &[ ("FIXME", Keyword::Fixme), ("FIXED", Keyword::Fixed), ("XXX", Keyword::Xxx), + ("STOPPED", Keyword::Stopped), ]; fn match_keyword(rest: &str) -> Option<(usize, Keyword)> { diff --git a/crates/nuwiki-core/tests/html_renderer.rs b/crates/nuwiki-core/tests/html_renderer.rs index bf10fb7..a63fcc6 100644 --- a/crates/nuwiki-core/tests/html_renderer.rs +++ b/crates/nuwiki-core/tests/html_renderer.rs @@ -205,6 +205,7 @@ fn keyword_spans() { ("FIXME x\n", "FIXME"), ("FIXED x\n", "FIXED"), ("XXX x\n", "XXX"), + ("STOPPED x\n", "STOPPED"), ]; for (src, expected) in cases { let out = render(src); diff --git a/crates/nuwiki-core/tests/lexer.rs b/crates/nuwiki-core/tests/lexer.rs index cdaee99..e966fe6 100644 --- a/crates/nuwiki-core/tests/lexer.rs +++ b/crates/nuwiki-core/tests/lexer.rs @@ -450,7 +450,7 @@ fn inline_math_captures_content() { // ===== Keywords ===== #[test] -fn all_six_keywords() { +fn all_keywords() { let cases: &[(&str, Keyword)] = &[ ("TODO", Keyword::Todo), ("DONE", Keyword::Done), @@ -458,6 +458,7 @@ fn all_six_keywords() { ("FIXME", Keyword::Fixme), ("FIXED", Keyword::Fixed), ("XXX", Keyword::Xxx), + ("STOPPED", Keyword::Stopped), ]; for (s, expected) in cases { let line = format!("{s} stuff\n"); diff --git a/crates/nuwiki-core/tests/parser.rs b/crates/nuwiki-core/tests/parser.rs index b1080ff..2a57df7 100644 --- a/crates/nuwiki-core/tests/parser.rs +++ b/crates/nuwiki-core/tests/parser.rs @@ -377,6 +377,7 @@ fn keywords_become_keyword_nodes() { ("FIXME", Keyword::Fixme), ("FIXED", Keyword::Fixed), ("XXX", Keyword::Xxx), + ("STOPPED", Keyword::Stopped), ]; for (src, expected) in cases { let doc = parse(&format!("{src} stuff\n")); diff --git a/crates/nuwiki-lsp/src/lib.rs b/crates/nuwiki-lsp/src/lib.rs index d4b3aec..a4dd1e4 100644 --- a/crates/nuwiki-lsp/src/lib.rs +++ b/crates/nuwiki-lsp/src/lib.rs @@ -1311,6 +1311,7 @@ fn keyword_str(k: nuwiki_core::ast::Keyword) -> &'static str { nuwiki_core::ast::Keyword::Fixme => "FIXME", nuwiki_core::ast::Keyword::Fixed => "FIXED", nuwiki_core::ast::Keyword::Xxx => "XXX", + nuwiki_core::ast::Keyword::Stopped => "STOPPED", } } diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim index fa07ad5..8cc3e55 100644 --- a/syntax/vimwiki.vim +++ b/syntax/vimwiki.vim @@ -91,7 +91,7 @@ syntax match nuwikiCodeDelim /`/ contained conceal syntax match nuwikiMathInline /\$[^$]\+\$/ " Two keyword groups so the editor can colour them like the HTML export: " attention/pending (red) vs resolved/in-progress (green). -syntax match nuwikiKeywordAttn /\<\(TODO\|FIXME\|XXX\)\>/ +syntax match nuwikiKeywordAttn /\<\(TODO\|FIXME\|XXX\|STOPPED\)\>/ syntax match nuwikiKeywordDone /\<\(DONE\|FIXED\|STARTED\)\>/ " Wikilink conceal: hide [[ / ]], and for [[target|desc]] hide target|.