diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a1ef53bdf..21bb51b2e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,6 +8,9 @@ on: schedule: - cron: "00 01 * * *" +env: + MSRV: "1.76" + jobs: check: name: Check (msrv) @@ -18,7 +21,9 @@ jobs: uses: actions/checkout@v4 - name: Install MSRV toolchain - uses: dtolnay/rust-toolchain@1.76 + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.MSRV }} - uses: Swatinem/rust-cache@v2 with: @@ -39,7 +44,9 @@ jobs: uses: actions/checkout@v4 - name: Install MSRV toolchain - uses: dtolnay/rust-toolchain@1.76 + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.MSRV }} - uses: Swatinem/rust-cache@v2 with: @@ -71,8 +78,9 @@ jobs: uses: actions/checkout@v4 - name: Install MSRV toolchain - uses: dtolnay/rust-toolchain@1.76 + uses: dtolnay/rust-toolchain@master with: + toolchain: ${{ env.MSRV }} components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 @@ -99,7 +107,9 @@ jobs: uses: actions/checkout@v4 - name: Install MSRV toolchain - uses: dtolnay/rust-toolchain@1.76 + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.MSRV }} - uses: Swatinem/rust-cache@v2 with: diff --git a/Cargo.lock b/Cargo.lock index 7e80230d9..9cae3e3ed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -136,9 +136,9 @@ checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" [[package]] name = "cc" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "shlex", ] @@ -1757,15 +1757,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.165" +version = "0.2.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb4d3d38eab6c5239a362fa8bae48c03baf980a6e7079f063942d563ef3533e" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", "windows-targets 0.52.6", diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index f51e9bb1d..31d1c563e 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -225,6 +225,7 @@ | uxntal | ✓ | | | | | v | ✓ | ✓ | ✓ | `v-analyzer` | | vala | ✓ | ✓ | | `vala-language-server` | +| vento | ✓ | | | | | verilog | ✓ | ✓ | | `svlangserver` | | vhdl | ✓ | | | `vhdl_ls` | | vhs | ✓ | | | | diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 86caff717..df33d6e52 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -59,10 +59,16 @@ the default value (e.g. to `10240` from `256`) by running `ulimit -n 10240`. ## Minimum Stable Rust Version (MSRV) Policy -Helix follows the MSRV of Firefox. -The current MSRV and future changes to the MSRV are listed in the [Firefox documentation]. +Helix keeps an intentionally low MSRV for the sake of easy building and packaging +downstream. We follow [Firefox's MSRV policy]. Once Firefox's MSRV increases we +may bump ours as well, but be sure to check that popular distributions like Ubuntu +package the new MSRV version. When increasing the MSRV, update these three places: -[Firefox documentation]: https://firefox-source-docs.mozilla.org/writing-rust-code/update-policy.html +* the `workspace.package.rust-version` key in `Cargo.toml` in the repository root +* the `env.MSRV` key at the top of `.github/workflows/build.yml` +* the `toolchain.channel` key in `rust-toolchain.toml` + +[Firefox's MSRV policy]: https://firefox-source-docs.mozilla.org/writing-rust-code/update-policy.html [good-first-issue]: https://github.com/helix-editor/helix/labels/E-easy [log-file]: https://github.com/helix-editor/helix/wiki/FAQ#access-the-log-file [architecture.md]: ./architecture.md diff --git a/helix-core/src/comment.rs b/helix-core/src/comment.rs index 427021874..5a34e7e17 100644 --- a/helix-core/src/comment.rs +++ b/helix-core/src/comment.rs @@ -147,10 +147,7 @@ pub fn find_block_comments( let mut only_whitespace = true; let mut comment_changes = Vec::with_capacity(selection.len()); let default_tokens = tokens.first().cloned().unwrap_or_default(); - // TODO: check if this can be removed on MSRV bump - #[allow(clippy::redundant_clone)] let mut start_token = default_tokens.start.clone(); - #[allow(clippy::redundant_clone)] let mut end_token = default_tokens.end.clone(); let mut tokens = tokens.to_vec(); diff --git a/helix-core/src/graphemes.rs b/helix-core/src/graphemes.rs index 91f11e620..4ca85d315 100644 --- a/helix-core/src/graphemes.rs +++ b/helix-core/src/graphemes.rs @@ -346,7 +346,7 @@ pub struct RopeGraphemes<'a> { cursor: GraphemeCursor, } -impl<'a> fmt::Debug for RopeGraphemes<'a> { +impl fmt::Debug for RopeGraphemes<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("RopeGraphemes") .field("text", &self.text) @@ -358,7 +358,7 @@ impl<'a> fmt::Debug for RopeGraphemes<'a> { } } -impl<'a> RopeGraphemes<'a> { +impl RopeGraphemes<'_> { #[must_use] pub fn new(slice: RopeSlice) -> RopeGraphemes { let mut chunks = slice.chunks(); @@ -423,7 +423,7 @@ pub struct RevRopeGraphemes<'a> { cursor: GraphemeCursor, } -impl<'a> fmt::Debug for RevRopeGraphemes<'a> { +impl fmt::Debug for RevRopeGraphemes<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("RevRopeGraphemes") .field("text", &self.text) @@ -435,7 +435,7 @@ impl<'a> fmt::Debug for RevRopeGraphemes<'a> { } } -impl<'a> RevRopeGraphemes<'a> { +impl RevRopeGraphemes<'_> { #[must_use] pub fn new(slice: RopeSlice) -> RevRopeGraphemes { let (mut chunks, mut cur_chunk_start, _, _) = slice.chunks_at_byte(slice.len_bytes()); @@ -542,7 +542,7 @@ impl<'a> From<&'a str> for GraphemeStr<'a> { } } -impl<'a> From for GraphemeStr<'a> { +impl From for GraphemeStr<'_> { fn from(g: String) -> Self { let len = g.len(); let ptr = Box::into_raw(g.into_bytes().into_boxed_slice()) as *mut u8; diff --git a/helix-core/src/indent.rs b/helix-core/src/indent.rs index ae26c13e0..3faae53ec 100644 --- a/helix-core/src/indent.rs +++ b/helix-core/src/indent.rs @@ -386,7 +386,7 @@ enum IndentCaptureType<'a> { Align(RopeSlice<'a>), } -impl<'a> IndentCaptureType<'a> { +impl IndentCaptureType<'_> { fn default_scope(&self) -> IndentScope { match self { IndentCaptureType::Indent | IndentCaptureType::IndentAlways => IndentScope::Tail, diff --git a/helix-core/src/selection.rs b/helix-core/src/selection.rs index a382a7186..e29fcc94c 100644 --- a/helix-core/src/selection.rs +++ b/helix-core/src/selection.rs @@ -660,7 +660,7 @@ impl Selection { pub fn fragments<'a>( &'a self, text: RopeSlice<'a>, - ) -> impl DoubleEndedIterator> + ExactSizeIterator> + 'a + ) -> impl DoubleEndedIterator> + ExactSizeIterator> { self.ranges.iter().map(move |range| range.fragment(text)) } @@ -744,7 +744,7 @@ pub struct LineRangeIter<'a> { text: RopeSlice<'a>, } -impl<'a> Iterator for LineRangeIter<'a> { +impl Iterator for LineRangeIter<'_> { type Item = (usize, usize); fn next(&mut self) -> Option { diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs index cd9230f35..6ddf433cb 100644 --- a/helix-core/src/syntax.rs +++ b/helix-core/src/syntax.rs @@ -619,7 +619,7 @@ pub enum CapturedNode<'a> { Grouped(Vec>), } -impl<'a> CapturedNode<'a> { +impl CapturedNode<'_> { pub fn start_byte(&self) -> usize { match self { Self::Single(n) => n.start_byte(), @@ -1852,7 +1852,7 @@ struct HighlightIterLayer<'a> { depth: u32, } -impl<'a> fmt::Debug for HighlightIterLayer<'a> { +impl fmt::Debug for HighlightIterLayer<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("HighlightIterLayer").finish() } @@ -2109,7 +2109,7 @@ impl HighlightConfiguration { } } -impl<'a> HighlightIterLayer<'a> { +impl HighlightIterLayer<'_> { // First, sort scope boundaries by their byte offset in the document. At a // given position, emit scope endings before scope beginnings. Finally, emit // scope boundaries from deeper layers first. @@ -2247,7 +2247,7 @@ fn intersect_ranges( result } -impl<'a> HighlightIter<'a> { +impl HighlightIter<'_> { fn emit_event( &mut self, offset: usize, @@ -2302,7 +2302,7 @@ impl<'a> HighlightIter<'a> { } } -impl<'a> Iterator for HighlightIter<'a> { +impl Iterator for HighlightIter<'_> { type Item = Result; fn next(&mut self) -> Option { diff --git a/helix-core/src/syntax/tree_cursor.rs b/helix-core/src/syntax/tree_cursor.rs index bec4a1c6c..d82ea74db 100644 --- a/helix-core/src/syntax/tree_cursor.rs +++ b/helix-core/src/syntax/tree_cursor.rs @@ -217,7 +217,7 @@ impl<'a> TreeCursor<'a> { /// Returns an iterator over the children of the node the TreeCursor is on /// at the time this is called. - pub fn children(&'a mut self) -> ChildIter { + pub fn children(&'a mut self) -> ChildIter<'a> { let parent = self.node(); ChildIter { @@ -229,7 +229,7 @@ impl<'a> TreeCursor<'a> { /// Returns an iterator over the named children of the node the TreeCursor is on /// at the time this is called. - pub fn named_children(&'a mut self) -> ChildIter { + pub fn named_children(&'a mut self) -> ChildIter<'a> { let parent = self.node(); ChildIter { diff --git a/helix-core/src/text_annotations.rs b/helix-core/src/text_annotations.rs index ff28a8dd2..9704c3d6b 100644 --- a/helix-core/src/text_annotations.rs +++ b/helix-core/src/text_annotations.rs @@ -211,7 +211,7 @@ impl Layer<'_, A, M> { } impl<'a, A, M> From<(&'a [A], M)> for Layer<'a, A, M> { - fn from((annotations, metadata): (&'a [A], M)) -> Layer { + fn from((annotations, metadata): (&'a [A], M)) -> Layer<'a, A, M> { Layer { annotations, current_index: Cell::new(0), diff --git a/helix-core/src/transaction.rs b/helix-core/src/transaction.rs index c5c94b750..450b47365 100644 --- a/helix-core/src/transaction.rs +++ b/helix-core/src/transaction.rs @@ -769,7 +769,7 @@ impl<'a> ChangeIterator<'a> { } } -impl<'a> Iterator for ChangeIterator<'a> { +impl Iterator for ChangeIterator<'_> { type Item = Change; fn next(&mut self) -> Option { diff --git a/helix-lsp-types/src/completion.rs b/helix-lsp-types/src/completion.rs index 2555228a7..7c006bdb6 100644 --- a/helix-lsp-types/src/completion.rs +++ b/helix-lsp-types/src/completion.rs @@ -497,7 +497,6 @@ pub struct CompletionItem { /// insertText is ignored. /// /// Most editors support two different operation when accepting a completion item. One is to insert a - /// completion text and the other is to replace an existing text with a completion text. Since this can /// usually not predetermined by a server it can report both ranges. Clients need to signal support for /// `InsertReplaceEdits` via the `textDocument.completion.insertReplaceSupport` client capability diff --git a/helix-lsp/src/jsonrpc.rs b/helix-lsp/src/jsonrpc.rs index f415dde0b..9ff57cde9 100644 --- a/helix-lsp/src/jsonrpc.rs +++ b/helix-lsp/src/jsonrpc.rs @@ -137,7 +137,7 @@ impl Serialize for Version { struct VersionVisitor; -impl<'v> Visitor<'v> for VersionVisitor { +impl Visitor<'_> for VersionVisitor { type Value = Version; fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { diff --git a/helix-parsec/src/lib.rs b/helix-parsec/src/lib.rs index 846d02d61..0ec44436f 100644 --- a/helix-parsec/src/lib.rs +++ b/helix-parsec/src/lib.rs @@ -43,7 +43,7 @@ pub trait Parser<'a> { #[doc(hidden)] impl<'a, F, T> Parser<'a> for F where - F: Fn(&'a str) -> ParseResult, + F: Fn(&'a str) -> ParseResult<'a, T>, { type Output = T; diff --git a/helix-term/Cargo.toml b/helix-term/Cargo.toml index eb20cb46e..fb9d48bab 100644 --- a/helix-term/Cargo.toml +++ b/helix-term/Cargo.toml @@ -74,7 +74,7 @@ grep-searcher = "0.1.14" [target.'cfg(not(windows))'.dependencies] # https://github.com/vorner/signal-hook/issues/100 signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] } -libc = "0.2.165" +libc = "0.2.167" [target.'cfg(target_os = "macos")'.dependencies] crossterm = { version = "0.28", features = ["event-stream", "use-dev-tty", "libc"] } diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 341fff8ca..4633299e7 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -98,7 +98,7 @@ pub struct Context<'a> { pub jobs: &'a mut Jobs, } -impl<'a> Context<'a> { +impl Context<'_> { /// Push a new component onto the compositor. pub fn push_layer(&mut self, component: Box) { self.callback diff --git a/helix-term/src/compositor.rs b/helix-term/src/compositor.rs index 3dcb5f2bf..a57fd6177 100644 --- a/helix-term/src/compositor.rs +++ b/helix-term/src/compositor.rs @@ -27,7 +27,7 @@ pub struct Context<'a> { pub jobs: &'a mut Jobs, } -impl<'a> Context<'a> { +impl Context<'_> { /// Waits on all pending jobs, and then tries to flush all pending write /// operations for all documents. pub fn block_try_flush_writes(&mut self) -> anyhow::Result<()> { diff --git a/helix-term/src/ui/menu.rs b/helix-term/src/ui/menu.rs index ffe3ebb3c..612832ce1 100644 --- a/helix-term/src/ui/menu.rs +++ b/helix-term/src/ui/menu.rs @@ -346,10 +346,6 @@ impl Component for Menu { let win_height = area.height as usize; - const fn div_ceil(a: usize, b: usize) -> usize { - (a + b - 1) / b - } - let rows = options .iter() .map(|option| option.format(&self.editor_data)); @@ -390,7 +386,7 @@ impl Component for Menu { let scroll_style = theme.get("ui.menu.scroll"); if !fits { - let scroll_height = div_ceil(win_height.pow(2), len).min(win_height); + let scroll_height = win_height.pow(2).div_ceil(len).min(win_height); let scroll_line = (win_height - scroll_height) * scroll / std::cmp::max(1, len.saturating_sub(win_height)); diff --git a/helix-term/src/ui/picker.rs b/helix-term/src/ui/picker.rs index f4bc9533f..c76c686d0 100644 --- a/helix-term/src/ui/picker.rs +++ b/helix-term/src/ui/picker.rs @@ -72,7 +72,7 @@ impl<'a> From<&'a Path> for PathOrId<'a> { } } -impl<'a> From for PathOrId<'a> { +impl From for PathOrId<'_> { fn from(v: DocumentId) -> Self { Self::Id(v) } diff --git a/helix-term/src/ui/popup.rs b/helix-term/src/ui/popup.rs index 2cefaf61b..db77492db 100644 --- a/helix-term/src/ui/popup.rs +++ b/helix-term/src/ui/popup.rs @@ -344,12 +344,8 @@ impl Component for Popup { let fits = len <= win_height; let scroll_style = cx.editor.theme.get("ui.menu.scroll"); - const fn div_ceil(a: usize, b: usize) -> usize { - (a + b - 1) / b - } - if !fits { - let scroll_height = div_ceil(win_height.pow(2), len).min(win_height); + let scroll_height = win_height.pow(2).div_ceil(len).min(win_height); let scroll_line = (win_height - scroll_height) * scroll / std::cmp::max(1, len.saturating_sub(win_height)); diff --git a/helix-term/src/ui/prompt.rs b/helix-term/src/ui/prompt.rs index 6ba2fcb9e..1e443ce7f 100644 --- a/helix-term/src/ui/prompt.rs +++ b/helix-term/src/ui/prompt.rs @@ -415,7 +415,8 @@ impl Prompt { let cols = std::cmp::max(1, area.width / max_len); let col_width = (area.width.saturating_sub(cols)) / cols; - let height = ((self.completion.len() as u16 + cols - 1) / cols) + let height = (self.completion.len() as u16) + .div_ceil(cols) .min(10) // at most 10 rows (or less) .min(area.height.saturating_sub(1)); diff --git a/helix-tui/src/text.rs b/helix-tui/src/text.rs index a5e8a68af..c4313e15f 100644 --- a/helix-tui/src/text.rs +++ b/helix-tui/src/text.rs @@ -212,7 +212,7 @@ impl<'a> From> for Span<'a> { #[derive(Debug, Default, Clone, PartialEq, Eq)] pub struct Spans<'a>(pub Vec>); -impl<'a> Spans<'a> { +impl Spans<'_> { /// Returns the width of the underlying string. /// /// ## Examples diff --git a/helix-tui/src/widgets/block.rs b/helix-tui/src/widgets/block.rs index 8b8141ea9..ee7aa7573 100644 --- a/helix-tui/src/widgets/block.rs +++ b/helix-tui/src/widgets/block.rs @@ -123,7 +123,7 @@ impl<'a> Block<'a> { } } -impl<'a> Widget for Block<'a> { +impl Widget for Block<'_> { fn render(self, area: Rect, buf: &mut Buffer) { if area.area() == 0 { return; diff --git a/helix-tui/src/widgets/paragraph.rs b/helix-tui/src/widgets/paragraph.rs index 79beb0516..73153a077 100644 --- a/helix-tui/src/widgets/paragraph.rs +++ b/helix-tui/src/widgets/paragraph.rs @@ -129,7 +129,7 @@ impl<'a> Paragraph<'a> { } } -impl<'a> Widget for Paragraph<'a> { +impl Widget for Paragraph<'_> { fn render(mut self, area: Rect, buf: &mut Buffer) { buf.set_style(area, self.style); let text_area = match self.block.take() { diff --git a/helix-tui/src/widgets/reflow.rs b/helix-tui/src/widgets/reflow.rs index 67c4db443..ff102eb19 100644 --- a/helix-tui/src/widgets/reflow.rs +++ b/helix-tui/src/widgets/reflow.rs @@ -39,7 +39,7 @@ impl<'a, 'b> WordWrapper<'a, 'b> { } } -impl<'a, 'b> LineComposer<'a> for WordWrapper<'a, 'b> { +impl<'a> LineComposer<'a> for WordWrapper<'a, '_> { fn next_line(&mut self) -> Option<(&[StyledGrapheme<'a>], u16)> { if self.max_line_width == 0 { return None; @@ -152,7 +152,7 @@ impl<'a, 'b> LineTruncator<'a, 'b> { } } -impl<'a, 'b> LineComposer<'a> for LineTruncator<'a, 'b> { +impl<'a> LineComposer<'a> for LineTruncator<'a, '_> { fn next_line(&mut self) -> Option<(&[StyledGrapheme<'a>], u16)> { if self.max_line_width == 0 { return None; diff --git a/helix-tui/src/widgets/table.rs b/helix-tui/src/widgets/table.rs index 3564871de..9c67a376f 100644 --- a/helix-tui/src/widgets/table.rs +++ b/helix-tui/src/widgets/table.rs @@ -34,7 +34,7 @@ pub struct Cell<'a> { style: Style, } -impl<'a> Cell<'a> { +impl Cell<'_> { /// Set the `Style` of this cell. pub fn style(mut self, style: Style) -> Self { self.style = style; @@ -351,7 +351,7 @@ impl TableState { } // impl<'a> StatefulWidget for Table<'a> { -impl<'a> Table<'a> { +impl Table<'_> { // type State = TableState; pub fn render_table( @@ -486,7 +486,7 @@ fn render_cell(buf: &mut Buffer, cell: &Cell, area: Rect, truncate: bool) { } } -impl<'a> Widget for Table<'a> { +impl Widget for Table<'_> { fn render(self, area: Rect, buf: &mut Buffer) { let mut state = TableState::default(); Table::render_table(self, area, buf, &mut state, false); diff --git a/helix-view/src/register.rs b/helix-view/src/register.rs index 3f7844cd6..d286a85cc 100644 --- a/helix-view/src/register.rs +++ b/helix-view/src/register.rs @@ -5,7 +5,7 @@ use arc_swap::access::DynAccess; use helix_core::NATIVE_LINE_ENDING; use crate::{ - clipboard::{ClipboardProvider, ClipboardType}, + clipboard::{ClipboardError, ClipboardProvider, ClipboardType}, Editor, }; @@ -238,6 +238,10 @@ fn read_from_clipboard<'a>( RegisterValues::new(iter::once(contents.into())) } } + Err(ClipboardError::ReadingNotSupported) => match saved_values { + Some(values) => RegisterValues::new(values.iter().map(Cow::from).rev()), + None => RegisterValues::new(iter::empty()), + }, Err(err) => { log::error!( "Failed to read {} clipboard: {err}", @@ -307,13 +311,13 @@ impl<'a> Iterator for RegisterValues<'a> { } } -impl<'a> DoubleEndedIterator for RegisterValues<'a> { +impl DoubleEndedIterator for RegisterValues<'_> { fn next_back(&mut self) -> Option { self.iter.next_back() } } -impl<'a> ExactSizeIterator for RegisterValues<'a> { +impl ExactSizeIterator for RegisterValues<'_> { fn len(&self) -> usize { self.iter.len() } diff --git a/helix-view/src/tree.rs b/helix-view/src/tree.rs index be8bd4e5b..aba947a21 100644 --- a/helix-view/src/tree.rs +++ b/helix-view/src/tree.rs @@ -705,7 +705,7 @@ impl<'a> Iterator for Traverse<'a> { } } -impl<'a> DoubleEndedIterator for Traverse<'a> { +impl DoubleEndedIterator for Traverse<'_> { fn next_back(&mut self) -> Option { loop { let key = self.stack.pop()?; diff --git a/languages.toml b/languages.toml index df0a29cf0..2fab00539 100644 --- a/languages.toml +++ b/languages.toml @@ -3168,7 +3168,7 @@ indent = { tab-width = 4, unit = " " } [[grammar]] name = "just" -source = { git = "https://github.com/poliorcetics/tree-sitter-just", rev = "6e28fa6cba511c694247cd802d1c3b14f8d34dbb" } +source = { git = "https://github.com/poliorcetics/tree-sitter-just", rev = "180bb15d64c63585c4f65c551350048f21987bcb" } [[language]] name = "gn" @@ -3463,7 +3463,11 @@ source = { git = "https://github.com/urbit-pilled/tree-sitter-hoon", rev = "1d5d [[language]] name = "hocon" scope = "source.conf" -file-types = ["conf"] +file-types = [ + { glob = "**/src/*/resources/**/*.conf" }, + { glob = "*scalafmt*.conf" }, + { glob = "*scalafix*.conf" }, +] comment-token = "#" auto-format = true indent = { tab-width = 2, unit = " " } @@ -3956,3 +3960,14 @@ language-servers = ["ada-gpr-language-server"] [[grammar]] name = "gpr" source = { git = "https://github.com/brownts/tree-sitter-gpr", rev = "cea857d3c18d1385d1f5b66cd09ea1e44173945c" } + +[[language]] +name = "vento" +scope = "text.html.vto" +file-types = ["vto"] +block-comment-tokens = { start = "{{#", end = "#}}" } +indent = { tab-width = 4, unit = " " } + +[[grammar]] +name = "vento" +source = { git = "https://github.com/ventojs/tree-sitter-vento", rev = "3321077d7446c1b3b017c294fd56ce028ed817fe" } diff --git a/runtime/queries/just/highlights.scm b/runtime/queries/just/highlights.scm index 258fadb9e..97a997619 100644 --- a/runtime/queries/just/highlights.scm +++ b/runtime/queries/just/highlights.scm @@ -3,6 +3,7 @@ [ "export" "import" + "unexport" ] @keyword.control.import "mod" @keyword.directive @@ -18,6 +19,11 @@ "else" ] @keyword.control.conditional +[ + "&&" + "||" +] @operator + ; Variables (value @@ -31,6 +37,9 @@ (shell_variable_name) @variable +(unexport + name: (identifier) @variable) + ; Functions (recipe diff --git a/runtime/queries/vento/highlights.scm b/runtime/queries/vento/highlights.scm new file mode 100644 index 000000000..4b0ba563f --- /dev/null +++ b/runtime/queries/vento/highlights.scm @@ -0,0 +1,13 @@ +(comment) @comment + +(keyword) @keyword + +(tag + [ + "{{" + "{{-" + "}}" + "-}}" + ] @punctuation.bracket) + +"|>" @operator diff --git a/runtime/queries/vento/injections.scm b/runtime/queries/vento/injections.scm new file mode 100644 index 000000000..2df984012 --- /dev/null +++ b/runtime/queries/vento/injections.scm @@ -0,0 +1,6 @@ +((content) @injection.content + (#set! injection.language "html") + (#set! injection.combined)) + +((code) @injection.content + (#set! injection.language "javascript")) diff --git a/runtime/themes/catppuccin_mocha.toml b/runtime/themes/catppuccin_mocha.toml index 3c030762e..76e65c62f 100644 --- a/runtime/themes/catppuccin_mocha.toml +++ b/runtime/themes/catppuccin_mocha.toml @@ -52,6 +52,8 @@ "markup.list" = "mauve" "markup.bold" = { modifiers = ["bold"] } "markup.italic" = { modifiers = ["italic"] } +"markup.list.unchecked" = "overlay2" +"markup.list.checked" = "green" "markup.link.url" = { fg = "blue", modifiers = ["italic", "underlined"] } "markup.link.text" = "blue" "markup.raw" = "flamingo" diff --git a/runtime/themes/flexoki_light.toml b/runtime/themes/flexoki_light.toml index 8badd9222..5f8604e9f 100644 --- a/runtime/themes/flexoki_light.toml +++ b/runtime/themes/flexoki_light.toml @@ -26,6 +26,8 @@ "ui.menu.selected" = { bg = "ui", fg = "tx" } "ui.debug" = { fg = "or", bg = "bg" } "ui.highlight.frameline" = { bg = "ye" } +"ui.bufferline" = { fg = "tx-2", bg = "bg-2"} +"ui.bufferline.active" = { fg = "ye", bg = "bg-2" } "diagnostic.hint" = { underline = { color = "bl", style = "curl" } } "diagnostic.info" = { underline = { color = "bl", style = "curl" } } "diagnostic.warning" = { underline = { color = "ye", style = "curl" } } @@ -36,7 +38,6 @@ "info" = { fg = "ye", modifiers = ["bold"] } "warning" = { fg = "or", modifiers = ["bold"] } "error" = { fg = "re", modifiers = ["bold"] } - "attribute" = "ye" "type" = "ye" "constructor" = "gr" @@ -62,7 +63,6 @@ "function" = "or" "tag" = "bl" "namespace" = "re" - "markup.heading" = "or" "markup.list" = "ye" "markup.bold" = { fg = "or", modifiers = ["bold"] } @@ -88,6 +88,7 @@ ui = "#E6E4D9" bg-2 = "#F2F0E5" bg = "#FFFCF0" + re = "#AF3029" or = "#BC5215" ye = "#AD8301"