aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCole Helbling2023-11-25 12:55:49 +0000
committerGitHub2023-11-25 12:55:49 +0000
commit8b0ae3d27912799d59e4948ff11d3a5428e32ce4 (patch)
tree579190b16189202c1dbb9ef86c607e9c75616c8d
parent090ed97e0045bfad1e5bff8b96c61707b996b85a (diff)
bump MSRV to 1.70.0 (#8877)
* rust-toolchain.toml: bump MSRV to 1.70.0 With Firefox 120 released on 21 November 2023, the MSRV is now 1.70.0. * Fix cargo fmt with Rust 1.70.0 * Fix cargo clippy with Rust 1.70.0 * Fix cargo doc with Rust 1.70.0 * rust-toolchain.toml: add clippy component * .github: bump dtolnay/rust-toolchain to 1.70 * helix-term: bump rust-version to 1.70 * helix-view/gutter: use checked_ilog10 to count digits * helix-core/syntax: use MAIN_SEPARATOR_STR constant * helix-view/handlers/dap: use Display impl for displaying process spawn error * WIP: helix-term/commands: use checked math to assert ranges cannot overlap
-rw-r--r--.github/workflows/build.yml6
-rw-r--r--helix-core/src/syntax.rs5
-rw-r--r--helix-term/Cargo.toml2
-rw-r--r--helix-term/src/commands.rs16
-rw-r--r--helix-term/src/commands/lsp.rs2
-rw-r--r--helix-tui/src/buffer.rs4
-rw-r--r--helix-view/src/editor.rs11
-rw-r--r--helix-view/src/gutter.rs3
-rw-r--r--helix-view/src/handlers/dap.rs4
-rw-r--r--rust-toolchain.toml4
10 files changed, 26 insertions, 31 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index e8c55fa4..22151c37 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -39,7 +39,7 @@ jobs:
uses: actions/checkout@v4
- name: Install stable toolchain
- uses: dtolnay/rust-toolchain@1.65
+ uses: dtolnay/rust-toolchain@1.70
- uses: Swatinem/rust-cache@v2
with:
@@ -70,7 +70,7 @@ jobs:
uses: actions/checkout@v4
- name: Install stable toolchain
- uses: dtolnay/rust-toolchain@1.65
+ uses: dtolnay/rust-toolchain@1.70
with:
components: rustfmt, clippy
@@ -97,7 +97,7 @@ jobs:
uses: actions/checkout@v4
- name: Install stable toolchain
- uses: dtolnay/rust-toolchain@1.65
+ uses: dtolnay/rust-toolchain@1.70
- uses: Swatinem/rust-cache@v2
with:
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index 36a1e5c9..8c7fc4e1 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -212,10 +212,7 @@ impl<'de> Deserialize<'de> for FileType {
{
match map.next_entry::<String, String>()? {
Some((key, suffix)) if key == "suffix" => Ok(FileType::Suffix({
- // FIXME: use `suffix.replace('/', std::path::MAIN_SEPARATOR_STR)`
- // if MSRV is updated to 1.68
- let mut separator = [0; 1];
- suffix.replace('/', std::path::MAIN_SEPARATOR.encode_utf8(&mut separator))
+ suffix.replace('/', std::path::MAIN_SEPARATOR_STR)
})),
Some((key, _value)) => Err(serde::de::Error::custom(format!(
"unknown key in `file-types` list: {}",
diff --git a/helix-term/Cargo.toml b/helix-term/Cargo.toml
index 378f25f8..672e6f84 100644
--- a/helix-term/Cargo.toml
+++ b/helix-term/Cargo.toml
@@ -10,7 +10,7 @@ repository = "https://github.com/helix-editor/helix"
homepage = "https://helix-editor.com"
include = ["src/**/*", "README.md"]
default-run = "hx"
-rust-version = "1.65"
+rust-version = "1.70"
[features]
default = ["git"]
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index bc54abaa..cd053266 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -1318,7 +1318,7 @@ fn extend_next_long_word_end(cx: &mut Context) {
extend_word_impl(cx, movement::move_next_long_word_end)
}
-/// Separate branch to find_char designed only for <ret> char.
+/// Separate branch to find_char designed only for `<ret>` char.
//
// This is necessary because the one document can have different line endings inside. And we
// cannot predict what character to find when <ret> is pressed. On the current line it can be `lf`
@@ -5606,12 +5606,18 @@ fn shell(cx: &mut compositor::Context, cmd: &str, behavior: &ShellBehavior) {
};
// These `usize`s cannot underflow because selection ranges cannot overlap.
- // Once the MSRV is 1.66.0 (mixed_integer_ops is stabilized), we can use checked
- // arithmetic to assert this.
- let anchor = (to as isize + offset - deleted_len as isize) as usize;
+ let anchor = to
+ .checked_add_signed(offset)
+ .expect("Selection ranges cannot overlap")
+ .checked_sub(deleted_len)
+ .expect("Selection ranges cannot overlap");
let new_range = Range::new(anchor, anchor + output_len).with_direction(range.direction());
ranges.push(new_range);
- offset = offset + output_len as isize - deleted_len as isize;
+ offset = offset
+ .checked_add_unsigned(output_len)
+ .expect("Selection ranges cannot overlap")
+ .checked_sub_unsigned(deleted_len)
+ .expect("Selection ranges cannot overlap");
changes.push((from, to, Some(output)));
}
diff --git a/helix-term/src/commands/lsp.rs b/helix-term/src/commands/lsp.rs
index 57be1267..87400461 100644
--- a/helix-term/src/commands/lsp.rs
+++ b/helix-term/src/commands/lsp.rs
@@ -49,7 +49,7 @@ use std::{
/// If there is no configured language server that supports the feature, this displays a status message.
/// Using this macro in a context where the editor automatically queries the LSP
/// (instead of when the user explicitly does so via a keybind like `gd`)
-/// will spam the "No configured language server supports <feature>" status message confusingly.
+/// will spam the "No configured language server supports \<feature>" status message confusingly.
#[macro_export]
macro_rules! language_server_with_feature {
($editor:expr, $doc:expr, $feature:expr) => {{
diff --git a/helix-tui/src/buffer.rs b/helix-tui/src/buffer.rs
index 93e9fcf9..51a864f5 100644
--- a/helix-tui/src/buffer.rs
+++ b/helix-tui/src/buffer.rs
@@ -213,7 +213,7 @@ impl Buffer {
&& y < self.area.bottom()
}
- /// Returns the index in the Vec<Cell> for the given global (x, y) coordinates.
+ /// Returns the index in the `Vec<Cell>` for the given global (x, y) coordinates.
///
/// Global coordinates are offset by the Buffer's area offset (`x`/`y`).
///
@@ -242,7 +242,7 @@ impl Buffer {
((y - self.area.y) as usize) * (self.area.width as usize) + ((x - self.area.x) as usize)
}
- /// Returns the index in the Vec<Cell> for the given global (x, y) coordinates,
+ /// Returns the index in the `Vec<Cell>` for the given global (x, y) coordinates,
/// or `None` if the coordinates are outside the buffer's area.
fn index_of_opt(&self, x: u16, y: u16) -> Option<usize> {
if self.in_bounds(x, y) {
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs
index 7af28ccc..5a81cb5d 100644
--- a/helix-view/src/editor.rs
+++ b/helix-view/src/editor.rs
@@ -727,7 +727,7 @@ pub struct WhitespaceCharacters {
impl Default for WhitespaceCharacters {
fn default() -> Self {
Self {
- space: '·', // U+00B7
+ space: '·', // U+00B7
nbsp: '⍽', // U+237D
tab: '→', // U+2192
newline: '⏎', // U+23CE
@@ -755,12 +755,13 @@ impl Default for IndentGuidesConfig {
}
/// Line ending configuration.
-#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Default, Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum LineEndingConfig {
/// The platform's native line ending.
///
/// `crlf` on Windows, otherwise `lf`.
+ #[default]
Native,
/// Line feed.
LF,
@@ -777,12 +778,6 @@ pub enum LineEndingConfig {
Nel,
}
-impl Default for LineEndingConfig {
- fn default() -> Self {
- LineEndingConfig::Native
- }
-}
-
impl From<LineEndingConfig> for LineEnding {
fn from(line_ending: LineEndingConfig) -> Self {
match line_ending {
diff --git a/helix-view/src/gutter.rs b/helix-view/src/gutter.rs
index 397dff4f..ebdac9e2 100644
--- a/helix-view/src/gutter.rs
+++ b/helix-view/src/gutter.rs
@@ -9,8 +9,7 @@ use crate::{
};
fn count_digits(n: usize) -> usize {
- // TODO: use checked_log10 when MSRV reaches 1.67
- std::iter::successors(Some(n), |&n| (n >= 10).then_some(n / 10)).count()
+ (usize::checked_ilog10(n).unwrap_or(0) + 1) as usize
}
pub type GutterFn<'doc> = Box<dyn FnMut(usize, bool, bool, &mut String) -> Option<Style> + 'doc>;
diff --git a/helix-view/src/handlers/dap.rs b/helix-view/src/handlers/dap.rs
index 3da01494..e1437bef 100644
--- a/helix-view/src/handlers/dap.rs
+++ b/helix-view/src/handlers/dap.rs
@@ -369,9 +369,7 @@ impl Editor {
{
Ok(process) => process,
Err(err) => {
- // TODO replace the pretty print {:?} with a regular format {}
- // when the MSRV is raised to 1.60.0
- self.set_error(format!("Error starting external terminal: {:?}", err));
+ self.set_error(format!("Error starting external terminal: {}", err));
return true;
}
};
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index 2abc5665..e661a111 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,3 +1,3 @@
[toolchain]
-channel = "1.65.0"
-components = ["rustfmt", "rust-src"]
+channel = "1.70.0"
+components = ["rustfmt", "rust-src", "clippy"]