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|.