diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index e68b280..b4a16da 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -4,7 +4,7 @@ name: Release # (e.g. 0.4.0). The `prepare` job stamps that version into every hardcoded # spot (scripts/set-version.sh), commits "chore(release): X.Y.Z", and pushes # the vX.Y.Z tag. The build matrix + release job then run off that tag. No -# more hand-editing versions across Cargo.toml/plugin/nuwiki.vim. +# more hand-editing versions across Cargo.toml and individual crate manifests. on: workflow_dispatch: inputs: diff --git a/Cargo.lock b/Cargo.lock index bf9b74f..908616d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -376,11 +376,11 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nuwiki-core" -version = "0.3.0" +version = "0.4.1" [[package]] name = "nuwiki-ls" -version = "0.3.0" +version = "0.4.1" dependencies = [ "nuwiki-lsp", "tokio", @@ -388,7 +388,7 @@ dependencies = [ [[package]] name = "nuwiki-lsp" -version = "0.3.0" +version = "0.4.1" dependencies = [ "async-trait", "dashmap 6.1.0", diff --git a/Cargo.toml b/Cargo.toml index 3d15513..c50c4e0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["crates/*"] [workspace.package] -version = "0.3.0" +version = "0.4.1" edition = "2021" rust-version = "1.83" authors = ["Gabriel Fróes Franco "] diff --git a/crates/nuwiki-core/src/ast/block.rs b/crates/nuwiki-core/src/ast/block.rs index fb59e98..07b2132 100644 --- a/crates/nuwiki-core/src/ast/block.rs +++ b/crates/nuwiki-core/src/ast/block.rs @@ -120,20 +120,15 @@ pub struct DefinitionItemNode { pub definitions: Vec>, } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] pub enum TableAlign { + #[default] Default, Left, Right, Center, } -impl Default for TableAlign { - fn default() -> Self { - Self::Default - } -} - #[derive(Debug, Clone, PartialEq, Eq)] pub struct TableNode { pub span: Span, @@ -170,9 +165,9 @@ pub struct CommentNode { /// /// - `File` — line 0 or 1 of the document; tags the entire page. /// - `Heading(i)` — within two lines below the i-th `HeadingNode` in the -/// document's `children`; tags that heading. +/// document's `children`; tags that heading. /// - `Standalone` — anywhere else; the tag is its own anchor on the source -/// line. +/// line. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum TagScope { File, diff --git a/crates/nuwiki-core/src/ast/link.rs b/crates/nuwiki-core/src/ast/link.rs index e3b230c..315a30a 100644 --- a/crates/nuwiki-core/src/ast/link.rs +++ b/crates/nuwiki-core/src/ast/link.rs @@ -9,8 +9,9 @@ use std::collections::HashMap; use super::inline::InlineNode; use super::span::Span; -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] pub enum LinkKind { + #[default] Wiki, Interwiki, Diary, @@ -31,12 +32,6 @@ pub struct LinkTarget { pub is_directory: bool, } -impl Default for LinkKind { - fn default() -> Self { - Self::Wiki - } -} - #[derive(Debug, Clone, PartialEq, Eq)] pub struct WikiLinkNode { pub span: Span, diff --git a/crates/nuwiki-core/src/syntax/registry.rs b/crates/nuwiki-core/src/syntax/registry.rs index a8eeb92..e03525a 100644 --- a/crates/nuwiki-core/src/syntax/registry.rs +++ b/crates/nuwiki-core/src/syntax/registry.rs @@ -39,7 +39,7 @@ impl SyntaxRegistry { pub fn detect_from_extension(&self, ext: &str) -> Option<&dyn SyntaxPlugin> { self.plugins .iter() - .find(|p| p.file_extensions().iter().any(|e| *e == ext)) + .find(|p| p.file_extensions().contains(&ext)) .map(|p| p.as_ref()) } diff --git a/crates/nuwiki-core/src/syntax/vimwiki/parser.rs b/crates/nuwiki-core/src/syntax/vimwiki/parser.rs index 89f2ea1..ee35004 100644 --- a/crates/nuwiki-core/src/syntax/vimwiki/parser.rs +++ b/crates/nuwiki-core/src/syntax/vimwiki/parser.rs @@ -547,8 +547,7 @@ impl<'a> ParseState<'a> { // Text). We accept either as a continuation when the implied // indent is `> level`. let continuation_threshold = level + 1; - loop { - let Some(first) = self.peek() else { break }; + while let Some(first) = self.peek() { let mut consume_first = false; let is_continuation = match &first.kind { K::Text(s) => leading_ws_count(s) >= continuation_threshold, @@ -561,7 +560,7 @@ impl<'a> ParseState<'a> { consume_first = true; true } else { - false + break; } } _ => false, diff --git a/crates/nuwiki-ls/Cargo.toml b/crates/nuwiki-ls/Cargo.toml index 2ce6a09..2e3725f 100644 --- a/crates/nuwiki-ls/Cargo.toml +++ b/crates/nuwiki-ls/Cargo.toml @@ -17,5 +17,5 @@ name = "nuwiki-ls" path = "src/main.rs" [dependencies] -nuwiki-lsp = { path = "../nuwiki-lsp", version = "0.3.0" } +nuwiki-lsp = { path = "../nuwiki-lsp", version = "0.4.1" } tokio = { version = "1", features = ["macros", "rt-multi-thread", "io-std"] } diff --git a/crates/nuwiki-lsp/Cargo.toml b/crates/nuwiki-lsp/Cargo.toml index d29b8c6..cddea7c 100644 --- a/crates/nuwiki-lsp/Cargo.toml +++ b/crates/nuwiki-lsp/Cargo.toml @@ -13,7 +13,7 @@ homepage.workspace = true workspace = true [dependencies] -nuwiki-core = { path = "../nuwiki-core", version = "0.3.0" } +nuwiki-core = { path = "../nuwiki-core", version = "0.4.1" } tower-lsp = "0.20" tokio = { version = "1", features = ["macros", "rt-multi-thread", "io-std", "sync", "fs"] } dashmap = "6" diff --git a/crates/nuwiki-lsp/src/commands.rs b/crates/nuwiki-lsp/src/commands.rs index c5a3eab..36d11f3 100644 --- a/crates/nuwiki-lsp/src/commands.rs +++ b/crates/nuwiki-lsp/src/commands.rs @@ -3762,17 +3762,11 @@ pub mod export_ops { .arg("-c") .arg(&cmd) .status() - .map_err(|e| { - std::io::Error::new( - std::io::ErrorKind::Other, - format!("custom_wiki2html spawn failed: {e}"), - ) - })?; + .map_err(|e| std::io::Error::other(format!("custom_wiki2html spawn failed: {e}")))?; if !status.success() { - return Err(std::io::Error::new( - std::io::ErrorKind::Other, - format!("custom_wiki2html exited with {status}"), - )); + return Err(std::io::Error::other(format!( + "custom_wiki2html exited with {status}" + ))); } Ok(PageExport { page: name.to_string(), @@ -3821,7 +3815,7 @@ pub mod export_ops { /// rendered-HTML body per entry. pub fn write_rss(cfg: &WikiConfig, entries: &[DiaryEntry]) -> std::io::Result { let mut sorted: Vec<&DiaryEntry> = entries.iter().collect(); - sorted.sort_by(|a, b| b.date.cmp(&a.date)); + sorted.sort_by_key(|a| std::cmp::Reverse(a.date)); let cap = if cfg.html.rss_max_items == 0 { usize::MAX } else { diff --git a/crates/nuwiki-lsp/src/diary.rs b/crates/nuwiki-lsp/src/diary.rs index 28aa04c..dadbf93 100644 --- a/crates/nuwiki-lsp/src/diary.rs +++ b/crates/nuwiki-lsp/src/diary.rs @@ -47,7 +47,7 @@ pub fn list_entries(index: &WorkspaceIndex) -> Vec { }) }) .collect(); - out.sort_by(|a, b| a.date.cmp(&b.date)); + out.sort_by_key(|a| a.date); out } diff --git a/crates/nuwiki-lsp/src/lib.rs b/crates/nuwiki-lsp/src/lib.rs index 9f8c15e..73aaca7 100644 --- a/crates/nuwiki-lsp/src/lib.rs +++ b/crates/nuwiki-lsp/src/lib.rs @@ -406,7 +406,7 @@ impl LanguageServer for Backend { .general .as_ref() .and_then(|g| g.position_encodings.as_ref()) - .map(|encs| encs.iter().any(|e| *e == PositionEncodingKind::UTF8)) + .map(|encs| encs.contains(&PositionEncodingKind::UTF8)) .unwrap_or(false); self.use_utf8.store(supports_utf8, Ordering::Relaxed); diff --git a/scripts/set-version.sh b/scripts/set-version.sh index 9e2c178..eab6f32 100755 --- a/scripts/set-version.sh +++ b/scripts/set-version.sh @@ -11,8 +11,7 @@ # 1. Cargo.toml — [workspace.package] version # 2. crates/nuwiki-lsp/Cargo.toml — nuwiki-core path-dep version pin # 3. crates/nuwiki-ls/Cargo.toml — nuwiki-lsp path-dep version pin -# 4. plugin/nuwiki.vim — g:nuwiki_version (the Lua client reads it too) -# 5. Cargo.lock — the version of our three own crates +# 4. Cargo.lock — the version of our three own crates # # Cargo.lock is patched directly (awk) so this needs no cargo/toolchain — # the only thing that changes for our crates is their version string. @@ -37,10 +36,7 @@ sed -i -E "s|(nuwiki-core = \{ path = \"\.\./nuwiki-core\", version = )\"[^\"]*\ sed -i -E "s|(nuwiki-lsp = \{ path = \"\.\./nuwiki-lsp\", version = )\"[^\"]*\"|\1\"$ver\"|" \ crates/nuwiki-ls/Cargo.toml -# 4. VimL client version global (the Lua client reads this same g: var). -sed -i -E "s/(let g:nuwiki_version = ')[^']*(')/\1$ver\2/" plugin/nuwiki.vim - -# 5. Cargo.lock entries for our own crates. Each [[package]] block lists the +# 4. Cargo.lock entries for our own crates. Each [[package]] block lists the # name line immediately followed by the version line; rewrite only those. for crate in nuwiki-core nuwiki-lsp nuwiki-ls; do awk -v c="$crate" -v v="$ver" '