Make vertical scroll by pixels instead of layout lines #223
Annotations
35 warnings
item in documentation is missing backticks:
src/shape_run_cache.rs#L36
warning: item in documentation is missing backticks
--> src/shape_run_cache.rs:36:61
|
36 | /// Remove anything in the cache with an age older than keep_ages
| ^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
36 | /// Remove anything in the cache with an age older than `keep_ages`
| ~~~~~~~~~~~
|
manual saturating arithmetic:
src/shape.rs#L377
warning: manual saturating arithmetic
--> src/shape.rs:377:19
|
377 | let end = min(attrs_range.end, end_run)
| ___________________^
378 | | .checked_sub(start_run)
379 | | .unwrap_or(0);
| |_________________________^ help: consider using `saturating_sub`: `min(attrs_range.end, end_run).saturating_sub(start_run)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic
|
manual saturating arithmetic:
src/shape.rs#L374
warning: manual saturating arithmetic
--> src/shape.rs:374:21
|
374 | let start = max(attrs_range.start, start_run)
| _____________________^
375 | | .checked_sub(start_run)
376 | | .unwrap_or(0);
| |_________________________^ help: consider using `saturating_sub`: `max(attrs_range.start, start_run).saturating_sub(start_run)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic
= note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default
|
single-character string constant used as pattern:
src/line_ending.rs#L66
warning: single-character string constant used as pattern
--> src/line_ending.rs:66:45
|
66 | } else if after.starts_with("\r") {
| ^^^^ help: consider using a `char`: `'\r'`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern
|
single-character string constant used as pattern:
src/line_ending.rs#L64
warning: single-character string constant used as pattern
--> src/line_ending.rs:64:45
|
64 | } else if after.starts_with("\n") {
| ^^^^ help: consider using a `char`: `'\n'`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern
= note: `#[warn(clippy::single_char_pattern)]` on by default
|
the borrowed expression implements the required traits:
src/line_ending.rs#L55
warning: the borrowed expression implements the required traits
--> src/line_ending.rs:55:49
|
55 | match self.string[start..self.end].find(&['\r', '\n']) {
| ^^^^^^^^^^^^^ help: change this to: `['\r', '\n']`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
= note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default
|
item in documentation is missing backticks:
src/layout.rs#L61
warning: item in documentation is missing backticks
--> src/layout.rs:61:25
|
61 | /// Cache key, see [CacheKey]
| ^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
61 | /// Cache key, see [`CacheKey`]
| ~~~~~~~~~~
|
item in documentation is missing backticks:
src/layout.rs#L31
warning: item in documentation is missing backticks
--> src/layout.rs:31:17
|
31 | /// Unicode BiDi embedding level, character is left-to-right if `level` is divisible by 2
| ^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
31 | /// Unicode `BiDi` embedding level, character is left-to-right if `level` is divisible by 2
| ~~~~~~
|
current MSRV (Minimum Supported Rust Version) is `1.65.0` but this item is stable since `1.66.0`:
src/font/fallback/mod.rs#L251
warning: current MSRV (Minimum Supported Rust Version) is `1.65.0` but this item is stable since `1.66.0`
--> src/font/fallback/mod.rs:251:67
|
251 | if let Some(fallback_info) = self.monospace_fallbacks.pop_first() {
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
|
current MSRV (Minimum Supported Rust Version) is `1.65.0` but this item is stable since `1.66.0`:
src/font/fallback/mod.rs#L148
warning: current MSRV (Minimum Supported Rust Version) is `1.65.0` but this item is stable since `1.66.0`
--> src/font/fallback/mod.rs:148:63
|
148 | if let Some(fallback_info) = self.monospace_fallbacks.pop_first() {
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
= note: `#[warn(clippy::incompatible_msrv)]` on by default
|
item in documentation is missing backticks:
src/edit/mod.rs#L293
warning: item in documentation is missing backticks
--> src/edit/mod.rs:293:56
|
293 | /// Insert text at specified cursor with specified attrs_list
| ^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
293 | /// Insert text at specified cursor with specified `attrs_list`
| ~~~~~~~~~~~~
|
consider adding a `;` to the last statement for consistent formatting:
src/edit/mod.rs#L190
warning: consider adding a `;` to the last statement for consistent formatting
--> src/edit/mod.rs:190:9
|
190 | self.with_buffer_mut(|buffer| buffer.set_redraw(redraw))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `self.with_buffer_mut(|buffer| buffer.set_redraw(redraw));`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
|
docs for function returning `Result` missing `# Errors` section:
src/edit/vi.rs#L1167
warning: docs for function returning `Result` missing `# Errors` section
--> src/edit/vi.rs:1167:5
|
1167 | / pub fn load_text<P: AsRef<std::path::Path>>(
1168 | | &mut self,
1169 | | path: P,
1170 | | attrs: crate::Attrs,
1171 | | ) -> std::io::Result<()> {
| |____________________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc
|
manual implementation of `Option::map`:
src/edit/vi.rs#L1132
warning: manual implementation of `Option::map`
--> src/edit/vi.rs:1132:37
|
1132 | / ... if let Some(last) = layout_runs.last() {
1133 | | ... Some(Action::Motion(Motion::GotoLine(
1134 | | ... (last.line_i + first.line_i) / 2,
1135 | | ... )))
1136 | | ... } else {
1137 | | ... None
1138 | | ... }
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map
= note: `#[warn(clippy::manual_map)]` on by default
help: try
|
1132 ~ layout_runs.last().map(|last| Action::Motion(Motion::GotoLine(
1133 + (last.line_i + first.line_i) / 2,
1134 + )))
|
|
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`:
src/edit/vi.rs#L1005
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/edit/vi.rs:1005:37
|
1005 | / ... match text[..cursor.index]
1006 | | ... .char_indices()
1007 | | ... .filter_map(|(i, c)| {
1008 | | ... if c == find_c {
... |
1021 | | ... None => {}
1022 | | ... }
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try
|
1005 ~ if let Some(i) = text[..cursor.index]
1006 + .char_indices()
1007 + .filter_map(|(i, c)| {
1008 + if c == find_c {
1009 + let end = i + c.len_utf8();
1010 + if end < cursor.index {
1011 + return Some(end);
1012 + }
1013 + }
1014 + None
1015 + })
1016 + .last() {
1017 + cursor.index = i;
1018 + }
|
|
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`:
src/edit/vi.rs#L985
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/edit/vi.rs:985:37
|
985 | / ... match text[..cursor.index]
986 | | ... .char_indices()
987 | | ... .filter(|&(_, c)| c == find_c)
988 | | ... .last()
... |
993 | | ... None => {}
994 | | ... }
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try
|
985 ~ if let Some((i, _)) = text[..cursor.index]
986 + .char_indices()
987 + .filter(|&(_, c)| c == find_c)
988 + .last() {
989 + cursor.index = i;
990 + }
|
|
called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead:
src/edit/vi.rs#L879
warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead
--> src/edit/vi.rs:879:43
|
879 | ... match text[cursor.index..]
| _____________________________^
880 | | ... .char_indices()
881 | | ... .filter(|&(i, c)| i > 0 && c == find_c)
882 | | ... .next()
| |_________________________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next
= note: `#[warn(clippy::filter_next)]` on by default
help: try
|
879 ~ match text[cursor.index..]
880 + .char_indices().find(|&(i, c)| i > 0 && c == find_c)
|
|
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`:
src/edit/vi.rs#L879
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/edit/vi.rs:879:37
|
879 | / ... match text[cursor.index..]
880 | | ... .char_indices()
881 | | ... .filter(|&(i, c)| i > 0 && c == find_c)
882 | | ... .next()
... |
887 | | ... None => {}
888 | | ... }
| |_______________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try
|
879 ~ if let Some((i, _)) = text[cursor.index..]
880 + .char_indices()
881 + .filter(|&(i, c)| i > 0 && c == find_c)
882 + .next() {
883 + cursor.index += i;
884 + }
|
|
match expression looks like `matches!` macro:
src/edit/vi.rs#L645
warning: match expression looks like `matches!` macro
--> src/edit/vi.rs:645:29
|
645 | let has_selection = match editor.selection() {
| _____________________________^
646 | | Selection::None => false,
647 | | _ => true,
648 | | };
| |_________^ help: try: `!matches!(editor.selection(), Selection::None)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro
= note: `#[warn(clippy::match_like_matches_macro)]` on by default
|
docs for function returning `Result` missing `# Errors` section:
src/edit/vi.rs#L213
warning: docs for function returning `Result` missing `# Errors` section
--> src/edit/vi.rs:213:5
|
213 | / pub fn load_text<P: AsRef<std::path::Path>>(
214 | | &mut self,
215 | | font_system: &mut FontSystem,
216 | | path: P,
217 | | attrs: crate::Attrs,
218 | | ) -> std::io::Result<()> {
| |____________________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc
note: the lint level is defined here
--> src/lib.rs:86:9
|
86 | #![warn(clippy::missing_errors_doc)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
consider adding a `;` to the last statement for consistent formatting:
src/edit/syntect.rs#L128
warning: consider adding a `;` to the last statement for consistent formatting
--> src/edit/syntect.rs:128:13
|
128 | buffer.set_text(font_system, &text, attrs, Shaping::Advanced)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `buffer.set_text(font_system, &text, attrs, Shaping::Advanced);`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
note: the lint level is defined here
--> src/lib.rs:90:9
|
90 | #![warn(clippy::semicolon_if_nothing_returned)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`:
src/edit/editor.rs#L521
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
--> src/edit/editor.rs:521:9
|
521 | / match self.change.take() {
522 | | Some(pending) => {
523 | | if !pending.items.is_empty() {
524 | | //TODO: is this a good idea?
... |
530 | | None => {}
531 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
= note: `#[warn(clippy::single_match)]` on by default
help: try
|
521 ~ if let Some(pending) = self.change.take() {
522 + if !pending.items.is_empty() {
523 + //TODO: is this a good idea?
524 + log::warn!("pending change caused apply_change to be ignored!");
525 + self.change = Some(pending);
526 + return false;
527 + }
528 + }
|
|
item in documentation is missing backticks:
src/cursor.rs#L92
warning: item in documentation is missing backticks
--> src/cursor.rs:92:63
|
92 | /// Move cursor to next character ([Self::Right] in LTR, [Self::Left] in RTL)
| ^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
92 | /// Move cursor to next character ([Self::Right] in LTR, [`Self::Left`] in RTL)
| ~~~~~~~~~~~~
|
item in documentation is missing backticks:
src/cursor.rs#L92
warning: item in documentation is missing backticks
--> src/cursor.rs:92:41
|
92 | /// Move cursor to next character ([Self::Right] in LTR, [Self::Left] in RTL)
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
92 | /// Move cursor to next character ([`Self::Right`] in LTR, [Self::Left] in RTL)
| ~~~~~~~~~~~~~
|
item in documentation is missing backticks:
src/cursor.rs#L90
warning: item in documentation is missing backticks
--> src/cursor.rs:90:66
|
90 | /// Move cursor to previous character ([Self::Left] in LTR, [Self::Right] in RTL)
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
90 | /// Move cursor to previous character ([Self::Left] in LTR, [`Self::Right`] in RTL)
| ~~~~~~~~~~~~~
|
item in documentation is missing backticks:
src/cursor.rs#L90
warning: item in documentation is missing backticks
--> src/cursor.rs:90:45
|
90 | /// Move cursor to previous character ([Self::Left] in LTR, [Self::Right] in RTL)
| ^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
help: try
|
90 | /// Move cursor to previous character ([`Self::Left`] in LTR, [Self::Right] in RTL)
| ~~~~~~~~~~~~
|
docs for function which may panic missing `# Panics` section:
src/buffer_line.rs#L233
warning: docs for function which may panic missing `# Panics` section
--> src/buffer_line.rs:233:5
|
233 | / pub fn layout_in_buffer(
234 | | &mut self,
235 | | scratch: &mut ShapeBuffer,
236 | | font_system: &mut FontSystem,
... |
240 | | match_mono_width: Option<f32>,
241 | | ) -> &[LayoutLine] {
| |______________________^
|
note: first possible panic found here
--> src/buffer_line.rs:257:9
|
257 | self.layout_opt.as_ref().expect("layout not found")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
|
docs for function which may panic missing `# Panics` section:
src/buffer_line.rs#L190
warning: docs for function which may panic missing `# Panics` section
--> src/buffer_line.rs:190:5
|
190 | / pub fn shape_in_buffer(
191 | | &mut self,
192 | | scratch: &mut ShapeBuffer,
193 | | font_system: &mut FontSystem,
194 | | ) -> &ShapeLine {
| |___________________^
|
note: first possible panic found here
--> src/buffer_line.rs:205:9
|
205 | self.shape_opt.as_ref().expect("shape not found")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
|
docs for function which may panic missing `# Panics` section:
src/buffer.rs#L398
warning: docs for function which may panic missing `# Panics` section
--> src/buffer.rs:398:5
|
398 | pub fn shape_until_scroll(&mut self, font_system: &mut FontSystem, prune: bool) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: first possible panic found here
--> src/buffer.rs:443:30
|
443 | let layout = self
| ______________________________^
444 | | .line_layout(font_system, line_i)
445 | | .expect("shape_until_scroll invalid line");
| |______________________________________________________________^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
|
the loop variable `layout_i` is only used to index `layout`:
src/buffer.rs#L327
warning: the loop variable `layout_i` is only used to index `layout`
--> src/buffer.rs:327:29
|
327 | for layout_i in 0..layout_cursor.layout {
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop
= note: `#[warn(clippy::needless_range_loop)]` on by default
help: consider using an iterator
|
327 | for <item> in layout.iter().take(layout_cursor.layout) {
| ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
docs for function which may panic missing `# Panics` section:
src/buffer.rs#L308
warning: docs for function which may panic missing `# Panics` section
--> src/buffer.rs:308:5
|
308 | / pub fn shape_until_cursor(
309 | | &mut self,
310 | | font_system: &mut FontSystem,
311 | | cursor: Cursor,
312 | | prune: bool,
313 | | ) {
| |_____^
|
note: first possible panic found here
--> src/buffer.rs:318:29
|
318 | let layout_cursor = self
| _____________________________^
319 | | .layout_cursor(font_system, cursor)
320 | | .expect("shape_until_cursor invalid cursor");
| |________________________________________________________^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
|
item in documentation is missing backticks:
src/buffer.rs#L203
warning: item in documentation is missing backticks
--> src/buffer.rs:203:10
|
203 | /// [BufferLine]s (or paragraphs) of text in the buffer
| ^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown
note: the lint level is defined here
--> src/lib.rs:84:9
|
84 | #![warn(clippy::doc_markdown)]
| ^^^^^^^^^^^^^^^^^^^^
help: try
|
203 | /// [`BufferLine`]s (or paragraphs) of text in the buffer
| ~~~~~~~~~~~~
|
docs for function which may panic missing `# Panics` section:
src/buffer.rs#L40
warning: docs for function which may panic missing `# Panics` section
--> src/buffer.rs:40:5
|
40 | pub fn highlight(&self, cursor_start: Cursor, cursor_end: Cursor) -> Option<(f32, f32)> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: first possible panic found here
--> src/buffer.rs:62:25
|
62 | let x_end = x_end.expect("end of cursor not found");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
|
docs for function which may panic missing `# Panics` section:
src/attrs.rs#L340
warning: docs for function which may panic missing `# Panics` section
--> src/attrs.rs:340:5
|
340 | pub fn split_off(&mut self, index: usize) -> Self {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: first possible panic found here
--> src/attrs.rs:356:34
|
356 | let (range, attrs) = self
| __________________________________^
357 | | .spans
358 | | .get_key_value(&key.start)
359 | | .map(|v| (v.0.clone(), v.1.clone()))
360 | | .expect("attrs span not found");
| |_______________________________________________^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc
note: the lint level is defined here
--> src/lib.rs:88:9
|
88 | #![warn(clippy::missing_panics_doc)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
pages
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3, peaceiris/actions-gh-pages@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
|