[INFO] cloning repository https://github.com/JoyinJoester/Fuckvim [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/JoyinJoester/Fuckvim" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoyinJoester%2FFuckvim", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoyinJoester%2FFuckvim'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3339c6e11d8f46f0b2ecc9ced9e664c56a0cd470 [INFO] checking JoyinJoester/Fuckvim against try#73ffebff6f34db7eb167bf9edcf2afa19c3073e9 for pr-147841 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoyinJoester%2FFuckvim" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/JoyinJoester/Fuckvim [INFO] finished tweaking git repo https://github.com/JoyinJoester/Fuckvim [INFO] tweaked toml for git repo https://github.com/JoyinJoester/Fuckvim written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/JoyinJoester/Fuckvim on toolchain 73ffebff6f34db7eb167bf9edcf2afa19c3073e9 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+73ffebff6f34db7eb167bf9edcf2afa19c3073e9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/JoyinJoester/Fuckvim already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+73ffebff6f34db7eb167bf9edcf2afa19c3073e9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: file `/workspace/builds/worker-0-tc2/source/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `bin` target `fkvim` [INFO] [stderr] * `bin` target `fvim` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+73ffebff6f34db7eb167bf9edcf2afa19c3073e9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 558b9d6790b5c5767475d5cfc374aa5902c25368984344289835ead244fa5570 [INFO] running `Command { std: "docker" "start" "-a" "558b9d6790b5c5767475d5cfc374aa5902c25368984344289835ead244fa5570", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "558b9d6790b5c5767475d5cfc374aa5902c25368984344289835ead244fa5570", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "558b9d6790b5c5767475d5cfc374aa5902c25368984344289835ead244fa5570", kill_on_drop: false }` [INFO] [stdout] 558b9d6790b5c5767475d5cfc374aa5902c25368984344289835ead244fa5570 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+73ffebff6f34db7eb167bf9edcf2afa19c3073e9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 855095ce32576c480ffa224e8da969df26b52b663ecd4ca1bbda4c88ed29054b [INFO] running `Command { std: "docker" "start" "-a" "855095ce32576c480ffa224e8da969df26b52b663ecd4ca1bbda4c88ed29054b", kill_on_drop: false }` [INFO] [stderr] warning: file `/opt/rustwide/workdir/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `bin` target `fkvim` [INFO] [stderr] * `bin` target `fvim` [INFO] [stderr] Compiling cc v1.0.106 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Compiling rustix v1.0.7 [INFO] [stderr] Compiling bitflags v2.9.0 [INFO] [stderr] Compiling linux-raw-sys v0.9.4 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Checking libc v0.2.172 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling env_home v0.1.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking log v0.4.27 [INFO] [stderr] Compiling syn v2.0.101 [INFO] [stderr] Compiling proc-macro2 v0.4.30 [INFO] [stderr] Checking smallvec v1.15.0 [INFO] [stderr] Compiling syn v0.15.44 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Checking signal-hook v0.3.18 [INFO] [stderr] Checking lock_api v0.4.12 [INFO] [stderr] Checking hashbrown v0.15.3 [INFO] [stderr] Checking pin-project-lite v0.2.16 [INFO] [stderr] Checking allocator-api2 v0.2.21 [INFO] [stderr] Checking foldhash v0.1.5 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking once_cell v1.21.3 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Checking equivalent v1.0.2 [INFO] [stderr] Checking rustix v0.38.44 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Compiling lua-src v547.0.0 [INFO] [stderr] Checking dirs-sys v0.4.1 [INFO] [stderr] Checking inotify-sys v0.1.5 [INFO] [stderr] Checking slab v0.4.9 [INFO] [stderr] Compiling quote v0.6.13 [INFO] [stderr] Checking castaway v0.2.3 [INFO] [stderr] Checking zerocopy v0.8.25 [INFO] [stderr] Checking bstr v1.12.0 [INFO] [stderr] Checking linux-raw-sys v0.4.15 [INFO] [stderr] Compiling tree-sitter v0.20.10 [INFO] [stderr] Compiling tree-sitter v0.22.6 [INFO] [stderr] Compiling tree-sitter-cpp v0.20.5 [INFO] [stderr] Compiling tree-sitter-go v0.19.1 [INFO] [stderr] Compiling tree-sitter-python v0.20.4 [INFO] [stderr] Compiling tree-sitter-c v0.20.8 [INFO] [stderr] Compiling tree-sitter-javascript v0.20.4 [INFO] [stderr] Compiling tree-sitter-rust v0.20.4 [INFO] [stderr] Compiling tree-sitter-toml v0.20.0 [INFO] [stderr] Compiling tree-sitter-html v0.19.0 [INFO] [stderr] Compiling tree-sitter-css v0.19.0 [INFO] [stderr] Compiling tree-sitter-json v0.20.2 [INFO] [stderr] Compiling tree-sitter-lua v0.0.18 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking lru v0.12.5 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking unicode-segmentation v1.12.0 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking ryu v1.0.20 [INFO] [stderr] Checking unicode-width v0.1.14 [INFO] [stderr] Checking itoa v1.0.15 [INFO] [stderr] Compiling which v7.0.3 [INFO] [stderr] Checking option-ext v0.2.0 [INFO] [stderr] Checking compact_str v0.8.1 [INFO] [stderr] Checking inotify v0.9.6 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Compiling luajit-src v210.5.12+a4f56a4 [INFO] [stderr] Checking hashbrown v0.13.2 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking crossterm v0.27.0 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Compiling mlua-sys v0.6.7 [INFO] [stderr] Compiling dlopen_derive v0.1.4 [INFO] [stderr] Checking crossbeam-utils v0.8.21 [INFO] [stderr] Checking socket2 v0.5.9 [INFO] [stderr] Checking filetime v0.2.25 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Checking is-terminal v0.4.16 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking static_assertions v1.1.0 [INFO] [stderr] Checking same-file v1.0.6 [INFO] [stderr] Checking cassowary v0.3.0 [INFO] [stderr] Checking humantime v2.2.0 [INFO] [stderr] Checking dlopen v0.1.8 [INFO] [stderr] Checking ropey v1.6.1 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking walkdir v2.5.0 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Checking notify v6.1.1 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking lru v0.10.1 [INFO] [stderr] Checking globset v0.4.16 [INFO] [stderr] Checking directories v5.0.1 [INFO] [stderr] Checking dirs v5.0.1 [INFO] [stderr] Checking itertools v0.11.0 [INFO] [stderr] Checking unicode-truncate v1.1.0 [INFO] [stderr] Checking termcolor v1.4.1 [INFO] [stderr] Checking rustc-hash v2.1.1 [INFO] [stderr] Checking unicode-width v0.2.0 [INFO] [stderr] Checking str_indices v0.4.4 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking bytes v1.10.1 [INFO] [stderr] Checking iana-time-zone v0.1.63 [INFO] [stderr] Checking anyhow v1.0.98 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling strum_macros v0.25.3 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling async-trait v0.1.88 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Checking tokio v1.45.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling instability v0.3.7 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Checking strum v0.25.0 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking ratatui v0.24.0 [INFO] [stderr] Checking ratatui v0.29.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking serde_json v1.0.140 [INFO] [stderr] Checking mlua v0.9.9 [INFO] [stderr] Checking fkvim v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 506 | crossterm::event::KeyEventKind::Press => "按下", [INFO] [stdout] | ------------------------------------- matches some of the same values [INFO] [stdout] 507 | crossterm::event::KeyEventKind::Release => "释放", [INFO] [stdout] | --------------------------------------- matches some of the same values [INFO] [stdout] 508 | crossterm::event::KeyEventKind::Repeat => "重复", [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 506 | crossterm::event::KeyEventKind::Press => "按下", [INFO] [stdout] | ------------------------------------- matches some of the same values [INFO] [stdout] 507 | crossterm::event::KeyEventKind::Release => "释放", [INFO] [stdout] | --------------------------------------- matches some of the same values [INFO] [stdout] 508 | crossterm::event::KeyEventKind::Repeat => "重复", [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyBindings` is never constructed [INFO] [stdout] --> src/config/keybindings.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyBindings { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/config/keybindings.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl KeyBindings { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 50 | /// 创建新的键绑定配置 [INFO] [stdout] 51 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_mapping(&mut self, mode: &str, key: &str, command: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn get_mapping(&self, mode: &str, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn remove_mapping(&mut self, mode: &str, key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mode_mappings(&self, mode: &str) -> Option<&HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn clear_mode_mappings(&mut self, mode: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn merge(&mut self, other: &KeyBindings) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn from_config(config: &crate::config::Config) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `move_cursor_home`, `move_cursor_end`, `page_up`, and `page_down` are never used [INFO] [stdout] --> src/editor/mod.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Editor { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | fn move_cursor_end(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | fn page_up(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | fn page_down(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CACHE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const CACHE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CACHE_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const MAX_CACHE_SIZE: usize = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSER_POOL_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const MAX_PARSER_POOL_SIZE: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSING_TIME_MS` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAX_PARSING_TIME_MS: u64 = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAILURE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const FAILURE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RETRY_COUNT` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_RETRY_COUNT: u32 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_INCREMENTAL_DIFF_RATIO` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MAX_INCREMENTAL_DIFF_RATIO: f32 = 0.3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParserPool` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | struct ParserPool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `initialize`, `get_parser`, and `return_parser` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl ParserPool { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 33 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn initialize(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn get_parser(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn return_parser(&self, mut parser: Parser) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:109:8 [INFO] [stdout] | [INFO] [stdout] 108 | impl CacheStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 109 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn record_hit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn record_miss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn record_eviction(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | fn record_fallback(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn maybe_report(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn report(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveFallbackChain` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AdaptiveFallbackChain { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 173 | impl AdaptiveFallbackChain { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 174 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn next_strategy(&mut self, language: &str, content_length: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn analyze_content_for_strategy(&self, content: &str, language: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | fn adjust_scores_for_language(&self, scores: &mut HashMap, language: &str, content_length: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn record_success(&self, language: &str, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn record_failure(&self, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategySuccessRate` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | struct StrategySuccessRate { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_success`, `record_failure`, and `success_rate` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:405:8 [INFO] [stdout] | [INFO] [stdout] 404 | impl StrategySuccessRate { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 405 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn record_success(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn success_rate(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FallbackStrategy` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:443:10 [INFO] [stdout] | [INFO] [stdout] 443 | pub enum FallbackStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:464:12 [INFO] [stdout] | [INFO] [stdout] 462 | impl FallbackStrategy { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 463 | /// 获取所有策略 [INFO] [stdout] 464 | pub fn all_strategies() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | fn apply(&self, content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | fn apply_simple_keyword(content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | fn apply_regex_based(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn apply_fragment_parsing(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | fn apply_heuristic(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn apply_mimic_similar(_content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_highlight` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:584:4 [INFO] [stdout] | [INFO] [stdout] 584 | fn create_highlight(style: HighlightStyle, abs_pos: usize, text: &str, line_starts: &[usize]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_line_starts` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:616:4 [INFO] [stdout] | [INFO] [stdout] 616 | fn get_line_starts(content: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `loaded_modules` and `loaded_nvim_plugins` are never read [INFO] [stdout] --> src/plugin/lua/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct LuaEnv { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | loaded_modules: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | loaded_nvim_plugins: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_dir` is never read [INFO] [stdout] --> src/plugin/package_manager.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct PackageManager { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | temp_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_key_event` is never used [INFO] [stdout] --> src/ui/mod.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn handle_key_event(editor: &mut Editor, key: KeyEvent) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1155:4 [INFO] [stdout] | [INFO] [stdout] 1155 | fn draw_search_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_highlight_spans` is never used [INFO] [stdout] --> src/ui/mod.rs:1340:4 [INFO] [stdout] | [INFO] [stdout] 1340 | fn get_highlight_spans(buffer: &Buffer, line: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_syntax_highlight` is never used [INFO] [stdout] --> src/ui/mod.rs:1353:4 [INFO] [stdout] | [INFO] [stdout] 1353 | fn render_syntax_highlight(line: &str, line_idx: usize, line_highlights: &[HighlightSpan], get_highlight_style: impl Fn(&HighlightStyle) ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1527:4 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_filenames_panel` is never used [INFO] [stdout] --> src/ui/mod.rs:1575:4 [INFO] [stdout] | [INFO] [stdout] 1575 | fn render_filenames_panel(f: &mut Frame, rect: Rect, editor: &Editor) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 48 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 64 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/plugin/lua/mod.rs:424:24 [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result { [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1417:30 [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1473:32 [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1527:31 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 506 | crossterm::event::KeyEventKind::Press => "按下", [INFO] [stdout] | ------------------------------------- matches some of the same values [INFO] [stdout] 507 | crossterm::event::KeyEventKind::Release => "释放", [INFO] [stdout] | --------------------------------------- matches some of the same values [INFO] [stdout] 508 | crossterm::event::KeyEventKind::Repeat => "重复", [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyBindings` is never constructed [INFO] [stdout] --> src/config/keybindings.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyBindings { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/config/keybindings.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl KeyBindings { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 50 | /// 创建新的键绑定配置 [INFO] [stdout] 51 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_mapping(&mut self, mode: &str, key: &str, command: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn get_mapping(&self, mode: &str, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn remove_mapping(&mut self, mode: &str, key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mode_mappings(&self, mode: &str) -> Option<&HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn clear_mode_mappings(&mut self, mode: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn merge(&mut self, other: &KeyBindings) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn from_config(config: &crate::config::Config) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `move_cursor_home`, `move_cursor_end`, `page_up`, and `page_down` are never used [INFO] [stdout] --> src/editor/mod.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Editor { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | fn move_cursor_end(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | fn page_up(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | fn page_down(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CACHE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const CACHE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CACHE_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const MAX_CACHE_SIZE: usize = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSER_POOL_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const MAX_PARSER_POOL_SIZE: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSING_TIME_MS` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAX_PARSING_TIME_MS: u64 = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAILURE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const FAILURE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RETRY_COUNT` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_RETRY_COUNT: u32 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_INCREMENTAL_DIFF_RATIO` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MAX_INCREMENTAL_DIFF_RATIO: f32 = 0.3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParserPool` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | struct ParserPool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `initialize`, `get_parser`, and `return_parser` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl ParserPool { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 33 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn initialize(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn get_parser(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn return_parser(&self, mut parser: Parser) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:109:8 [INFO] [stdout] | [INFO] [stdout] 108 | impl CacheStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 109 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn record_hit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn record_miss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn record_eviction(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | fn record_fallback(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn maybe_report(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn report(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveFallbackChain` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AdaptiveFallbackChain { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 173 | impl AdaptiveFallbackChain { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 174 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn next_strategy(&mut self, language: &str, content_length: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn analyze_content_for_strategy(&self, content: &str, language: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | fn adjust_scores_for_language(&self, scores: &mut HashMap, language: &str, content_length: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn record_success(&self, language: &str, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn record_failure(&self, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategySuccessRate` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | struct StrategySuccessRate { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_success`, `record_failure`, and `success_rate` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:405:8 [INFO] [stdout] | [INFO] [stdout] 404 | impl StrategySuccessRate { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 405 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn record_success(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn success_rate(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FallbackStrategy` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:443:10 [INFO] [stdout] | [INFO] [stdout] 443 | pub enum FallbackStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:464:12 [INFO] [stdout] | [INFO] [stdout] 462 | impl FallbackStrategy { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 463 | /// 获取所有策略 [INFO] [stdout] 464 | pub fn all_strategies() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | fn apply(&self, content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | fn apply_simple_keyword(content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | fn apply_regex_based(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn apply_fragment_parsing(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | fn apply_heuristic(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn apply_mimic_similar(_content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_highlight` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:584:4 [INFO] [stdout] | [INFO] [stdout] 584 | fn create_highlight(style: HighlightStyle, abs_pos: usize, text: &str, line_starts: &[usize]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_line_starts` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:616:4 [INFO] [stdout] | [INFO] [stdout] 616 | fn get_line_starts(content: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `loaded_modules` and `loaded_nvim_plugins` are never read [INFO] [stdout] --> src/plugin/lua/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct LuaEnv { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | loaded_modules: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | loaded_nvim_plugins: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_dir` is never read [INFO] [stdout] --> src/plugin/package_manager.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct PackageManager { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | temp_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_key_event` is never used [INFO] [stdout] --> src/ui/mod.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn handle_key_event(editor: &mut Editor, key: KeyEvent) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1155:4 [INFO] [stdout] | [INFO] [stdout] 1155 | fn draw_search_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_highlight_spans` is never used [INFO] [stdout] --> src/ui/mod.rs:1340:4 [INFO] [stdout] | [INFO] [stdout] 1340 | fn get_highlight_spans(buffer: &Buffer, line: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_syntax_highlight` is never used [INFO] [stdout] --> src/ui/mod.rs:1353:4 [INFO] [stdout] | [INFO] [stdout] 1353 | fn render_syntax_highlight(line: &str, line_idx: usize, line_highlights: &[HighlightSpan], get_highlight_style: impl Fn(&HighlightStyle) ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1527:4 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_filenames_panel` is never used [INFO] [stdout] --> src/ui/mod.rs:1575:4 [INFO] [stdout] | [INFO] [stdout] 1575 | fn render_filenames_panel(f: &mut Frame, rect: Rect, editor: &Editor) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 48 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 64 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/plugin/lua/mod.rs:424:24 [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1417:30 [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1473:32 [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1527:31 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyBindings` is never constructed [INFO] [stdout] --> src/config/keybindings.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyBindings { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/config/keybindings.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl KeyBindings { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 50 | /// 创建新的键绑定配置 [INFO] [stdout] 51 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_mapping(&mut self, mode: &str, key: &str, command: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn get_mapping(&self, mode: &str, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn remove_mapping(&mut self, mode: &str, key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mode_mappings(&self, mode: &str) -> Option<&HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn clear_mode_mappings(&mut self, mode: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn merge(&mut self, other: &KeyBindings) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn from_config(config: &crate::config::Config) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `move_cursor_home`, `move_cursor_end`, `page_up`, and `page_down` are never used [INFO] [stdout] --> src/editor/mod.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Editor { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | fn move_cursor_end(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | fn page_up(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | fn page_down(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CACHE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const CACHE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CACHE_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const MAX_CACHE_SIZE: usize = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSER_POOL_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const MAX_PARSER_POOL_SIZE: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSING_TIME_MS` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAX_PARSING_TIME_MS: u64 = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAILURE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const FAILURE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RETRY_COUNT` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_RETRY_COUNT: u32 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_INCREMENTAL_DIFF_RATIO` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MAX_INCREMENTAL_DIFF_RATIO: f32 = 0.3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParserPool` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | struct ParserPool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `initialize`, `get_parser`, and `return_parser` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl ParserPool { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 33 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn initialize(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn get_parser(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn return_parser(&self, mut parser: Parser) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:109:8 [INFO] [stdout] | [INFO] [stdout] 108 | impl CacheStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 109 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn record_hit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn record_miss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn record_eviction(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | fn record_fallback(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn maybe_report(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn report(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveFallbackChain` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AdaptiveFallbackChain { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 173 | impl AdaptiveFallbackChain { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 174 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn next_strategy(&mut self, language: &str, content_length: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn analyze_content_for_strategy(&self, content: &str, language: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | fn adjust_scores_for_language(&self, scores: &mut HashMap, language: &str, content_length: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn record_success(&self, language: &str, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn record_failure(&self, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategySuccessRate` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | struct StrategySuccessRate { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_success`, `record_failure`, and `success_rate` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:405:8 [INFO] [stdout] | [INFO] [stdout] 404 | impl StrategySuccessRate { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 405 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn record_success(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn success_rate(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FallbackStrategy` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:443:10 [INFO] [stdout] | [INFO] [stdout] 443 | pub enum FallbackStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:464:12 [INFO] [stdout] | [INFO] [stdout] 462 | impl FallbackStrategy { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 463 | /// 获取所有策略 [INFO] [stdout] 464 | pub fn all_strategies() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | fn apply(&self, content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | fn apply_simple_keyword(content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | fn apply_regex_based(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn apply_fragment_parsing(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | fn apply_heuristic(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn apply_mimic_similar(_content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_highlight` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:584:4 [INFO] [stdout] | [INFO] [stdout] 584 | fn create_highlight(style: HighlightStyle, abs_pos: usize, text: &str, line_starts: &[usize]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_line_starts` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:616:4 [INFO] [stdout] | [INFO] [stdout] 616 | fn get_line_starts(content: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `loaded_modules` and `loaded_nvim_plugins` are never read [INFO] [stdout] --> src/plugin/lua/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct LuaEnv { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | loaded_modules: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | loaded_nvim_plugins: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_dir` is never read [INFO] [stdout] --> src/plugin/package_manager.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct PackageManager { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | temp_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_key_event` is never used [INFO] [stdout] --> src/ui/mod.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn handle_key_event(editor: &mut Editor, key: KeyEvent) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1155:4 [INFO] [stdout] | [INFO] [stdout] 1155 | fn draw_search_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_highlight_spans` is never used [INFO] [stdout] --> src/ui/mod.rs:1340:4 [INFO] [stdout] | [INFO] [stdout] 1340 | fn get_highlight_spans(buffer: &Buffer, line: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_syntax_highlight` is never used [INFO] [stdout] --> src/ui/mod.rs:1353:4 [INFO] [stdout] | [INFO] [stdout] 1353 | fn render_syntax_highlight(line: &str, line_idx: usize, line_highlights: &[HighlightSpan], get_highlight_style: impl Fn(&HighlightStyle) ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1527:4 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_filenames_panel` is never used [INFO] [stdout] --> src/ui/mod.rs:1575:4 [INFO] [stdout] | [INFO] [stdout] 1575 | fn render_filenames_panel(f: &mut Frame, rect: Rect, editor: &Editor) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 48 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 64 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/plugin/lua/mod.rs:424:24 [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1417:30 [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1473:32 [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1527:31 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Status` [INFO] [stdout] --> src/editor/mod.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | pub use status::{Status, StatusMessageType}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Layout`, `Rect`, and `Tab` [INFO] [stdout] --> src/editor/mod.rs:22:36 [INFO] [stdout] | [INFO] [stdout] 22 | pub use window::{Window, WindowId, Tab, TabId, Layout, Rect, Split, TabManager}; [INFO] [stdout] | ^^^ ^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FKVimError` [INFO] [stdout] --> src/main.rs:16:21 [INFO] [stdout] | [INFO] [stdout] 16 | use error::{Result, FKVimError}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Status` [INFO] [stdout] --> src/editor/mod.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | pub use status::{Status, StatusMessageType}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Layout`, `Rect`, and `Tab` [INFO] [stdout] --> src/editor/mod.rs:22:36 [INFO] [stdout] | [INFO] [stdout] 22 | pub use window::{Window, WindowId, Tab, TabId, Layout, Rect, Split, TabManager}; [INFO] [stdout] | ^^^ ^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FKVimError` [INFO] [stdout] --> src/main.rs:16:21 [INFO] [stdout] | [INFO] [stdout] 16 | use error::{Result, FKVimError}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Status` [INFO] [stdout] --> src/editor/mod.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | pub use status::{Status, StatusMessageType}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Layout`, `Rect`, and `Tab` [INFO] [stdout] --> src/editor/mod.rs:22:36 [INFO] [stdout] | [INFO] [stdout] 22 | pub use window::{Window, WindowId, Tab, TabId, Layout, Rect, Split, TabManager}; [INFO] [stdout] | ^^^ ^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FKVimError` [INFO] [stdout] --> src/main.rs:16:21 [INFO] [stdout] | [INFO] [stdout] 16 | use error::{Result, FKVimError}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Status` [INFO] [stdout] --> src/editor/mod.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | pub use status::{Status, StatusMessageType}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Layout`, `Rect`, and `Tab` [INFO] [stdout] --> src/editor/mod.rs:22:36 [INFO] [stdout] | [INFO] [stdout] 22 | pub use window::{Window, WindowId, Tab, TabId, Layout, Rect, Split, TabManager}; [INFO] [stdout] | ^^^ ^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FKVimError` [INFO] [stdout] --> src/main.rs:16:21 [INFO] [stdout] | [INFO] [stdout] 16 | use error::{Result, FKVimError}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 506 | crossterm::event::KeyEventKind::Press => "按下", [INFO] [stdout] | ------------------------------------- matches some of the same values [INFO] [stdout] 507 | crossterm::event::KeyEventKind::Release => "释放", [INFO] [stdout] | --------------------------------------- matches some of the same values [INFO] [stdout] 508 | crossterm::event::KeyEventKind::Repeat => "重复", [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `start_line`, `start_col`, `end_line`, and `end_col` are never read [INFO] [stdout] --> src/buffer/mod.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub struct SearchResult { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 61 | /// 起始行 [INFO] [stdout] 62 | pub start_line: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | pub start_col: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub end_line: usize, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub end_col: usize, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pattern`, `case_sensitive`, `use_regex`, `whole_word`, and `in_selection` are never read [INFO] [stdout] --> src/buffer/mod.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 76 | pub struct SearchQuery { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 77 | /// 搜索文本或正则表达式 [INFO] [stdout] 78 | pub pattern: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub case_sensitive: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub use_regex: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub whole_word: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub in_selection: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchQuery` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/buffer/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 93 | impl SearchQuery { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 94 | /// 创建新的搜索查询 [INFO] [stdout] 95 | pub fn new(pattern: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/buffer/mod.rs:297:12 [INFO] [stdout] | [INFO] [stdout] 106 | impl Buffer { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 297 | pub fn get_lines(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 328 | pub fn apply_syntax_highlight(&mut self, highlighter: &Highlighter) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 347 | pub fn undo(&mut self, cursor_line: &mut usize, cursor_col: &mut usize) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 388 | pub fn redo(&mut self, cursor_line: &mut usize, cursor_col: &mut usize) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 430 | pub fn search(&mut self, query: &str, case_sensitive: bool) -> Result { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 491 | pub fn current_search_result(&self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 501 | pub fn next_search_result(&mut self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 520 | pub fn prev_search_result(&mut self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn clear_search(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | pub fn advanced_search(&mut self, query: SearchQuery) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | fn regex_search(&self, query: &SearchQuery, results: &mut Vec) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | fn text_search(&self, query: &SearchQuery, results: &mut Vec) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 663 | pub fn replace_current(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 717 | pub fn replace_all(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 763 | pub fn replace_regex(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 839 | fn insert_text(&mut self, line: usize, col: usize, text: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 844 | fn delete_text(&mut self, start_line: usize, start_col: usize, end_line: usize, end_col: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 849 | pub fn find(&mut self, query: &str, options: &crate::editor::SearchOptions) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 864 | pub fn replace_term(&mut self, line: usize, col: usize, cursor_line: &mut usize, cursor_col: &mut usize, search_term: &str, new_text:... [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 901 | pub fn load_from_file(&mut self, path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UserCommand` is never constructed [INFO] [stdout] --> src/command/mod.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct UserCommand { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `UserCommandType` is never used [INFO] [stdout] --> src/command/mod.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum UserCommandType { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CommandType` is never used [INFO] [stdout] --> src/command/mod.rs:34:10 [INFO] [stdout] | [INFO] [stdout] 34 | pub enum CommandType { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BuiltinCommand` is never used [INFO] [stdout] --> src/command/mod.rs:46:10 [INFO] [stdout] | [INFO] [stdout] 46 | pub enum BuiltinCommand { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchFlags` is never constructed [INFO] [stdout] --> src/command/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 95 | pub struct SearchFlags { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SubstituteFlags` is never constructed [INFO] [stdout] --> src/command/mod.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 132 | pub struct SubstituteFlags { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandParser` is never constructed [INFO] [stdout] --> src/command/mod.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 166 | pub struct CommandParser { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `command_manager`, `command_manager_mut`, `parse`, `get_completions`, and `parse_builtin_command` are never used [INFO] [stdout] --> src/command/mod.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 170 | impl CommandParser { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 171 | /// 创建命令解析器 [INFO] [stdout] 172 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn command_manager(&self) -> &CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub fn command_manager_mut(&mut self) -> &mut CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn parse(&self, command_str: &str) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn get_completions(&self, partial: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | fn parse_builtin_command(&self, cmd: &str, args: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandManager` is never constructed [INFO] [stdout] --> src/command/mod.rs:518:12 [INFO] [stdout] | [INFO] [stdout] 518 | pub struct CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/command/mod.rs:525:12 [INFO] [stdout] | [INFO] [stdout] 523 | impl CommandManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 524 | /// 创建命令管理器 [INFO] [stdout] 525 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 532 | pub fn register_command(&mut self, name: &str, command: UserCommand) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 542 | pub fn get_command(&self, name: &str) -> Option<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 547 | pub fn has_command(&self, name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | pub fn unregister_command(&mut self, name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 562 | pub fn list_commands(&self) -> Vec<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 567 | pub fn fuzzy_match(&self, partial_name: &str) -> Vec<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 580 | pub fn get_completion_list(&self, partial_name: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 594 | pub fn register_terminal_commands(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandExecutor` is never constructed [INFO] [stdout] --> src/command/mod.rs:648:12 [INFO] [stdout] | [INFO] [stdout] 648 | pub struct CommandExecutor { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `execute`, and `execute_builtin` are never used [INFO] [stdout] --> src/command/mod.rs:655:12 [INFO] [stdout] | [INFO] [stdout] 653 | impl CommandExecutor { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 654 | /// 创建命令执行器 [INFO] [stdout] 655 | pub fn new(editor: &mut Editor) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 662 | pub fn execute(&self, cmd_type: CommandType) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 677 | fn execute_builtin(&self, editor: &mut Editor, cmd: BuiltinCommand) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_TOGGLE_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:812:11 [INFO] [stdout] | [INFO] [stdout] 812 | pub const CMD_TOGGLE_TERMINAL: &str = "toggle_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_FOCUS_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:813:11 [INFO] [stdout] | [INFO] [stdout] 813 | pub const CMD_FOCUS_TERMINAL: &str = "focus_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_EXIT_TERMINAL_FOCUS` is never used [INFO] [stdout] --> src/command/mod.rs:814:11 [INFO] [stdout] | [INFO] [stdout] 814 | pub const CMD_EXIT_TERMINAL_FOCUS: &str = "exit_terminal_focus"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_CLEAR_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:815:11 [INFO] [stdout] | [INFO] [stdout] 815 | pub const CMD_CLEAR_TERMINAL: &str = "clear_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_RESTART_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:816:11 [INFO] [stdout] | [INFO] [stdout] 816 | pub const CMD_RESTART_TERMINAL: &str = "restart_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_SEND_TO_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:817:11 [INFO] [stdout] | [INFO] [stdout] 817 | pub const CMD_SEND_TO_TERMINAL: &str = "send_to_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `description`, `usage`, and `examples` are never read [INFO] [stdout] --> src/command/help.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct CommandHelp { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 11 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub usage: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 17 | pub examples: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandHelp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `name` and `description` are never used [INFO] [stdout] --> src/command/help.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 57 | impl HelpCategory { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] 58 | /// 获取分类名称 [INFO] [stdout] 59 | pub fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn description(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/command/help.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 100 | impl HelpSystem { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn get_command(&self, name: &str) -> Option<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn fuzzy_match(&self, partial_name: &str) -> Vec<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 229 | pub fn get_category_commands(&self, category: &HelpCategory) -> Vec<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn format_command_help(&self, help: &CommandHelp) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn format_category_help(&self, category: &HelpCategory) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 279 | pub fn format_help_overview(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 311 | pub fn get_general_help(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | pub fn get_topic_help(&self, topic: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_option` and `get_all_options` are never used [INFO] [stdout] --> src/config/mod.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 246 | impl Config { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] 247 | /// 获取指定选项的值 [INFO] [stdout] 248 | pub fn get_option(&self, option: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | pub fn get_all_options(&self) -> Vec<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyBindings` is never constructed [INFO] [stdout] --> src/config/keybindings.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyBindings { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/config/keybindings.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl KeyBindings { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 50 | /// 创建新的键绑定配置 [INFO] [stdout] 51 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_mapping(&mut self, mode: &str, key: &str, command: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn get_mapping(&self, mode: &str, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn remove_mapping(&mut self, mode: &str, key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mode_mappings(&self, mode: &str) -> Option<&HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn clear_mode_mappings(&mut self, mode: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn merge(&mut self, other: &KeyBindings) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn from_config(config: &crate::config::Config) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `keymaps`, `highlighter`, `screen_height`, `repeat_count`, `last_command`, and `help_system` are never read [INFO] [stdout] --> src/editor/mod.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Editor { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 60 | pub keymaps: HashMap>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub highlighter: Highlighter, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub screen_height: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub repeat_count: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub last_command: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub help_system: crate::command::help::HelpSystem, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Error` is never constructed [INFO] [stdout] --> src/editor/mod.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 131 | pub enum EditorStatus { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 134 | Error(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EditorStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timestamp` is never read [INFO] [stdout] --> src/editor/mod.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct StatusMessage { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 146 | pub timestamp: Instant, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchOptions` is never constructed [INFO] [stdout] --> src/editor/mod.rs:150:12 [INFO] [stdout] | [INFO] [stdout] 150 | pub struct SearchOptions { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `ReplaceConfirm` is never constructed [INFO] [stdout] --> src/editor/mod.rs:177:5 [INFO] [stdout] | [INFO] [stdout] 166 | pub enum CommandLineMode { [INFO] [stdout] | --------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 177 | ReplaceConfirm, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandLineMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EditorRef` is never constructed [INFO] [stdout] --> src/editor/mod.rs:193:12 [INFO] [stdout] | [INFO] [stdout] 193 | pub struct EditorRef<'a> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `open_file`, `close_file_browser`, and `set_status_message` are never used [INFO] [stdout] --> src/editor/mod.rs:201:12 [INFO] [stdout] | [INFO] [stdout] 200 | impl<'a> EditorRef<'a> { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] 201 | pub fn open_file(&self, path: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | pub fn close_file_browser(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub fn set_status_message(&mut self, content: impl Into, msg_type: StatusMessageType) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/editor/mod.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Editor { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | fn move_cursor_end(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | fn page_up(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | fn page_down(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 518 | pub fn load_lazy_plugin(&mut self, name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1279 | pub fn close_current_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1322 | pub fn close_all_buffers(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1338 | pub fn previous_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1353 | pub fn switch_to_buffer(&mut self, idx: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1374 | pub fn new_buffer(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1393 | pub fn next_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1408 | pub fn reload_current_file(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_tab_ids` and `get_tab` are never used [INFO] [stdout] --> src/editor/window.rs:114:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl TabManager { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn get_tab_ids(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn get_tab(&self, tab_id: TabId) -> Result<&Tab> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/editor/window.rs:185:12 [INFO] [stdout] | [INFO] [stdout] 143 | impl Tab { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn split_horizontal(&mut self, buffer_idx: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn split_vertical(&mut self, buffer_idx: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 251 | pub fn close_active_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | pub fn focus_left_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 313 | pub fn focus_right_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 319 | pub fn focus_up_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 325 | pub fn focus_down_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `title` is never read [INFO] [stdout] --> src/editor/window.rs:440:9 [INFO] [stdout] | [INFO] [stdout] 434 | pub struct Window { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 440 | pub title: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_scroll` and `set_size` are never used [INFO] [stdout] --> src/editor/window.rs:492:12 [INFO] [stdout] | [INFO] [stdout] 455 | impl Window { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 492 | pub fn set_scroll(&mut self, line: usize, col: usize) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 497 | pub fn set_size(&mut self, width: usize, height: usize) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `HorizontalTriple`, `VerticalTriple`, and `Grid` are never constructed [INFO] [stdout] --> src/editor/window.rs:561:5 [INFO] [stdout] | [INFO] [stdout] 553 | pub enum Layout { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 561 | HorizontalTriple, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 562 | /// 垂直三分(左中右三个窗口) [INFO] [stdout] 563 | VerticalTriple, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 564 | /// 四分格(2x2网格) [INFO] [stdout] 565 | Grid, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Layout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Status` is never constructed [INFO] [stdout] --> src/editor/status.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Status { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `info`, `warning`, `error`, and `success` are never used [INFO] [stdout] --> src/editor/status.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Status { [INFO] [stdout] | ----------- associated functions in this implementation [INFO] [stdout] 26 | /// 创建一个新的普通信息消息 [INFO] [stdout] 27 | pub fn info>(message: T) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn warning>(message: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn error>(message: T) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn success>(message: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `command_mappings` is never read [INFO] [stdout] --> src/input/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct KeyHandler { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | command_mappings: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_command_buffer` and `set_mapping` are never used [INFO] [stdout] --> src/input/mod.rs:453:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl KeyHandler { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn get_command_buffer(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub fn set_mapping(&mut self, mode: &str, key: String, command: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RustDynlib` is never constructed [INFO] [stdout] --> src/plugin/mod.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum PluginType { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 18 | RustDynlib, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/plugin/mod.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | Local(PathBuf), [INFO] [stdout] | ----- ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PluginSource` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 25 - Local(PathBuf), [INFO] [stdout] 25 + Local(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Git` is never constructed [INFO] [stdout] --> src/plugin/mod.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum PluginSource { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | Git { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PluginSource` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/plugin/mod.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct PluginMetadata { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 37 | /// 插件名称 [INFO] [stdout] 38 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub version: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub author: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub plugin_type: PluginType, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub source: PluginSource, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub lazy: bool, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub dependencies: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `root` is never read [INFO] [stdout] --> src/plugin/mod.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct NvimPluginDirs { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 85 | /// 根目录 [INFO] [stdout] 86 | pub root: PathBuf, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `install_plugins`, `install_plugin`, `create_plugin_metadata`, `load_lazy_plugin`, `get_plugins`, and `is_loading` are never used [INFO] [stdout] --> src/plugin/mod.rs:158:12 [INFO] [stdout] | [INFO] [stdout] 95 | impl PluginManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn install_plugins(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | fn install_plugin(&mut self, name: &str, source: &PluginSource) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | fn create_plugin_metadata(&self, name: &str, path: &Path, source: PluginSource, lazy: bool) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 402 | pub fn load_lazy_plugin(&mut self, name: &str, lua_env: &mut lua::LuaEnv) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 434 | pub fn get_plugins(&self) -> &[PluginMetadata] { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 439 | pub fn is_loading(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `config`, `loaded_modules`, and `loaded_nvim_plugins` are never read [INFO] [stdout] --> src/plugin/lua/mod.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct LuaEnv { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 14 | config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | loaded_modules: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | loaded_nvim_plugins: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `setup_neovim_require`, `get_globals`, and `set_config` are never used [INFO] [stdout] --> src/plugin/lua/mod.rs:369:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl LuaEnv { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 369 | pub fn setup_neovim_require(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | pub fn set_config(&mut self, option: &str, value: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `handle_vim_command` and `run_plugin_init_script` are never used [INFO] [stdout] --> src/plugin/nvim_compat/mod.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl NeovimCompat { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn handle_vim_command(&self, cmd: &str, lua_env: &mut LuaEnv) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn run_plugin_init_script(&self, plugin_path: &Path, lua_env: &mut LuaEnv) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_dir` is never read [INFO] [stdout] --> src/plugin/package_manager.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct PackageManager { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | temp_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_plugin_config` and `load_lazy_plugin` are never used [INFO] [stdout] --> src/plugin/package_manager.rs:252:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl PackageManager { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 252 | fn find_plugin_config(&self, name: &str) -> Option<&PluginConfig> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub fn load_lazy_plugin(&self, name: &str, plugin_manager: &mut PluginManager, lua_env: &mut LuaEnv) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_key_event` is never used [INFO] [stdout] --> src/ui/mod.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn handle_key_event(editor: &mut Editor, key: KeyEvent) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1155:4 [INFO] [stdout] | [INFO] [stdout] 1155 | fn draw_search_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_highlight_spans` is never used [INFO] [stdout] --> src/ui/mod.rs:1340:4 [INFO] [stdout] | [INFO] [stdout] 1340 | fn get_highlight_spans(buffer: &Buffer, line: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_syntax_highlight` is never used [INFO] [stdout] --> src/ui/mod.rs:1353:4 [INFO] [stdout] | [INFO] [stdout] 1353 | fn render_syntax_highlight(line: &str, line_idx: usize, line_highlights: &[HighlightSpan], get_highlight_style: impl Fn(&HighlightStyle) ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1527:4 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_filenames_panel` is never used [INFO] [stdout] --> src/ui/mod.rs:1575:4 [INFO] [stdout] | [INFO] [stdout] 1575 | fn render_filenames_panel(f: &mut Frame, rect: Rect, editor: &Editor) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `RegexError` and `Generic` are never constructed [INFO] [stdout] --> src/error/mod.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum FKVimError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 34 | RegexError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | Generic(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FKVimError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `process_output`, `visible_lines`, `close`, `scroll_up`, `scroll_down`, and `restart` are never used [INFO] [stdout] --> src/terminal/mod.rs:440:12 [INFO] [stdout] | [INFO] [stdout] 45 | impl TerminalSession { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn process_output(&mut self, line: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn visible_lines(&self, height: u16) -> Vec<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | pub fn close(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 507 | pub fn scroll_up(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 516 | pub fn scroll_down(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 531 | pub async fn restart(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Horizontal`, `Vertical`, and `Grid` are never constructed [INFO] [stdout] --> src/terminal/mod.rs:585:5 [INFO] [stdout] | [INFO] [stdout] 581 | pub enum TerminalLayout { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 585 | Horizontal, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 586 | /// 垂直分割(左右布局) [INFO] [stdout] 587 | Vertical, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 588 | /// 四象限分割 [INFO] [stdout] 589 | Grid, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TerminalLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layout` is never read [INFO] [stdout] --> src/terminal/mod.rs:605:9 [INFO] [stdout] | [INFO] [stdout] 593 | pub struct Terminal { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 605 | pub layout: TerminalLayout, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/terminal/mod.rs:665:12 [INFO] [stdout] | [INFO] [stdout] 612 | impl Terminal { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 665 | pub fn switch_tab(&mut self, index: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 695 | pub fn close_current_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 727 | pub fn rename_current_tab(&mut self, new_name: String) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 782 | pub fn set_layout(&mut self, layout: TerminalLayout) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 823 | pub fn next_session(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 841 | pub fn prev_session(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 863 | pub fn start(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 877 | pub fn visible_lines(&self) -> Vec<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 888 | pub fn resize(&mut self, height: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 898 | pub fn close(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 957 | pub fn scroll_up(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 966 | pub fn scroll_down(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1015 | pub fn get_tab_names(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1020 | pub fn get_tab_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1025 | pub fn get_active_session(&self) -> Option<&TerminalSession> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1044 | pub fn get_layout_sessions(&self) -> Vec<&TerminalSession> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1051 | pub fn is_active_session(&self, session_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1135 | pub fn next_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1165 | pub fn prev_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1195 | pub fn next_split(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1221 | pub fn create_tab(&mut self, name: String) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1244 | pub fn init(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/highlight/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum HighlightStyle { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 11 | /// 普通文本 [INFO] [stdout] 12 | Normal, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | Preprocessor, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | Special, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | Error, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | Search, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | CurrentLine, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | Identifier, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | Property, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | Field, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | Method, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | MethodCall, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | Parameter, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | Text, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | LineNumber, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | LineNumberActive, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HighlightStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `is_dark` are never read [INFO] [stdout] --> src/highlight/mod.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 108 | pub struct Theme { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 109 | /// 主题名称 [INFO] [stdout] 110 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | is_dark: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `foreground`, `background`, and `attributes` are never read [INFO] [stdout] --> src/highlight/mod.rs:121:5 [INFO] [stdout] | [INFO] [stdout] 119 | pub struct StyleAttributes { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 120 | /// 前景色 [INFO] [stdout] 121 | foreground: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 122 | /// 背景色 [INFO] [stdout] 123 | background: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 124 | /// 文本属性 (粗体、斜体等) [INFO] [stdout] 125 | attributes: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StyleAttributes` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `foreground`, `background`, and `attributes` are never used [INFO] [stdout] --> src/highlight/mod.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl StyleAttributes { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn foreground(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn background(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn attributes(&self) -> &[Attribute] { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `get_style`, `is_dark`, `name`, `default_light`, and `from_config` are never used [INFO] [stdout] --> src/highlight/mod.rs:170:12 [INFO] [stdout] | [INFO] [stdout] 154 | impl Theme { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn get_style(&self, style: &HighlightStyle) -> Option<&StyleAttributes> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn is_dark(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn default_light() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn from_config(config: &HashMap, name: &str, is_dark: bool) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_style_name` is never used [INFO] [stdout] --> src/highlight/mod.rs:329:4 [INFO] [stdout] | [INFO] [stdout] 329 | fn parse_style_name(name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_color` is never used [INFO] [stdout] --> src/highlight/mod.rs:354:4 [INFO] [stdout] | [INFO] [stdout] 354 | fn parse_color(color_name: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `highlight` and `name` are never used [INFO] [stdout] --> src/highlight/mod.rs:393:8 [INFO] [stdout] | [INFO] [stdout] 391 | pub trait SyntaxHighlighter: Send + Sync { [INFO] [stdout] | ----------------- methods in this trait [INFO] [stdout] 392 | /// 高亮文本 [INFO] [stdout] 393 | fn highlight(&self, text: &str) -> Result>; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 396 | fn name(&self) -> &str; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_theme` is never read [INFO] [stdout] --> src/highlight/mod.rs:404:5 [INFO] [stdout] | [INFO] [stdout] 400 | pub struct Highlighter { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 404 | current_theme: Theme, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_highlighter_for_file`, `get_highlighter_for_filetype`, `highlight`, `set_theme`, `current_theme`, and `get_style_attributes` are never used [INFO] [stdout] --> src/highlight/mod.rs:435:12 [INFO] [stdout] | [INFO] [stdout] 407 | impl Highlighter { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 435 | pub fn get_highlighter_for_file(&self, file_path: &Path) -> Option<&dyn SyntaxHighlighter> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 443 | pub fn get_highlighter_for_filetype(&self, file_type: &str) -> Option<&dyn SyntaxHighlighter> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn highlight(&self, text: &str, file_type: Option<&str>, file_path: Option<&Path>) -> Result> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 468 | pub fn set_theme(&mut self, theme: Theme) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn current_theme(&self) -> &Theme { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn get_style_attributes(&self, style: &HighlightStyle) -> Option<&StyleAttributes> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CACHE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const CACHE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CACHE_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const MAX_CACHE_SIZE: usize = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSER_POOL_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const MAX_PARSER_POOL_SIZE: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSING_TIME_MS` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAX_PARSING_TIME_MS: u64 = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAILURE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const FAILURE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RETRY_COUNT` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_RETRY_COUNT: u32 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_INCREMENTAL_DIFF_RATIO` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MAX_INCREMENTAL_DIFF_RATIO: f32 = 0.3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParserPool` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | struct ParserPool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `initialize`, `get_parser`, and `return_parser` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl ParserPool { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 33 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn initialize(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn get_parser(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn return_parser(&self, mut parser: Parser) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:109:8 [INFO] [stdout] | [INFO] [stdout] 108 | impl CacheStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 109 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn record_hit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn record_miss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn record_eviction(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | fn record_fallback(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn maybe_report(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn report(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveFallbackChain` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AdaptiveFallbackChain { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 173 | impl AdaptiveFallbackChain { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 174 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn next_strategy(&mut self, language: &str, content_length: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn analyze_content_for_strategy(&self, content: &str, language: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | fn adjust_scores_for_language(&self, scores: &mut HashMap, language: &str, content_length: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn record_success(&self, language: &str, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn record_failure(&self, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategySuccessRate` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | struct StrategySuccessRate { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_success`, `record_failure`, and `success_rate` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:405:8 [INFO] [stdout] | [INFO] [stdout] 404 | impl StrategySuccessRate { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 405 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn record_success(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn success_rate(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FallbackStrategy` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:443:10 [INFO] [stdout] | [INFO] [stdout] 443 | pub enum FallbackStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:464:12 [INFO] [stdout] | [INFO] [stdout] 462 | impl FallbackStrategy { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 463 | /// 获取所有策略 [INFO] [stdout] 464 | pub fn all_strategies() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | fn apply(&self, content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | fn apply_simple_keyword(content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | fn apply_regex_based(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn apply_fragment_parsing(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | fn apply_heuristic(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn apply_mimic_similar(_content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_highlight` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:584:4 [INFO] [stdout] | [INFO] [stdout] 584 | fn create_highlight(style: HighlightStyle, abs_pos: usize, text: &str, line_starts: &[usize]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_line_starts` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:616:4 [INFO] [stdout] | [INFO] [stdout] 616 | fn get_line_starts(content: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `undo` and `redo` are never used [INFO] [stdout] --> src/history/mod.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 2 | pub trait ReversibleEdit: std::fmt::Debug { [INFO] [stdout] | -------------- methods in this trait [INFO] [stdout] 3 | /// 撤销操作 [INFO] [stdout] 4 | fn undo(&self) -> Operation; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 7 | fn redo(&self) -> Operation; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/history/mod.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | Insert(usize, usize, String), [INFO] [stdout] | ------ ^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 14 - Insert(usize, usize, String), [INFO] [stdout] 14 + Insert((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/history/mod.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | Delete(usize, usize, String), [INFO] [stdout] | ------ ^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 17 - Delete(usize, usize, String), [INFO] [stdout] 17 + Delete((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Replace` is never constructed [INFO] [stdout] --> src/history/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum Operation { [INFO] [stdout] | --------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 20 | Replace(usize, usize, String, String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `undo_op` and `redo_op` are never read [INFO] [stdout] --> src/history/mod.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct EditOperation { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 42 | /// 撤销操作 [INFO] [stdout] 43 | pub undo_op: Operation, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub redo_op: Operation, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EditOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/history/mod.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 81 | impl History { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn can_undo(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn can_redo(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn undo(&mut self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn redo(&mut self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn finish_undo_redo(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn start_compound_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn end_compound_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompoundEdit` is never constructed [INFO] [stdout] --> src/history/mod.rs:203:12 [INFO] [stdout] | [INFO] [stdout] 203 | pub struct CompoundEdit { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Time`, `Size`, and `Type` are never constructed [INFO] [stdout] --> src/file_browser/mod.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum SortMode { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 13 | Time, [INFO] [stdout] | ^^^^ [INFO] [stdout] 14 | /// 按文件大小排序 [INFO] [stdout] 15 | Size, [INFO] [stdout] | ^^^^ [INFO] [stdout] 16 | /// 按文件类型排序 [INFO] [stdout] 17 | Type, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SortMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Simple` is never constructed [INFO] [stdout] --> src/file_browser/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub enum ViewMode { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] 23 | /// 简单视图,仅显示文件名 [INFO] [stdout] 24 | Simple, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ViewMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `show_hidden` and `pattern` are never read [INFO] [stdout] --> src/file_browser/mod.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct FileFilter { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 32 | /// 隐藏或显示隐藏文件 [INFO] [stdout] 33 | pub show_hidden: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 34 | /// 文件通配符 [INFO] [stdout] 35 | pub pattern: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `size` is never read [INFO] [stdout] --> src/file_browser/mod.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct FileEntry { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 65 | pub size: u64, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/file_browser/mod.rs:282:12 [INFO] [stdout] | [INFO] [stdout] 157 | impl FileBrowser { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 282 | pub fn move_selection(&mut self, offset: isize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 299 | pub fn enter_selected(&mut self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | pub fn go_parent(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub fn get_display_name(&self, idx: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | pub fn toggle_sort_mode(&mut self, mode: SortMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 482 | pub fn set_filter(&mut self, filter: String) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 488 | pub fn add_to_bookmarks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 493 | pub fn remove_from_bookmarks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 498 | pub fn toggle_hidden_files(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 504 | pub fn update_preview(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | pub fn toggle_preview(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | pub fn delete_selected(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 646 | pub fn rename_selected(&mut self, new_name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 681 | pub fn copy_selected(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 702 | pub fn paste_file(&mut self, source_path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 746 | fn copy_dir_recursively(&self, src: &Path, dst: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 765 | pub fn visible_items(&self, height: usize) -> Vec<&FileItem> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 776 | pub fn ensure_selection_visible(&mut self, height: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 798 | pub fn goto_bookmark(&mut self, bookmark: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 922 | pub fn search_files(&mut self, search_term: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 957 | pub fn clear_selections(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/plugin/lua/mod.rs:424:24 [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1417:30 [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1473:32 [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1527:31 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 48 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 64 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 506 | crossterm::event::KeyEventKind::Press => "按下", [INFO] [stdout] | ------------------------------------- matches some of the same values [INFO] [stdout] 507 | crossterm::event::KeyEventKind::Release => "释放", [INFO] [stdout] | --------------------------------------- matches some of the same values [INFO] [stdout] 508 | crossterm::event::KeyEventKind::Repeat => "重复", [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 506 | crossterm::event::KeyEventKind::Press => "按下", [INFO] [stdout] | ------------------------------------- matches some of the same values [INFO] [stdout] 507 | crossterm::event::KeyEventKind::Release => "释放", [INFO] [stdout] | --------------------------------------- matches some of the same values [INFO] [stdout] 508 | crossterm::event::KeyEventKind::Repeat => "重复", [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `start_line`, `start_col`, `end_line`, and `end_col` are never read [INFO] [stdout] --> src/buffer/mod.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub struct SearchResult { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 61 | /// 起始行 [INFO] [stdout] 62 | pub start_line: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | pub start_col: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub end_line: usize, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub end_col: usize, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pattern`, `case_sensitive`, `use_regex`, `whole_word`, and `in_selection` are never read [INFO] [stdout] --> src/buffer/mod.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 76 | pub struct SearchQuery { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 77 | /// 搜索文本或正则表达式 [INFO] [stdout] 78 | pub pattern: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub case_sensitive: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub use_regex: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub whole_word: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub in_selection: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchQuery` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/buffer/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 93 | impl SearchQuery { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 94 | /// 创建新的搜索查询 [INFO] [stdout] 95 | pub fn new(pattern: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/buffer/mod.rs:297:12 [INFO] [stdout] | [INFO] [stdout] 106 | impl Buffer { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 297 | pub fn get_lines(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 328 | pub fn apply_syntax_highlight(&mut self, highlighter: &Highlighter) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 347 | pub fn undo(&mut self, cursor_line: &mut usize, cursor_col: &mut usize) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 388 | pub fn redo(&mut self, cursor_line: &mut usize, cursor_col: &mut usize) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 430 | pub fn search(&mut self, query: &str, case_sensitive: bool) -> Result { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 491 | pub fn current_search_result(&self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 501 | pub fn next_search_result(&mut self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 520 | pub fn prev_search_result(&mut self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn clear_search(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | pub fn advanced_search(&mut self, query: SearchQuery) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | fn regex_search(&self, query: &SearchQuery, results: &mut Vec) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | fn text_search(&self, query: &SearchQuery, results: &mut Vec) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 663 | pub fn replace_current(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 717 | pub fn replace_all(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 763 | pub fn replace_regex(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 839 | fn insert_text(&mut self, line: usize, col: usize, text: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 844 | fn delete_text(&mut self, start_line: usize, start_col: usize, end_line: usize, end_col: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 849 | pub fn find(&mut self, query: &str, options: &crate::editor::SearchOptions) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 864 | pub fn replace_term(&mut self, line: usize, col: usize, cursor_line: &mut usize, cursor_col: &mut usize, search_term: &str, new_text:... [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 901 | pub fn load_from_file(&mut self, path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UserCommand` is never constructed [INFO] [stdout] --> src/command/mod.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct UserCommand { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `UserCommandType` is never used [INFO] [stdout] --> src/command/mod.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum UserCommandType { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CommandType` is never used [INFO] [stdout] --> src/command/mod.rs:34:10 [INFO] [stdout] | [INFO] [stdout] 34 | pub enum CommandType { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BuiltinCommand` is never used [INFO] [stdout] --> src/command/mod.rs:46:10 [INFO] [stdout] | [INFO] [stdout] 46 | pub enum BuiltinCommand { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchFlags` is never constructed [INFO] [stdout] --> src/command/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 95 | pub struct SearchFlags { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SubstituteFlags` is never constructed [INFO] [stdout] --> src/command/mod.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 132 | pub struct SubstituteFlags { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandParser` is never constructed [INFO] [stdout] --> src/command/mod.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 166 | pub struct CommandParser { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `command_manager`, `command_manager_mut`, `parse`, `get_completions`, and `parse_builtin_command` are never used [INFO] [stdout] --> src/command/mod.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 170 | impl CommandParser { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 171 | /// 创建命令解析器 [INFO] [stdout] 172 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn command_manager(&self) -> &CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub fn command_manager_mut(&mut self) -> &mut CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn parse(&self, command_str: &str) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn get_completions(&self, partial: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | fn parse_builtin_command(&self, cmd: &str, args: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandManager` is never constructed [INFO] [stdout] --> src/command/mod.rs:518:12 [INFO] [stdout] | [INFO] [stdout] 518 | pub struct CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/command/mod.rs:525:12 [INFO] [stdout] | [INFO] [stdout] 523 | impl CommandManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 524 | /// 创建命令管理器 [INFO] [stdout] 525 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 532 | pub fn register_command(&mut self, name: &str, command: UserCommand) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 542 | pub fn get_command(&self, name: &str) -> Option<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 547 | pub fn has_command(&self, name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | pub fn unregister_command(&mut self, name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 562 | pub fn list_commands(&self) -> Vec<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 567 | pub fn fuzzy_match(&self, partial_name: &str) -> Vec<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 580 | pub fn get_completion_list(&self, partial_name: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 594 | pub fn register_terminal_commands(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandExecutor` is never constructed [INFO] [stdout] --> src/command/mod.rs:648:12 [INFO] [stdout] | [INFO] [stdout] 648 | pub struct CommandExecutor { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `execute`, and `execute_builtin` are never used [INFO] [stdout] --> src/command/mod.rs:655:12 [INFO] [stdout] | [INFO] [stdout] 653 | impl CommandExecutor { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 654 | /// 创建命令执行器 [INFO] [stdout] 655 | pub fn new(editor: &mut Editor) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 662 | pub fn execute(&self, cmd_type: CommandType) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 677 | fn execute_builtin(&self, editor: &mut Editor, cmd: BuiltinCommand) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_TOGGLE_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:812:11 [INFO] [stdout] | [INFO] [stdout] 812 | pub const CMD_TOGGLE_TERMINAL: &str = "toggle_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_FOCUS_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:813:11 [INFO] [stdout] | [INFO] [stdout] 813 | pub const CMD_FOCUS_TERMINAL: &str = "focus_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_EXIT_TERMINAL_FOCUS` is never used [INFO] [stdout] --> src/command/mod.rs:814:11 [INFO] [stdout] | [INFO] [stdout] 814 | pub const CMD_EXIT_TERMINAL_FOCUS: &str = "exit_terminal_focus"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_CLEAR_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:815:11 [INFO] [stdout] | [INFO] [stdout] 815 | pub const CMD_CLEAR_TERMINAL: &str = "clear_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_RESTART_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:816:11 [INFO] [stdout] | [INFO] [stdout] 816 | pub const CMD_RESTART_TERMINAL: &str = "restart_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_SEND_TO_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:817:11 [INFO] [stdout] | [INFO] [stdout] 817 | pub const CMD_SEND_TO_TERMINAL: &str = "send_to_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `description`, `usage`, and `examples` are never read [INFO] [stdout] --> src/command/help.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct CommandHelp { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 11 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub usage: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 17 | pub examples: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandHelp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `name` and `description` are never used [INFO] [stdout] --> src/command/help.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 57 | impl HelpCategory { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] 58 | /// 获取分类名称 [INFO] [stdout] 59 | pub fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn description(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/command/help.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 100 | impl HelpSystem { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn get_command(&self, name: &str) -> Option<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn fuzzy_match(&self, partial_name: &str) -> Vec<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 229 | pub fn get_category_commands(&self, category: &HelpCategory) -> Vec<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn format_command_help(&self, help: &CommandHelp) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn format_category_help(&self, category: &HelpCategory) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 279 | pub fn format_help_overview(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 311 | pub fn get_general_help(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | pub fn get_topic_help(&self, topic: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_option` and `get_all_options` are never used [INFO] [stdout] --> src/config/mod.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 246 | impl Config { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] 247 | /// 获取指定选项的值 [INFO] [stdout] 248 | pub fn get_option(&self, option: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | pub fn get_all_options(&self) -> Vec<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyBindings` is never constructed [INFO] [stdout] --> src/config/keybindings.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyBindings { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/config/keybindings.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl KeyBindings { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 50 | /// 创建新的键绑定配置 [INFO] [stdout] 51 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_mapping(&mut self, mode: &str, key: &str, command: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn get_mapping(&self, mode: &str, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn remove_mapping(&mut self, mode: &str, key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mode_mappings(&self, mode: &str) -> Option<&HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn clear_mode_mappings(&mut self, mode: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn merge(&mut self, other: &KeyBindings) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn from_config(config: &crate::config::Config) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `keymaps`, `highlighter`, `screen_height`, `repeat_count`, `last_command`, and `help_system` are never read [INFO] [stdout] --> src/editor/mod.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Editor { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 60 | pub keymaps: HashMap>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub highlighter: Highlighter, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub screen_height: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub repeat_count: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub last_command: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub help_system: crate::command::help::HelpSystem, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ui/mod.rs:509:13 [INFO] [stdout] | [INFO] [stdout] 506 | crossterm::event::KeyEventKind::Press => "按下", [INFO] [stdout] | ------------------------------------- matches some of the same values [INFO] [stdout] 507 | crossterm::event::KeyEventKind::Release => "释放", [INFO] [stdout] | --------------------------------------- matches some of the same values [INFO] [stdout] 508 | crossterm::event::KeyEventKind::Repeat => "重复", [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] 509 | _ => "未知", [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Error` is never constructed [INFO] [stdout] --> src/editor/mod.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 131 | pub enum EditorStatus { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 134 | Error(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EditorStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timestamp` is never read [INFO] [stdout] --> src/editor/mod.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct StatusMessage { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 146 | pub timestamp: Instant, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchOptions` is never constructed [INFO] [stdout] --> src/editor/mod.rs:150:12 [INFO] [stdout] | [INFO] [stdout] 150 | pub struct SearchOptions { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `ReplaceConfirm` is never constructed [INFO] [stdout] --> src/editor/mod.rs:177:5 [INFO] [stdout] | [INFO] [stdout] 166 | pub enum CommandLineMode { [INFO] [stdout] | --------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 177 | ReplaceConfirm, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandLineMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EditorRef` is never constructed [INFO] [stdout] --> src/editor/mod.rs:193:12 [INFO] [stdout] | [INFO] [stdout] 193 | pub struct EditorRef<'a> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `open_file`, `close_file_browser`, and `set_status_message` are never used [INFO] [stdout] --> src/editor/mod.rs:201:12 [INFO] [stdout] | [INFO] [stdout] 200 | impl<'a> EditorRef<'a> { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] 201 | pub fn open_file(&self, path: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | pub fn close_file_browser(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub fn set_status_message(&mut self, content: impl Into, msg_type: StatusMessageType) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/editor/mod.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Editor { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | fn move_cursor_end(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | fn page_up(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | fn page_down(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 518 | pub fn load_lazy_plugin(&mut self, name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1279 | pub fn close_current_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1322 | pub fn close_all_buffers(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1338 | pub fn previous_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1353 | pub fn switch_to_buffer(&mut self, idx: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1374 | pub fn new_buffer(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1393 | pub fn next_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1408 | pub fn reload_current_file(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_tab_ids` and `get_tab` are never used [INFO] [stdout] --> src/editor/window.rs:114:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl TabManager { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn get_tab_ids(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn get_tab(&self, tab_id: TabId) -> Result<&Tab> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/editor/window.rs:185:12 [INFO] [stdout] | [INFO] [stdout] 143 | impl Tab { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn split_horizontal(&mut self, buffer_idx: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn split_vertical(&mut self, buffer_idx: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 251 | pub fn close_active_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | pub fn focus_left_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 313 | pub fn focus_right_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 319 | pub fn focus_up_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 325 | pub fn focus_down_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `title` is never read [INFO] [stdout] --> src/editor/window.rs:440:9 [INFO] [stdout] | [INFO] [stdout] 434 | pub struct Window { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 440 | pub title: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_scroll` and `set_size` are never used [INFO] [stdout] --> src/editor/window.rs:492:12 [INFO] [stdout] | [INFO] [stdout] 455 | impl Window { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 492 | pub fn set_scroll(&mut self, line: usize, col: usize) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 497 | pub fn set_size(&mut self, width: usize, height: usize) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `HorizontalTriple`, `VerticalTriple`, and `Grid` are never constructed [INFO] [stdout] --> src/editor/window.rs:561:5 [INFO] [stdout] | [INFO] [stdout] 553 | pub enum Layout { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 561 | HorizontalTriple, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 562 | /// 垂直三分(左中右三个窗口) [INFO] [stdout] 563 | VerticalTriple, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 564 | /// 四分格(2x2网格) [INFO] [stdout] 565 | Grid, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Layout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Status` is never constructed [INFO] [stdout] --> src/editor/status.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Status { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `info`, `warning`, `error`, and `success` are never used [INFO] [stdout] --> src/editor/status.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Status { [INFO] [stdout] | ----------- associated functions in this implementation [INFO] [stdout] 26 | /// 创建一个新的普通信息消息 [INFO] [stdout] 27 | pub fn info>(message: T) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn warning>(message: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn error>(message: T) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn success>(message: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `command_mappings` is never read [INFO] [stdout] --> src/input/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct KeyHandler { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | command_mappings: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_command_buffer` and `set_mapping` are never used [INFO] [stdout] --> src/input/mod.rs:453:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl KeyHandler { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn get_command_buffer(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub fn set_mapping(&mut self, mode: &str, key: String, command: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RustDynlib` is never constructed [INFO] [stdout] --> src/plugin/mod.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum PluginType { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 18 | RustDynlib, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/plugin/mod.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | Local(PathBuf), [INFO] [stdout] | ----- ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PluginSource` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 25 - Local(PathBuf), [INFO] [stdout] 25 + Local(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Git` is never constructed [INFO] [stdout] --> src/plugin/mod.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum PluginSource { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | Git { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PluginSource` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/plugin/mod.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct PluginMetadata { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 37 | /// 插件名称 [INFO] [stdout] 38 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub version: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub author: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub plugin_type: PluginType, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub source: PluginSource, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub lazy: bool, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub dependencies: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `root` is never read [INFO] [stdout] --> src/plugin/mod.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct NvimPluginDirs { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 85 | /// 根目录 [INFO] [stdout] 86 | pub root: PathBuf, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `install_plugins`, `install_plugin`, `create_plugin_metadata`, `load_lazy_plugin`, `get_plugins`, and `is_loading` are never used [INFO] [stdout] --> src/plugin/mod.rs:158:12 [INFO] [stdout] | [INFO] [stdout] 95 | impl PluginManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn install_plugins(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | fn install_plugin(&mut self, name: &str, source: &PluginSource) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | fn create_plugin_metadata(&self, name: &str, path: &Path, source: PluginSource, lazy: bool) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 402 | pub fn load_lazy_plugin(&mut self, name: &str, lua_env: &mut lua::LuaEnv) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 434 | pub fn get_plugins(&self) -> &[PluginMetadata] { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 439 | pub fn is_loading(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `config`, `loaded_modules`, and `loaded_nvim_plugins` are never read [INFO] [stdout] --> src/plugin/lua/mod.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct LuaEnv { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 14 | config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | loaded_modules: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | loaded_nvim_plugins: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `setup_neovim_require`, `get_globals`, and `set_config` are never used [INFO] [stdout] --> src/plugin/lua/mod.rs:369:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl LuaEnv { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 369 | pub fn setup_neovim_require(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | pub fn set_config(&mut self, option: &str, value: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `handle_vim_command` and `run_plugin_init_script` are never used [INFO] [stdout] --> src/plugin/nvim_compat/mod.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl NeovimCompat { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn handle_vim_command(&self, cmd: &str, lua_env: &mut LuaEnv) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn run_plugin_init_script(&self, plugin_path: &Path, lua_env: &mut LuaEnv) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_dir` is never read [INFO] [stdout] --> src/plugin/package_manager.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct PackageManager { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | temp_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_plugin_config` and `load_lazy_plugin` are never used [INFO] [stdout] --> src/plugin/package_manager.rs:252:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl PackageManager { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 252 | fn find_plugin_config(&self, name: &str) -> Option<&PluginConfig> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub fn load_lazy_plugin(&self, name: &str, plugin_manager: &mut PluginManager, lua_env: &mut LuaEnv) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_key_event` is never used [INFO] [stdout] --> src/ui/mod.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn handle_key_event(editor: &mut Editor, key: KeyEvent) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1155:4 [INFO] [stdout] | [INFO] [stdout] 1155 | fn draw_search_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_highlight_spans` is never used [INFO] [stdout] --> src/ui/mod.rs:1340:4 [INFO] [stdout] | [INFO] [stdout] 1340 | fn get_highlight_spans(buffer: &Buffer, line: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_syntax_highlight` is never used [INFO] [stdout] --> src/ui/mod.rs:1353:4 [INFO] [stdout] | [INFO] [stdout] 1353 | fn render_syntax_highlight(line: &str, line_idx: usize, line_highlights: &[HighlightSpan], get_highlight_style: impl Fn(&HighlightStyle) ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1527:4 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_filenames_panel` is never used [INFO] [stdout] --> src/ui/mod.rs:1575:4 [INFO] [stdout] | [INFO] [stdout] 1575 | fn render_filenames_panel(f: &mut Frame, rect: Rect, editor: &Editor) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `RegexError` and `Generic` are never constructed [INFO] [stdout] --> src/error/mod.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum FKVimError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 34 | RegexError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | Generic(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FKVimError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `process_output`, `visible_lines`, `close`, `scroll_up`, `scroll_down`, and `restart` are never used [INFO] [stdout] --> src/terminal/mod.rs:440:12 [INFO] [stdout] | [INFO] [stdout] 45 | impl TerminalSession { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn process_output(&mut self, line: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn visible_lines(&self, height: u16) -> Vec<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | pub fn close(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 507 | pub fn scroll_up(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 516 | pub fn scroll_down(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 531 | pub async fn restart(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Horizontal`, `Vertical`, and `Grid` are never constructed [INFO] [stdout] --> src/terminal/mod.rs:585:5 [INFO] [stdout] | [INFO] [stdout] 581 | pub enum TerminalLayout { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 585 | Horizontal, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 586 | /// 垂直分割(左右布局) [INFO] [stdout] 587 | Vertical, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 588 | /// 四象限分割 [INFO] [stdout] 589 | Grid, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TerminalLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layout` is never read [INFO] [stdout] --> src/terminal/mod.rs:605:9 [INFO] [stdout] | [INFO] [stdout] 593 | pub struct Terminal { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 605 | pub layout: TerminalLayout, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/terminal/mod.rs:665:12 [INFO] [stdout] | [INFO] [stdout] 612 | impl Terminal { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 665 | pub fn switch_tab(&mut self, index: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 695 | pub fn close_current_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 727 | pub fn rename_current_tab(&mut self, new_name: String) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 782 | pub fn set_layout(&mut self, layout: TerminalLayout) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 823 | pub fn next_session(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 841 | pub fn prev_session(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 863 | pub fn start(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 877 | pub fn visible_lines(&self) -> Vec<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 888 | pub fn resize(&mut self, height: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 898 | pub fn close(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 957 | pub fn scroll_up(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 966 | pub fn scroll_down(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1015 | pub fn get_tab_names(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1020 | pub fn get_tab_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1025 | pub fn get_active_session(&self) -> Option<&TerminalSession> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1044 | pub fn get_layout_sessions(&self) -> Vec<&TerminalSession> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1051 | pub fn is_active_session(&self, session_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1135 | pub fn next_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1165 | pub fn prev_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1195 | pub fn next_split(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1221 | pub fn create_tab(&mut self, name: String) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1244 | pub fn init(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/highlight/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum HighlightStyle { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 11 | /// 普通文本 [INFO] [stdout] 12 | Normal, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | Preprocessor, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | Special, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | Error, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | Search, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | CurrentLine, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | Identifier, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | Property, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | Field, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | Method, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | MethodCall, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | Parameter, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | Text, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | LineNumber, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | LineNumberActive, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HighlightStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `is_dark` are never read [INFO] [stdout] --> src/highlight/mod.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 108 | pub struct Theme { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 109 | /// 主题名称 [INFO] [stdout] 110 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | is_dark: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `foreground`, `background`, and `attributes` are never read [INFO] [stdout] --> src/highlight/mod.rs:121:5 [INFO] [stdout] | [INFO] [stdout] 119 | pub struct StyleAttributes { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 120 | /// 前景色 [INFO] [stdout] 121 | foreground: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 122 | /// 背景色 [INFO] [stdout] 123 | background: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 124 | /// 文本属性 (粗体、斜体等) [INFO] [stdout] 125 | attributes: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StyleAttributes` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `foreground`, `background`, and `attributes` are never used [INFO] [stdout] --> src/highlight/mod.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl StyleAttributes { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn foreground(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn background(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn attributes(&self) -> &[Attribute] { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `get_style`, `is_dark`, `name`, `default_light`, and `from_config` are never used [INFO] [stdout] --> src/highlight/mod.rs:170:12 [INFO] [stdout] | [INFO] [stdout] 154 | impl Theme { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn get_style(&self, style: &HighlightStyle) -> Option<&StyleAttributes> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn is_dark(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn default_light() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn from_config(config: &HashMap, name: &str, is_dark: bool) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_style_name` is never used [INFO] [stdout] --> src/highlight/mod.rs:329:4 [INFO] [stdout] | [INFO] [stdout] 329 | fn parse_style_name(name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_color` is never used [INFO] [stdout] --> src/highlight/mod.rs:354:4 [INFO] [stdout] | [INFO] [stdout] 354 | fn parse_color(color_name: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `highlight` and `name` are never used [INFO] [stdout] --> src/highlight/mod.rs:393:8 [INFO] [stdout] | [INFO] [stdout] 391 | pub trait SyntaxHighlighter: Send + Sync { [INFO] [stdout] | ----------------- methods in this trait [INFO] [stdout] 392 | /// 高亮文本 [INFO] [stdout] 393 | fn highlight(&self, text: &str) -> Result>; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 396 | fn name(&self) -> &str; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_theme` is never read [INFO] [stdout] --> src/highlight/mod.rs:404:5 [INFO] [stdout] | [INFO] [stdout] 400 | pub struct Highlighter { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 404 | current_theme: Theme, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_highlighter_for_file`, `get_highlighter_for_filetype`, `highlight`, `set_theme`, `current_theme`, and `get_style_attributes` are never used [INFO] [stdout] --> src/highlight/mod.rs:435:12 [INFO] [stdout] | [INFO] [stdout] 407 | impl Highlighter { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 435 | pub fn get_highlighter_for_file(&self, file_path: &Path) -> Option<&dyn SyntaxHighlighter> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 443 | pub fn get_highlighter_for_filetype(&self, file_type: &str) -> Option<&dyn SyntaxHighlighter> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn highlight(&self, text: &str, file_type: Option<&str>, file_path: Option<&Path>) -> Result> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 468 | pub fn set_theme(&mut self, theme: Theme) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn current_theme(&self) -> &Theme { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn get_style_attributes(&self, style: &HighlightStyle) -> Option<&StyleAttributes> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CACHE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const CACHE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CACHE_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const MAX_CACHE_SIZE: usize = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSER_POOL_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const MAX_PARSER_POOL_SIZE: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSING_TIME_MS` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAX_PARSING_TIME_MS: u64 = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAILURE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const FAILURE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RETRY_COUNT` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_RETRY_COUNT: u32 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_INCREMENTAL_DIFF_RATIO` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MAX_INCREMENTAL_DIFF_RATIO: f32 = 0.3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParserPool` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | struct ParserPool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `initialize`, `get_parser`, and `return_parser` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl ParserPool { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 33 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn initialize(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn get_parser(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn return_parser(&self, mut parser: Parser) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:109:8 [INFO] [stdout] | [INFO] [stdout] 108 | impl CacheStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 109 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn record_hit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn record_miss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn record_eviction(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | fn record_fallback(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn maybe_report(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn report(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveFallbackChain` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AdaptiveFallbackChain { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 173 | impl AdaptiveFallbackChain { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 174 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn next_strategy(&mut self, language: &str, content_length: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn analyze_content_for_strategy(&self, content: &str, language: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | fn adjust_scores_for_language(&self, scores: &mut HashMap, language: &str, content_length: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn record_success(&self, language: &str, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn record_failure(&self, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategySuccessRate` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | struct StrategySuccessRate { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_success`, `record_failure`, and `success_rate` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:405:8 [INFO] [stdout] | [INFO] [stdout] 404 | impl StrategySuccessRate { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 405 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn record_success(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn success_rate(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FallbackStrategy` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:443:10 [INFO] [stdout] | [INFO] [stdout] 443 | pub enum FallbackStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:464:12 [INFO] [stdout] | [INFO] [stdout] 462 | impl FallbackStrategy { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 463 | /// 获取所有策略 [INFO] [stdout] 464 | pub fn all_strategies() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | fn apply(&self, content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | fn apply_simple_keyword(content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | fn apply_regex_based(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn apply_fragment_parsing(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | fn apply_heuristic(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn apply_mimic_similar(_content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_highlight` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:584:4 [INFO] [stdout] | [INFO] [stdout] 584 | fn create_highlight(style: HighlightStyle, abs_pos: usize, text: &str, line_starts: &[usize]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_line_starts` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:616:4 [INFO] [stdout] | [INFO] [stdout] 616 | fn get_line_starts(content: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `undo` and `redo` are never used [INFO] [stdout] --> src/history/mod.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 2 | pub trait ReversibleEdit: std::fmt::Debug { [INFO] [stdout] | -------------- methods in this trait [INFO] [stdout] 3 | /// 撤销操作 [INFO] [stdout] 4 | fn undo(&self) -> Operation; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 7 | fn redo(&self) -> Operation; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/history/mod.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | Insert(usize, usize, String), [INFO] [stdout] | ------ ^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 14 - Insert(usize, usize, String), [INFO] [stdout] 14 + Insert((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/history/mod.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | Delete(usize, usize, String), [INFO] [stdout] | ------ ^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 17 - Delete(usize, usize, String), [INFO] [stdout] 17 + Delete((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Replace` is never constructed [INFO] [stdout] --> src/history/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum Operation { [INFO] [stdout] | --------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 20 | Replace(usize, usize, String, String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `undo_op` and `redo_op` are never read [INFO] [stdout] --> src/history/mod.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct EditOperation { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 42 | /// 撤销操作 [INFO] [stdout] 43 | pub undo_op: Operation, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub redo_op: Operation, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EditOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/history/mod.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 81 | impl History { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn can_undo(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn can_redo(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn undo(&mut self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn redo(&mut self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn finish_undo_redo(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn start_compound_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn end_compound_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompoundEdit` is never constructed [INFO] [stdout] --> src/history/mod.rs:203:12 [INFO] [stdout] | [INFO] [stdout] 203 | pub struct CompoundEdit { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Time`, `Size`, and `Type` are never constructed [INFO] [stdout] --> src/file_browser/mod.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum SortMode { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 13 | Time, [INFO] [stdout] | ^^^^ [INFO] [stdout] 14 | /// 按文件大小排序 [INFO] [stdout] 15 | Size, [INFO] [stdout] | ^^^^ [INFO] [stdout] 16 | /// 按文件类型排序 [INFO] [stdout] 17 | Type, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SortMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Simple` is never constructed [INFO] [stdout] --> src/file_browser/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub enum ViewMode { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] 23 | /// 简单视图,仅显示文件名 [INFO] [stdout] 24 | Simple, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ViewMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `show_hidden` and `pattern` are never read [INFO] [stdout] --> src/file_browser/mod.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct FileFilter { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 32 | /// 隐藏或显示隐藏文件 [INFO] [stdout] 33 | pub show_hidden: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 34 | /// 文件通配符 [INFO] [stdout] 35 | pub pattern: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `size` is never read [INFO] [stdout] --> src/file_browser/mod.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct FileEntry { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 65 | pub size: u64, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/file_browser/mod.rs:282:12 [INFO] [stdout] | [INFO] [stdout] 157 | impl FileBrowser { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 282 | pub fn move_selection(&mut self, offset: isize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 299 | pub fn enter_selected(&mut self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | pub fn go_parent(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub fn get_display_name(&self, idx: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | pub fn toggle_sort_mode(&mut self, mode: SortMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 482 | pub fn set_filter(&mut self, filter: String) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 488 | pub fn add_to_bookmarks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 493 | pub fn remove_from_bookmarks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 498 | pub fn toggle_hidden_files(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 504 | pub fn update_preview(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | pub fn toggle_preview(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | pub fn delete_selected(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 646 | pub fn rename_selected(&mut self, new_name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 681 | pub fn copy_selected(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 702 | pub fn paste_file(&mut self, source_path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 746 | fn copy_dir_recursively(&self, src: &Path, dst: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 765 | pub fn visible_items(&self, height: usize) -> Vec<&FileItem> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 776 | pub fn ensure_selection_visible(&mut self, height: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 798 | pub fn goto_bookmark(&mut self, bookmark: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 922 | pub fn search_files(&mut self, search_term: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 957 | pub fn clear_selections(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/plugin/lua/mod.rs:424:24 [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1417:30 [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1473:32 [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1527:31 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 48 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 64 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `start_line`, `start_col`, `end_line`, and `end_col` are never read [INFO] [stdout] --> src/buffer/mod.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub struct SearchResult { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 61 | /// 起始行 [INFO] [stdout] 62 | pub start_line: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | pub start_col: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub end_line: usize, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub end_col: usize, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pattern`, `case_sensitive`, `use_regex`, `whole_word`, and `in_selection` are never read [INFO] [stdout] --> src/buffer/mod.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 76 | pub struct SearchQuery { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 77 | /// 搜索文本或正则表达式 [INFO] [stdout] 78 | pub pattern: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub case_sensitive: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub use_regex: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub whole_word: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub in_selection: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchQuery` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/buffer/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 93 | impl SearchQuery { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 94 | /// 创建新的搜索查询 [INFO] [stdout] 95 | pub fn new(pattern: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/buffer/mod.rs:297:12 [INFO] [stdout] | [INFO] [stdout] 106 | impl Buffer { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 297 | pub fn get_lines(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 328 | pub fn apply_syntax_highlight(&mut self, highlighter: &Highlighter) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 347 | pub fn undo(&mut self, cursor_line: &mut usize, cursor_col: &mut usize) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 388 | pub fn redo(&mut self, cursor_line: &mut usize, cursor_col: &mut usize) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 430 | pub fn search(&mut self, query: &str, case_sensitive: bool) -> Result { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 491 | pub fn current_search_result(&self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 501 | pub fn next_search_result(&mut self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 520 | pub fn prev_search_result(&mut self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn clear_search(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | pub fn advanced_search(&mut self, query: SearchQuery) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | fn regex_search(&self, query: &SearchQuery, results: &mut Vec) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | fn text_search(&self, query: &SearchQuery, results: &mut Vec) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 663 | pub fn replace_current(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 717 | pub fn replace_all(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 763 | pub fn replace_regex(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 839 | fn insert_text(&mut self, line: usize, col: usize, text: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 844 | fn delete_text(&mut self, start_line: usize, start_col: usize, end_line: usize, end_col: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 849 | pub fn find(&mut self, query: &str, options: &crate::editor::SearchOptions) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 864 | pub fn replace_term(&mut self, line: usize, col: usize, cursor_line: &mut usize, cursor_col: &mut usize, search_term: &str, new_text:... [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 901 | pub fn load_from_file(&mut self, path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UserCommand` is never constructed [INFO] [stdout] --> src/command/mod.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct UserCommand { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `UserCommandType` is never used [INFO] [stdout] --> src/command/mod.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum UserCommandType { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CommandType` is never used [INFO] [stdout] --> src/command/mod.rs:34:10 [INFO] [stdout] | [INFO] [stdout] 34 | pub enum CommandType { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BuiltinCommand` is never used [INFO] [stdout] --> src/command/mod.rs:46:10 [INFO] [stdout] | [INFO] [stdout] 46 | pub enum BuiltinCommand { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchFlags` is never constructed [INFO] [stdout] --> src/command/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 95 | pub struct SearchFlags { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SubstituteFlags` is never constructed [INFO] [stdout] --> src/command/mod.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 132 | pub struct SubstituteFlags { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandParser` is never constructed [INFO] [stdout] --> src/command/mod.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 166 | pub struct CommandParser { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `command_manager`, `command_manager_mut`, `parse`, `get_completions`, and `parse_builtin_command` are never used [INFO] [stdout] --> src/command/mod.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 170 | impl CommandParser { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 171 | /// 创建命令解析器 [INFO] [stdout] 172 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn command_manager(&self) -> &CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub fn command_manager_mut(&mut self) -> &mut CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn parse(&self, command_str: &str) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn get_completions(&self, partial: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | fn parse_builtin_command(&self, cmd: &str, args: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandManager` is never constructed [INFO] [stdout] --> src/command/mod.rs:518:12 [INFO] [stdout] | [INFO] [stdout] 518 | pub struct CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/command/mod.rs:525:12 [INFO] [stdout] | [INFO] [stdout] 523 | impl CommandManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 524 | /// 创建命令管理器 [INFO] [stdout] 525 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 532 | pub fn register_command(&mut self, name: &str, command: UserCommand) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 542 | pub fn get_command(&self, name: &str) -> Option<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 547 | pub fn has_command(&self, name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | pub fn unregister_command(&mut self, name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 562 | pub fn list_commands(&self) -> Vec<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 567 | pub fn fuzzy_match(&self, partial_name: &str) -> Vec<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 580 | pub fn get_completion_list(&self, partial_name: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 594 | pub fn register_terminal_commands(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandExecutor` is never constructed [INFO] [stdout] --> src/command/mod.rs:648:12 [INFO] [stdout] | [INFO] [stdout] 648 | pub struct CommandExecutor { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `execute`, and `execute_builtin` are never used [INFO] [stdout] --> src/command/mod.rs:655:12 [INFO] [stdout] | [INFO] [stdout] 653 | impl CommandExecutor { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 654 | /// 创建命令执行器 [INFO] [stdout] 655 | pub fn new(editor: &mut Editor) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 662 | pub fn execute(&self, cmd_type: CommandType) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 677 | fn execute_builtin(&self, editor: &mut Editor, cmd: BuiltinCommand) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_TOGGLE_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:812:11 [INFO] [stdout] | [INFO] [stdout] 812 | pub const CMD_TOGGLE_TERMINAL: &str = "toggle_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_FOCUS_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:813:11 [INFO] [stdout] | [INFO] [stdout] 813 | pub const CMD_FOCUS_TERMINAL: &str = "focus_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_EXIT_TERMINAL_FOCUS` is never used [INFO] [stdout] --> src/command/mod.rs:814:11 [INFO] [stdout] | [INFO] [stdout] 814 | pub const CMD_EXIT_TERMINAL_FOCUS: &str = "exit_terminal_focus"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_CLEAR_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:815:11 [INFO] [stdout] | [INFO] [stdout] 815 | pub const CMD_CLEAR_TERMINAL: &str = "clear_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_RESTART_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:816:11 [INFO] [stdout] | [INFO] [stdout] 816 | pub const CMD_RESTART_TERMINAL: &str = "restart_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_SEND_TO_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:817:11 [INFO] [stdout] | [INFO] [stdout] 817 | pub const CMD_SEND_TO_TERMINAL: &str = "send_to_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `description`, `usage`, and `examples` are never read [INFO] [stdout] --> src/command/help.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct CommandHelp { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 11 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub usage: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 17 | pub examples: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandHelp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `name` and `description` are never used [INFO] [stdout] --> src/command/help.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 57 | impl HelpCategory { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] 58 | /// 获取分类名称 [INFO] [stdout] 59 | pub fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn description(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/command/help.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 100 | impl HelpSystem { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn get_command(&self, name: &str) -> Option<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn fuzzy_match(&self, partial_name: &str) -> Vec<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 229 | pub fn get_category_commands(&self, category: &HelpCategory) -> Vec<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn format_command_help(&self, help: &CommandHelp) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn format_category_help(&self, category: &HelpCategory) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 279 | pub fn format_help_overview(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 311 | pub fn get_general_help(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | pub fn get_topic_help(&self, topic: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_option` and `get_all_options` are never used [INFO] [stdout] --> src/config/mod.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 246 | impl Config { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] 247 | /// 获取指定选项的值 [INFO] [stdout] 248 | pub fn get_option(&self, option: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | pub fn get_all_options(&self) -> Vec<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyBindings` is never constructed [INFO] [stdout] --> src/config/keybindings.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyBindings { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/config/keybindings.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl KeyBindings { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 50 | /// 创建新的键绑定配置 [INFO] [stdout] 51 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_mapping(&mut self, mode: &str, key: &str, command: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn get_mapping(&self, mode: &str, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn remove_mapping(&mut self, mode: &str, key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mode_mappings(&self, mode: &str) -> Option<&HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn clear_mode_mappings(&mut self, mode: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn merge(&mut self, other: &KeyBindings) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn from_config(config: &crate::config::Config) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `keymaps`, `highlighter`, `screen_height`, `repeat_count`, `last_command`, and `help_system` are never read [INFO] [stdout] --> src/editor/mod.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Editor { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 60 | pub keymaps: HashMap>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub highlighter: Highlighter, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub screen_height: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub repeat_count: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub last_command: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub help_system: crate::command::help::HelpSystem, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Error` is never constructed [INFO] [stdout] --> src/editor/mod.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 131 | pub enum EditorStatus { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 134 | Error(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EditorStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timestamp` is never read [INFO] [stdout] --> src/editor/mod.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct StatusMessage { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 146 | pub timestamp: Instant, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchOptions` is never constructed [INFO] [stdout] --> src/editor/mod.rs:150:12 [INFO] [stdout] | [INFO] [stdout] 150 | pub struct SearchOptions { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `ReplaceConfirm` is never constructed [INFO] [stdout] --> src/editor/mod.rs:177:5 [INFO] [stdout] | [INFO] [stdout] 166 | pub enum CommandLineMode { [INFO] [stdout] | --------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 177 | ReplaceConfirm, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandLineMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EditorRef` is never constructed [INFO] [stdout] --> src/editor/mod.rs:193:12 [INFO] [stdout] | [INFO] [stdout] 193 | pub struct EditorRef<'a> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `open_file`, `close_file_browser`, and `set_status_message` are never used [INFO] [stdout] --> src/editor/mod.rs:201:12 [INFO] [stdout] | [INFO] [stdout] 200 | impl<'a> EditorRef<'a> { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] 201 | pub fn open_file(&self, path: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | pub fn close_file_browser(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub fn set_status_message(&mut self, content: impl Into, msg_type: StatusMessageType) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/editor/mod.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Editor { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | fn move_cursor_end(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | fn page_up(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | fn page_down(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 518 | pub fn load_lazy_plugin(&mut self, name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1279 | pub fn close_current_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1322 | pub fn close_all_buffers(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1338 | pub fn previous_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1353 | pub fn switch_to_buffer(&mut self, idx: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1374 | pub fn new_buffer(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1393 | pub fn next_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1408 | pub fn reload_current_file(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_tab_ids` and `get_tab` are never used [INFO] [stdout] --> src/editor/window.rs:114:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl TabManager { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn get_tab_ids(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn get_tab(&self, tab_id: TabId) -> Result<&Tab> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/editor/window.rs:185:12 [INFO] [stdout] | [INFO] [stdout] 143 | impl Tab { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn split_horizontal(&mut self, buffer_idx: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn split_vertical(&mut self, buffer_idx: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 251 | pub fn close_active_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | pub fn focus_left_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 313 | pub fn focus_right_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 319 | pub fn focus_up_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 325 | pub fn focus_down_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `title` is never read [INFO] [stdout] --> src/editor/window.rs:440:9 [INFO] [stdout] | [INFO] [stdout] 434 | pub struct Window { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 440 | pub title: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_scroll` and `set_size` are never used [INFO] [stdout] --> src/editor/window.rs:492:12 [INFO] [stdout] | [INFO] [stdout] 455 | impl Window { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 492 | pub fn set_scroll(&mut self, line: usize, col: usize) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 497 | pub fn set_size(&mut self, width: usize, height: usize) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `HorizontalTriple`, `VerticalTriple`, and `Grid` are never constructed [INFO] [stdout] --> src/editor/window.rs:561:5 [INFO] [stdout] | [INFO] [stdout] 553 | pub enum Layout { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 561 | HorizontalTriple, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 562 | /// 垂直三分(左中右三个窗口) [INFO] [stdout] 563 | VerticalTriple, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 564 | /// 四分格(2x2网格) [INFO] [stdout] 565 | Grid, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Layout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Status` is never constructed [INFO] [stdout] --> src/editor/status.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Status { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `info`, `warning`, `error`, and `success` are never used [INFO] [stdout] --> src/editor/status.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Status { [INFO] [stdout] | ----------- associated functions in this implementation [INFO] [stdout] 26 | /// 创建一个新的普通信息消息 [INFO] [stdout] 27 | pub fn info>(message: T) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn warning>(message: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn error>(message: T) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn success>(message: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `command_mappings` is never read [INFO] [stdout] --> src/input/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct KeyHandler { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | command_mappings: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_command_buffer` and `set_mapping` are never used [INFO] [stdout] --> src/input/mod.rs:453:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl KeyHandler { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn get_command_buffer(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub fn set_mapping(&mut self, mode: &str, key: String, command: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RustDynlib` is never constructed [INFO] [stdout] --> src/plugin/mod.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum PluginType { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 18 | RustDynlib, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/plugin/mod.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | Local(PathBuf), [INFO] [stdout] | ----- ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PluginSource` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 25 - Local(PathBuf), [INFO] [stdout] 25 + Local(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Git` is never constructed [INFO] [stdout] --> src/plugin/mod.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum PluginSource { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | Git { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PluginSource` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/plugin/mod.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct PluginMetadata { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 37 | /// 插件名称 [INFO] [stdout] 38 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub version: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub author: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub plugin_type: PluginType, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub source: PluginSource, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub lazy: bool, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub dependencies: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `root` is never read [INFO] [stdout] --> src/plugin/mod.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct NvimPluginDirs { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 85 | /// 根目录 [INFO] [stdout] 86 | pub root: PathBuf, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `install_plugins`, `install_plugin`, `create_plugin_metadata`, `load_lazy_plugin`, `get_plugins`, and `is_loading` are never used [INFO] [stdout] --> src/plugin/mod.rs:158:12 [INFO] [stdout] | [INFO] [stdout] 95 | impl PluginManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn install_plugins(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | fn install_plugin(&mut self, name: &str, source: &PluginSource) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | fn create_plugin_metadata(&self, name: &str, path: &Path, source: PluginSource, lazy: bool) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 402 | pub fn load_lazy_plugin(&mut self, name: &str, lua_env: &mut lua::LuaEnv) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 434 | pub fn get_plugins(&self) -> &[PluginMetadata] { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 439 | pub fn is_loading(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `config`, `loaded_modules`, and `loaded_nvim_plugins` are never read [INFO] [stdout] --> src/plugin/lua/mod.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct LuaEnv { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 14 | config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | loaded_modules: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | loaded_nvim_plugins: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `setup_neovim_require`, `get_globals`, and `set_config` are never used [INFO] [stdout] --> src/plugin/lua/mod.rs:369:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl LuaEnv { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 369 | pub fn setup_neovim_require(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | pub fn set_config(&mut self, option: &str, value: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `handle_vim_command` and `run_plugin_init_script` are never used [INFO] [stdout] --> src/plugin/nvim_compat/mod.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl NeovimCompat { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn handle_vim_command(&self, cmd: &str, lua_env: &mut LuaEnv) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn run_plugin_init_script(&self, plugin_path: &Path, lua_env: &mut LuaEnv) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_dir` is never read [INFO] [stdout] --> src/plugin/package_manager.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct PackageManager { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | temp_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_plugin_config` and `load_lazy_plugin` are never used [INFO] [stdout] --> src/plugin/package_manager.rs:252:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl PackageManager { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 252 | fn find_plugin_config(&self, name: &str) -> Option<&PluginConfig> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub fn load_lazy_plugin(&self, name: &str, plugin_manager: &mut PluginManager, lua_env: &mut LuaEnv) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_key_event` is never used [INFO] [stdout] --> src/ui/mod.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn handle_key_event(editor: &mut Editor, key: KeyEvent) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1155:4 [INFO] [stdout] | [INFO] [stdout] 1155 | fn draw_search_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_highlight_spans` is never used [INFO] [stdout] --> src/ui/mod.rs:1340:4 [INFO] [stdout] | [INFO] [stdout] 1340 | fn get_highlight_spans(buffer: &Buffer, line: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_syntax_highlight` is never used [INFO] [stdout] --> src/ui/mod.rs:1353:4 [INFO] [stdout] | [INFO] [stdout] 1353 | fn render_syntax_highlight(line: &str, line_idx: usize, line_highlights: &[HighlightSpan], get_highlight_style: impl Fn(&HighlightStyle) ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1527:4 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_filenames_panel` is never used [INFO] [stdout] --> src/ui/mod.rs:1575:4 [INFO] [stdout] | [INFO] [stdout] 1575 | fn render_filenames_panel(f: &mut Frame, rect: Rect, editor: &Editor) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `RegexError` and `Generic` are never constructed [INFO] [stdout] --> src/error/mod.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum FKVimError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 34 | RegexError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | Generic(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FKVimError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `process_output`, `visible_lines`, `close`, `scroll_up`, `scroll_down`, and `restart` are never used [INFO] [stdout] --> src/terminal/mod.rs:440:12 [INFO] [stdout] | [INFO] [stdout] 45 | impl TerminalSession { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn process_output(&mut self, line: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn visible_lines(&self, height: u16) -> Vec<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | pub fn close(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 507 | pub fn scroll_up(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 516 | pub fn scroll_down(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 531 | pub async fn restart(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Horizontal`, `Vertical`, and `Grid` are never constructed [INFO] [stdout] --> src/terminal/mod.rs:585:5 [INFO] [stdout] | [INFO] [stdout] 581 | pub enum TerminalLayout { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 585 | Horizontal, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 586 | /// 垂直分割(左右布局) [INFO] [stdout] 587 | Vertical, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 588 | /// 四象限分割 [INFO] [stdout] 589 | Grid, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TerminalLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layout` is never read [INFO] [stdout] --> src/terminal/mod.rs:605:9 [INFO] [stdout] | [INFO] [stdout] 593 | pub struct Terminal { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 605 | pub layout: TerminalLayout, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/terminal/mod.rs:665:12 [INFO] [stdout] | [INFO] [stdout] 612 | impl Terminal { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 665 | pub fn switch_tab(&mut self, index: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 695 | pub fn close_current_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 727 | pub fn rename_current_tab(&mut self, new_name: String) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 782 | pub fn set_layout(&mut self, layout: TerminalLayout) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 823 | pub fn next_session(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 841 | pub fn prev_session(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 863 | pub fn start(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 877 | pub fn visible_lines(&self) -> Vec<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 888 | pub fn resize(&mut self, height: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 898 | pub fn close(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 957 | pub fn scroll_up(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 966 | pub fn scroll_down(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1015 | pub fn get_tab_names(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1020 | pub fn get_tab_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1025 | pub fn get_active_session(&self) -> Option<&TerminalSession> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1044 | pub fn get_layout_sessions(&self) -> Vec<&TerminalSession> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1051 | pub fn is_active_session(&self, session_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1135 | pub fn next_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1165 | pub fn prev_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1195 | pub fn next_split(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1221 | pub fn create_tab(&mut self, name: String) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1244 | pub fn init(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/highlight/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum HighlightStyle { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 11 | /// 普通文本 [INFO] [stdout] 12 | Normal, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | Preprocessor, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | Special, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | Error, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | Search, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | CurrentLine, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | Identifier, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | Property, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | Field, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | Method, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | MethodCall, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | Parameter, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | Text, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | LineNumber, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | LineNumberActive, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HighlightStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `is_dark` are never read [INFO] [stdout] --> src/highlight/mod.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 108 | pub struct Theme { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 109 | /// 主题名称 [INFO] [stdout] 110 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | is_dark: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `foreground`, `background`, and `attributes` are never read [INFO] [stdout] --> src/highlight/mod.rs:121:5 [INFO] [stdout] | [INFO] [stdout] 119 | pub struct StyleAttributes { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 120 | /// 前景色 [INFO] [stdout] 121 | foreground: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 122 | /// 背景色 [INFO] [stdout] 123 | background: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 124 | /// 文本属性 (粗体、斜体等) [INFO] [stdout] 125 | attributes: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StyleAttributes` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `foreground`, `background`, and `attributes` are never used [INFO] [stdout] --> src/highlight/mod.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl StyleAttributes { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn foreground(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn background(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn attributes(&self) -> &[Attribute] { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `get_style`, `is_dark`, `name`, `default_light`, and `from_config` are never used [INFO] [stdout] --> src/highlight/mod.rs:170:12 [INFO] [stdout] | [INFO] [stdout] 154 | impl Theme { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn get_style(&self, style: &HighlightStyle) -> Option<&StyleAttributes> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn is_dark(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn default_light() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn from_config(config: &HashMap, name: &str, is_dark: bool) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_style_name` is never used [INFO] [stdout] --> src/highlight/mod.rs:329:4 [INFO] [stdout] | [INFO] [stdout] 329 | fn parse_style_name(name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_color` is never used [INFO] [stdout] --> src/highlight/mod.rs:354:4 [INFO] [stdout] | [INFO] [stdout] 354 | fn parse_color(color_name: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `highlight` and `name` are never used [INFO] [stdout] --> src/highlight/mod.rs:393:8 [INFO] [stdout] | [INFO] [stdout] 391 | pub trait SyntaxHighlighter: Send + Sync { [INFO] [stdout] | ----------------- methods in this trait [INFO] [stdout] 392 | /// 高亮文本 [INFO] [stdout] 393 | fn highlight(&self, text: &str) -> Result>; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 396 | fn name(&self) -> &str; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_theme` is never read [INFO] [stdout] --> src/highlight/mod.rs:404:5 [INFO] [stdout] | [INFO] [stdout] 400 | pub struct Highlighter { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 404 | current_theme: Theme, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_highlighter_for_file`, `get_highlighter_for_filetype`, `highlight`, `set_theme`, `current_theme`, and `get_style_attributes` are never used [INFO] [stdout] --> src/highlight/mod.rs:435:12 [INFO] [stdout] | [INFO] [stdout] 407 | impl Highlighter { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 435 | pub fn get_highlighter_for_file(&self, file_path: &Path) -> Option<&dyn SyntaxHighlighter> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 443 | pub fn get_highlighter_for_filetype(&self, file_type: &str) -> Option<&dyn SyntaxHighlighter> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn highlight(&self, text: &str, file_type: Option<&str>, file_path: Option<&Path>) -> Result> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 468 | pub fn set_theme(&mut self, theme: Theme) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn current_theme(&self) -> &Theme { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn get_style_attributes(&self, style: &HighlightStyle) -> Option<&StyleAttributes> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CACHE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const CACHE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CACHE_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const MAX_CACHE_SIZE: usize = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSER_POOL_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const MAX_PARSER_POOL_SIZE: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSING_TIME_MS` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAX_PARSING_TIME_MS: u64 = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAILURE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const FAILURE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RETRY_COUNT` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_RETRY_COUNT: u32 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_INCREMENTAL_DIFF_RATIO` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MAX_INCREMENTAL_DIFF_RATIO: f32 = 0.3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParserPool` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | struct ParserPool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `initialize`, `get_parser`, and `return_parser` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl ParserPool { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 33 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn initialize(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn get_parser(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn return_parser(&self, mut parser: Parser) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:109:8 [INFO] [stdout] | [INFO] [stdout] 108 | impl CacheStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 109 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn record_hit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn record_miss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn record_eviction(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | fn record_fallback(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn maybe_report(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn report(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveFallbackChain` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AdaptiveFallbackChain { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 173 | impl AdaptiveFallbackChain { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 174 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn next_strategy(&mut self, language: &str, content_length: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn analyze_content_for_strategy(&self, content: &str, language: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | fn adjust_scores_for_language(&self, scores: &mut HashMap, language: &str, content_length: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn record_success(&self, language: &str, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn record_failure(&self, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategySuccessRate` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | struct StrategySuccessRate { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_success`, `record_failure`, and `success_rate` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:405:8 [INFO] [stdout] | [INFO] [stdout] 404 | impl StrategySuccessRate { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 405 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn record_success(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn success_rate(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FallbackStrategy` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:443:10 [INFO] [stdout] | [INFO] [stdout] 443 | pub enum FallbackStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:464:12 [INFO] [stdout] | [INFO] [stdout] 462 | impl FallbackStrategy { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 463 | /// 获取所有策略 [INFO] [stdout] 464 | pub fn all_strategies() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | fn apply(&self, content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | fn apply_simple_keyword(content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | fn apply_regex_based(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn apply_fragment_parsing(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | fn apply_heuristic(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn apply_mimic_similar(_content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_highlight` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:584:4 [INFO] [stdout] | [INFO] [stdout] 584 | fn create_highlight(style: HighlightStyle, abs_pos: usize, text: &str, line_starts: &[usize]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_line_starts` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:616:4 [INFO] [stdout] | [INFO] [stdout] 616 | fn get_line_starts(content: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `undo` and `redo` are never used [INFO] [stdout] --> src/history/mod.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 2 | pub trait ReversibleEdit: std::fmt::Debug { [INFO] [stdout] | -------------- methods in this trait [INFO] [stdout] 3 | /// 撤销操作 [INFO] [stdout] 4 | fn undo(&self) -> Operation; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 7 | fn redo(&self) -> Operation; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/history/mod.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | Insert(usize, usize, String), [INFO] [stdout] | ------ ^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 14 - Insert(usize, usize, String), [INFO] [stdout] 14 + Insert((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/history/mod.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | Delete(usize, usize, String), [INFO] [stdout] | ------ ^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 17 - Delete(usize, usize, String), [INFO] [stdout] 17 + Delete((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Replace` is never constructed [INFO] [stdout] --> src/history/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum Operation { [INFO] [stdout] | --------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 20 | Replace(usize, usize, String, String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `undo_op` and `redo_op` are never read [INFO] [stdout] --> src/history/mod.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct EditOperation { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 42 | /// 撤销操作 [INFO] [stdout] 43 | pub undo_op: Operation, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub redo_op: Operation, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EditOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/history/mod.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 81 | impl History { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn can_undo(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn can_redo(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn undo(&mut self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn redo(&mut self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn finish_undo_redo(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn start_compound_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn end_compound_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompoundEdit` is never constructed [INFO] [stdout] --> src/history/mod.rs:203:12 [INFO] [stdout] | [INFO] [stdout] 203 | pub struct CompoundEdit { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Time`, `Size`, and `Type` are never constructed [INFO] [stdout] --> src/file_browser/mod.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum SortMode { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 13 | Time, [INFO] [stdout] | ^^^^ [INFO] [stdout] 14 | /// 按文件大小排序 [INFO] [stdout] 15 | Size, [INFO] [stdout] | ^^^^ [INFO] [stdout] 16 | /// 按文件类型排序 [INFO] [stdout] 17 | Type, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SortMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Simple` is never constructed [INFO] [stdout] --> src/file_browser/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub enum ViewMode { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] 23 | /// 简单视图,仅显示文件名 [INFO] [stdout] 24 | Simple, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ViewMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `show_hidden` and `pattern` are never read [INFO] [stdout] --> src/file_browser/mod.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct FileFilter { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 32 | /// 隐藏或显示隐藏文件 [INFO] [stdout] 33 | pub show_hidden: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 34 | /// 文件通配符 [INFO] [stdout] 35 | pub pattern: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `size` is never read [INFO] [stdout] --> src/file_browser/mod.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct FileEntry { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 65 | pub size: u64, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/file_browser/mod.rs:282:12 [INFO] [stdout] | [INFO] [stdout] 157 | impl FileBrowser { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 282 | pub fn move_selection(&mut self, offset: isize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 299 | pub fn enter_selected(&mut self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | pub fn go_parent(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub fn get_display_name(&self, idx: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | pub fn toggle_sort_mode(&mut self, mode: SortMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 482 | pub fn set_filter(&mut self, filter: String) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 488 | pub fn add_to_bookmarks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 493 | pub fn remove_from_bookmarks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 498 | pub fn toggle_hidden_files(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 504 | pub fn update_preview(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | pub fn toggle_preview(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | pub fn delete_selected(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 646 | pub fn rename_selected(&mut self, new_name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 681 | pub fn copy_selected(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 702 | pub fn paste_file(&mut self, source_path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 746 | fn copy_dir_recursively(&self, src: &Path, dst: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 765 | pub fn visible_items(&self, height: usize) -> Vec<&FileItem> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 776 | pub fn ensure_selection_visible(&mut self, height: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 798 | pub fn goto_bookmark(&mut self, bookmark: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 922 | pub fn search_files(&mut self, search_term: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 957 | pub fn clear_selections(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/plugin/lua/mod.rs:424:24 [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1417:30 [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1473:32 [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1527:31 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 48 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 64 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `start_line`, `start_col`, `end_line`, and `end_col` are never read [INFO] [stdout] --> src/buffer/mod.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub struct SearchResult { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 61 | /// 起始行 [INFO] [stdout] 62 | pub start_line: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | pub start_col: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub end_line: usize, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub end_col: usize, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pattern`, `case_sensitive`, `use_regex`, `whole_word`, and `in_selection` are never read [INFO] [stdout] --> src/buffer/mod.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 76 | pub struct SearchQuery { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 77 | /// 搜索文本或正则表达式 [INFO] [stdout] 78 | pub pattern: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub case_sensitive: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub use_regex: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub whole_word: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub in_selection: bool, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SearchQuery` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/buffer/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 93 | impl SearchQuery { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 94 | /// 创建新的搜索查询 [INFO] [stdout] 95 | pub fn new(pattern: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/buffer/mod.rs:297:12 [INFO] [stdout] | [INFO] [stdout] 106 | impl Buffer { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 297 | pub fn get_lines(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 328 | pub fn apply_syntax_highlight(&mut self, highlighter: &Highlighter) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 347 | pub fn undo(&mut self, cursor_line: &mut usize, cursor_col: &mut usize) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 388 | pub fn redo(&mut self, cursor_line: &mut usize, cursor_col: &mut usize) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 430 | pub fn search(&mut self, query: &str, case_sensitive: bool) -> Result { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 491 | pub fn current_search_result(&self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 501 | pub fn next_search_result(&mut self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 520 | pub fn prev_search_result(&mut self) -> Option<&SearchResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn clear_search(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | pub fn advanced_search(&mut self, query: SearchQuery) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | fn regex_search(&self, query: &SearchQuery, results: &mut Vec) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | fn text_search(&self, query: &SearchQuery, results: &mut Vec) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 663 | pub fn replace_current(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 717 | pub fn replace_all(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 763 | pub fn replace_regex(&mut self, replacement: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 839 | fn insert_text(&mut self, line: usize, col: usize, text: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 844 | fn delete_text(&mut self, start_line: usize, start_col: usize, end_line: usize, end_col: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 849 | pub fn find(&mut self, query: &str, options: &crate::editor::SearchOptions) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 864 | pub fn replace_term(&mut self, line: usize, col: usize, cursor_line: &mut usize, cursor_col: &mut usize, search_term: &str, new_text:... [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 901 | pub fn load_from_file(&mut self, path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UserCommand` is never constructed [INFO] [stdout] --> src/command/mod.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct UserCommand { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `UserCommandType` is never used [INFO] [stdout] --> src/command/mod.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum UserCommandType { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CommandType` is never used [INFO] [stdout] --> src/command/mod.rs:34:10 [INFO] [stdout] | [INFO] [stdout] 34 | pub enum CommandType { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BuiltinCommand` is never used [INFO] [stdout] --> src/command/mod.rs:46:10 [INFO] [stdout] | [INFO] [stdout] 46 | pub enum BuiltinCommand { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchFlags` is never constructed [INFO] [stdout] --> src/command/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 95 | pub struct SearchFlags { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SubstituteFlags` is never constructed [INFO] [stdout] --> src/command/mod.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 132 | pub struct SubstituteFlags { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandParser` is never constructed [INFO] [stdout] --> src/command/mod.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 166 | pub struct CommandParser { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `command_manager`, `command_manager_mut`, `parse`, `get_completions`, and `parse_builtin_command` are never used [INFO] [stdout] --> src/command/mod.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 170 | impl CommandParser { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 171 | /// 创建命令解析器 [INFO] [stdout] 172 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn command_manager(&self) -> &CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub fn command_manager_mut(&mut self) -> &mut CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn parse(&self, command_str: &str) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn get_completions(&self, partial: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | fn parse_builtin_command(&self, cmd: &str, args: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandManager` is never constructed [INFO] [stdout] --> src/command/mod.rs:518:12 [INFO] [stdout] | [INFO] [stdout] 518 | pub struct CommandManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/command/mod.rs:525:12 [INFO] [stdout] | [INFO] [stdout] 523 | impl CommandManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 524 | /// 创建命令管理器 [INFO] [stdout] 525 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 532 | pub fn register_command(&mut self, name: &str, command: UserCommand) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 542 | pub fn get_command(&self, name: &str) -> Option<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 547 | pub fn has_command(&self, name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | pub fn unregister_command(&mut self, name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 562 | pub fn list_commands(&self) -> Vec<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 567 | pub fn fuzzy_match(&self, partial_name: &str) -> Vec<&UserCommand> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 580 | pub fn get_completion_list(&self, partial_name: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 594 | pub fn register_terminal_commands(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandExecutor` is never constructed [INFO] [stdout] --> src/command/mod.rs:648:12 [INFO] [stdout] | [INFO] [stdout] 648 | pub struct CommandExecutor { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `execute`, and `execute_builtin` are never used [INFO] [stdout] --> src/command/mod.rs:655:12 [INFO] [stdout] | [INFO] [stdout] 653 | impl CommandExecutor { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 654 | /// 创建命令执行器 [INFO] [stdout] 655 | pub fn new(editor: &mut Editor) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 662 | pub fn execute(&self, cmd_type: CommandType) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 677 | fn execute_builtin(&self, editor: &mut Editor, cmd: BuiltinCommand) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_TOGGLE_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:812:11 [INFO] [stdout] | [INFO] [stdout] 812 | pub const CMD_TOGGLE_TERMINAL: &str = "toggle_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_FOCUS_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:813:11 [INFO] [stdout] | [INFO] [stdout] 813 | pub const CMD_FOCUS_TERMINAL: &str = "focus_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_EXIT_TERMINAL_FOCUS` is never used [INFO] [stdout] --> src/command/mod.rs:814:11 [INFO] [stdout] | [INFO] [stdout] 814 | pub const CMD_EXIT_TERMINAL_FOCUS: &str = "exit_terminal_focus"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_CLEAR_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:815:11 [INFO] [stdout] | [INFO] [stdout] 815 | pub const CMD_CLEAR_TERMINAL: &str = "clear_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_RESTART_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:816:11 [INFO] [stdout] | [INFO] [stdout] 816 | pub const CMD_RESTART_TERMINAL: &str = "restart_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CMD_SEND_TO_TERMINAL` is never used [INFO] [stdout] --> src/command/mod.rs:817:11 [INFO] [stdout] | [INFO] [stdout] 817 | pub const CMD_SEND_TO_TERMINAL: &str = "send_to_terminal"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `description`, `usage`, and `examples` are never read [INFO] [stdout] --> src/command/help.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct CommandHelp { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 11 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub usage: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 17 | pub examples: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandHelp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `name` and `description` are never used [INFO] [stdout] --> src/command/help.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 57 | impl HelpCategory { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] 58 | /// 获取分类名称 [INFO] [stdout] 59 | pub fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn description(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/command/help.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 100 | impl HelpSystem { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn get_command(&self, name: &str) -> Option<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn fuzzy_match(&self, partial_name: &str) -> Vec<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 229 | pub fn get_category_commands(&self, category: &HelpCategory) -> Vec<&CommandHelp> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn format_command_help(&self, help: &CommandHelp) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn format_category_help(&self, category: &HelpCategory) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 279 | pub fn format_help_overview(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 311 | pub fn get_general_help(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | pub fn get_topic_help(&self, topic: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_option` and `get_all_options` are never used [INFO] [stdout] --> src/config/mod.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 246 | impl Config { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] 247 | /// 获取指定选项的值 [INFO] [stdout] 248 | pub fn get_option(&self, option: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | pub fn get_all_options(&self) -> Vec<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KeyBindings` is never constructed [INFO] [stdout] --> src/config/keybindings.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyBindings { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/config/keybindings.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl KeyBindings { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 50 | /// 创建新的键绑定配置 [INFO] [stdout] 51 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_mapping(&mut self, mode: &str, key: &str, command: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn get_mapping(&self, mode: &str, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn remove_mapping(&mut self, mode: &str, key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn get_mode_mappings(&self, mode: &str) -> Option<&HashMap> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn clear_mode_mappings(&mut self, mode: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn merge(&mut self, other: &KeyBindings) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn from_config(config: &crate::config::Config) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `keymaps`, `highlighter`, `screen_height`, `repeat_count`, `last_command`, and `help_system` are never read [INFO] [stdout] --> src/editor/mod.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Editor { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 60 | pub keymaps: HashMap>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub highlighter: Highlighter, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub screen_height: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub repeat_count: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub last_command: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub help_system: crate::command::help::HelpSystem, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Error` is never constructed [INFO] [stdout] --> src/editor/mod.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 131 | pub enum EditorStatus { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 134 | Error(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EditorStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timestamp` is never read [INFO] [stdout] --> src/editor/mod.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct StatusMessage { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 146 | pub timestamp: Instant, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchOptions` is never constructed [INFO] [stdout] --> src/editor/mod.rs:150:12 [INFO] [stdout] | [INFO] [stdout] 150 | pub struct SearchOptions { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `ReplaceConfirm` is never constructed [INFO] [stdout] --> src/editor/mod.rs:177:5 [INFO] [stdout] | [INFO] [stdout] 166 | pub enum CommandLineMode { [INFO] [stdout] | --------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 177 | ReplaceConfirm, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandLineMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EditorRef` is never constructed [INFO] [stdout] --> src/editor/mod.rs:193:12 [INFO] [stdout] | [INFO] [stdout] 193 | pub struct EditorRef<'a> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `open_file`, `close_file_browser`, and `set_status_message` are never used [INFO] [stdout] --> src/editor/mod.rs:201:12 [INFO] [stdout] | [INFO] [stdout] 200 | impl<'a> EditorRef<'a> { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] 201 | pub fn open_file(&self, path: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | pub fn close_file_browser(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub fn set_status_message(&mut self, content: impl Into, msg_type: StatusMessageType) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/editor/mod.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl Editor { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | fn move_cursor_end(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | fn page_up(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | fn page_down(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 518 | pub fn load_lazy_plugin(&mut self, name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1279 | pub fn close_current_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1322 | pub fn close_all_buffers(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1338 | pub fn previous_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1353 | pub fn switch_to_buffer(&mut self, idx: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1374 | pub fn new_buffer(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1393 | pub fn next_buffer(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1408 | pub fn reload_current_file(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_tab_ids` and `get_tab` are never used [INFO] [stdout] --> src/editor/window.rs:114:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl TabManager { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn get_tab_ids(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn get_tab(&self, tab_id: TabId) -> Result<&Tab> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/editor/window.rs:185:12 [INFO] [stdout] | [INFO] [stdout] 143 | impl Tab { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn split_horizontal(&mut self, buffer_idx: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn split_vertical(&mut self, buffer_idx: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 251 | pub fn close_active_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | pub fn focus_left_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 313 | pub fn focus_right_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 319 | pub fn focus_up_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 325 | pub fn focus_down_window(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `title` is never read [INFO] [stdout] --> src/editor/window.rs:440:9 [INFO] [stdout] | [INFO] [stdout] 434 | pub struct Window { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 440 | pub title: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_scroll` and `set_size` are never used [INFO] [stdout] --> src/editor/window.rs:492:12 [INFO] [stdout] | [INFO] [stdout] 455 | impl Window { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 492 | pub fn set_scroll(&mut self, line: usize, col: usize) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 497 | pub fn set_size(&mut self, width: usize, height: usize) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `HorizontalTriple`, `VerticalTriple`, and `Grid` are never constructed [INFO] [stdout] --> src/editor/window.rs:561:5 [INFO] [stdout] | [INFO] [stdout] 553 | pub enum Layout { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 561 | HorizontalTriple, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 562 | /// 垂直三分(左中右三个窗口) [INFO] [stdout] 563 | VerticalTriple, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 564 | /// 四分格(2x2网格) [INFO] [stdout] 565 | Grid, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Layout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Status` is never constructed [INFO] [stdout] --> src/editor/status.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Status { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `info`, `warning`, `error`, and `success` are never used [INFO] [stdout] --> src/editor/status.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Status { [INFO] [stdout] | ----------- associated functions in this implementation [INFO] [stdout] 26 | /// 创建一个新的普通信息消息 [INFO] [stdout] 27 | pub fn info>(message: T) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn warning>(message: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn error>(message: T) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn success>(message: T) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `command_mappings` is never read [INFO] [stdout] --> src/input/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct KeyHandler { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | command_mappings: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_command_buffer` and `set_mapping` are never used [INFO] [stdout] --> src/input/mod.rs:453:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl KeyHandler { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn get_command_buffer(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub fn set_mapping(&mut self, mode: &str, key: String, command: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RustDynlib` is never constructed [INFO] [stdout] --> src/plugin/mod.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum PluginType { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 18 | RustDynlib, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/plugin/mod.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | Local(PathBuf), [INFO] [stdout] | ----- ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PluginSource` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 25 - Local(PathBuf), [INFO] [stdout] 25 + Local(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Git` is never constructed [INFO] [stdout] --> src/plugin/mod.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum PluginSource { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | Git { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PluginSource` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/plugin/mod.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct PluginMetadata { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 37 | /// 插件名称 [INFO] [stdout] 38 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub version: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub author: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub plugin_type: PluginType, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub source: PluginSource, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub lazy: bool, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub dependencies: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `root` is never read [INFO] [stdout] --> src/plugin/mod.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct NvimPluginDirs { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 85 | /// 根目录 [INFO] [stdout] 86 | pub root: PathBuf, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `install_plugins`, `install_plugin`, `create_plugin_metadata`, `load_lazy_plugin`, `get_plugins`, and `is_loading` are never used [INFO] [stdout] --> src/plugin/mod.rs:158:12 [INFO] [stdout] | [INFO] [stdout] 95 | impl PluginManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn install_plugins(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | fn install_plugin(&mut self, name: &str, source: &PluginSource) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | fn create_plugin_metadata(&self, name: &str, path: &Path, source: PluginSource, lazy: bool) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 402 | pub fn load_lazy_plugin(&mut self, name: &str, lua_env: &mut lua::LuaEnv) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 434 | pub fn get_plugins(&self) -> &[PluginMetadata] { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 439 | pub fn is_loading(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `config`, `loaded_modules`, and `loaded_nvim_plugins` are never read [INFO] [stdout] --> src/plugin/lua/mod.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct LuaEnv { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 14 | config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | loaded_modules: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | loaded_nvim_plugins: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `setup_neovim_require`, `get_globals`, and `set_config` are never used [INFO] [stdout] --> src/plugin/lua/mod.rs:369:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl LuaEnv { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 369 | pub fn setup_neovim_require(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | pub fn set_config(&mut self, option: &str, value: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `handle_vim_command` and `run_plugin_init_script` are never used [INFO] [stdout] --> src/plugin/nvim_compat/mod.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl NeovimCompat { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn handle_vim_command(&self, cmd: &str, lua_env: &mut LuaEnv) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn run_plugin_init_script(&self, plugin_path: &Path, lua_env: &mut LuaEnv) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_dir` is never read [INFO] [stdout] --> src/plugin/package_manager.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct PackageManager { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | temp_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_plugin_config` and `load_lazy_plugin` are never used [INFO] [stdout] --> src/plugin/package_manager.rs:252:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl PackageManager { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 252 | fn find_plugin_config(&self, name: &str) -> Option<&PluginConfig> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub fn load_lazy_plugin(&self, name: &str, plugin_manager: &mut PluginManager, lua_env: &mut LuaEnv) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_key_event` is never used [INFO] [stdout] --> src/ui/mod.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn handle_key_event(editor: &mut Editor, key: KeyEvent) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1155:4 [INFO] [stdout] | [INFO] [stdout] 1155 | fn draw_search_info( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_highlight_spans` is never used [INFO] [stdout] --> src/ui/mod.rs:1340:4 [INFO] [stdout] | [INFO] [stdout] 1340 | fn get_highlight_spans(buffer: &Buffer, line: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_syntax_highlight` is never used [INFO] [stdout] --> src/ui/mod.rs:1353:4 [INFO] [stdout] | [INFO] [stdout] 1353 | fn render_syntax_highlight(line: &str, line_idx: usize, line_highlights: &[HighlightSpan], get_highlight_style: impl Fn(&HighlightStyle) ... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_search_info` is never used [INFO] [stdout] --> src/ui/mod.rs:1527:4 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_filenames_panel` is never used [INFO] [stdout] --> src/ui/mod.rs:1575:4 [INFO] [stdout] | [INFO] [stdout] 1575 | fn render_filenames_panel(f: &mut Frame, rect: Rect, editor: &Editor) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `RegexError` and `Generic` are never constructed [INFO] [stdout] --> src/error/mod.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum FKVimError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 34 | RegexError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | Generic(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FKVimError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `process_output`, `visible_lines`, `close`, `scroll_up`, `scroll_down`, and `restart` are never used [INFO] [stdout] --> src/terminal/mod.rs:440:12 [INFO] [stdout] | [INFO] [stdout] 45 | impl TerminalSession { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn process_output(&mut self, line: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn visible_lines(&self, height: u16) -> Vec<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | pub fn close(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 507 | pub fn scroll_up(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 516 | pub fn scroll_down(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 531 | pub async fn restart(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Horizontal`, `Vertical`, and `Grid` are never constructed [INFO] [stdout] --> src/terminal/mod.rs:585:5 [INFO] [stdout] | [INFO] [stdout] 581 | pub enum TerminalLayout { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 585 | Horizontal, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 586 | /// 垂直分割(左右布局) [INFO] [stdout] 587 | Vertical, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 588 | /// 四象限分割 [INFO] [stdout] 589 | Grid, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TerminalLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layout` is never read [INFO] [stdout] --> src/terminal/mod.rs:605:9 [INFO] [stdout] | [INFO] [stdout] 593 | pub struct Terminal { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 605 | pub layout: TerminalLayout, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/terminal/mod.rs:665:12 [INFO] [stdout] | [INFO] [stdout] 612 | impl Terminal { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 665 | pub fn switch_tab(&mut self, index: usize) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 695 | pub fn close_current_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 727 | pub fn rename_current_tab(&mut self, new_name: String) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 782 | pub fn set_layout(&mut self, layout: TerminalLayout) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 823 | pub fn next_session(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 841 | pub fn prev_session(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 863 | pub fn start(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 877 | pub fn visible_lines(&self) -> Vec<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 888 | pub fn resize(&mut self, height: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 898 | pub fn close(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 920 | pub fn is_visible(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 957 | pub fn scroll_up(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 966 | pub fn scroll_down(&mut self, lines: usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1015 | pub fn get_tab_names(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1020 | pub fn get_tab_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1025 | pub fn get_active_session(&self) -> Option<&TerminalSession> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1044 | pub fn get_layout_sessions(&self) -> Vec<&TerminalSession> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1051 | pub fn is_active_session(&self, session_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1135 | pub fn next_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1165 | pub fn prev_tab(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1195 | pub fn next_split(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1221 | pub fn create_tab(&mut self, name: String) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1244 | pub fn init(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/highlight/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum HighlightStyle { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 11 | /// 普通文本 [INFO] [stdout] 12 | Normal, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | Preprocessor, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | Special, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | Error, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | Search, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | CurrentLine, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | Identifier, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | Property, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | Field, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | Method, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | MethodCall, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | Parameter, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | Text, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | LineNumber, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | LineNumberActive, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HighlightStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `is_dark` are never read [INFO] [stdout] --> src/highlight/mod.rs:110:5 [INFO] [stdout] | [INFO] [stdout] 108 | pub struct Theme { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 109 | /// 主题名称 [INFO] [stdout] 110 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | is_dark: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `foreground`, `background`, and `attributes` are never read [INFO] [stdout] --> src/highlight/mod.rs:121:5 [INFO] [stdout] | [INFO] [stdout] 119 | pub struct StyleAttributes { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 120 | /// 前景色 [INFO] [stdout] 121 | foreground: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 122 | /// 背景色 [INFO] [stdout] 123 | background: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 124 | /// 文本属性 (粗体、斜体等) [INFO] [stdout] 125 | attributes: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StyleAttributes` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `foreground`, `background`, and `attributes` are never used [INFO] [stdout] --> src/highlight/mod.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl StyleAttributes { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn foreground(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn background(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn attributes(&self) -> &[Attribute] { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `get_style`, `is_dark`, `name`, `default_light`, and `from_config` are never used [INFO] [stdout] --> src/highlight/mod.rs:170:12 [INFO] [stdout] | [INFO] [stdout] 154 | impl Theme { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn get_style(&self, style: &HighlightStyle) -> Option<&StyleAttributes> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn is_dark(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn default_light() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn from_config(config: &HashMap, name: &str, is_dark: bool) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_style_name` is never used [INFO] [stdout] --> src/highlight/mod.rs:329:4 [INFO] [stdout] | [INFO] [stdout] 329 | fn parse_style_name(name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_color` is never used [INFO] [stdout] --> src/highlight/mod.rs:354:4 [INFO] [stdout] | [INFO] [stdout] 354 | fn parse_color(color_name: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `highlight` and `name` are never used [INFO] [stdout] --> src/highlight/mod.rs:393:8 [INFO] [stdout] | [INFO] [stdout] 391 | pub trait SyntaxHighlighter: Send + Sync { [INFO] [stdout] | ----------------- methods in this trait [INFO] [stdout] 392 | /// 高亮文本 [INFO] [stdout] 393 | fn highlight(&self, text: &str) -> Result>; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 396 | fn name(&self) -> &str; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_theme` is never read [INFO] [stdout] --> src/highlight/mod.rs:404:5 [INFO] [stdout] | [INFO] [stdout] 400 | pub struct Highlighter { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 404 | current_theme: Theme, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_highlighter_for_file`, `get_highlighter_for_filetype`, `highlight`, `set_theme`, `current_theme`, and `get_style_attributes` are never used [INFO] [stdout] --> src/highlight/mod.rs:435:12 [INFO] [stdout] | [INFO] [stdout] 407 | impl Highlighter { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 435 | pub fn get_highlighter_for_file(&self, file_path: &Path) -> Option<&dyn SyntaxHighlighter> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 443 | pub fn get_highlighter_for_filetype(&self, file_type: &str) -> Option<&dyn SyntaxHighlighter> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn highlight(&self, text: &str, file_type: Option<&str>, file_path: Option<&Path>) -> Result> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 468 | pub fn set_theme(&mut self, theme: Theme) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn current_theme(&self) -> &Theme { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn get_style_attributes(&self, style: &HighlightStyle) -> Option<&StyleAttributes> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CACHE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const CACHE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CACHE_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:13:7 [INFO] [stdout] | [INFO] [stdout] 13 | const MAX_CACHE_SIZE: usize = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSER_POOL_SIZE` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const MAX_PARSER_POOL_SIZE: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PARSING_TIME_MS` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAX_PARSING_TIME_MS: u64 = 200; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FAILURE_EXPIRY_TIME` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const FAILURE_EXPIRY_TIME: Duration = Duration::from_secs(300); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RETRY_COUNT` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MAX_RETRY_COUNT: u32 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_INCREMENTAL_DIFF_RATIO` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MAX_INCREMENTAL_DIFF_RATIO: f32 = 0.3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParserPool` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | struct ParserPool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `initialize`, `get_parser`, and `return_parser` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl ParserPool { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 33 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn initialize(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn get_parser(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn return_parser(&self, mut parser: Parser) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheStats` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | struct CacheStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:109:8 [INFO] [stdout] | [INFO] [stdout] 108 | impl CacheStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 109 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn record_hit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn record_miss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn record_eviction(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | fn record_fallback(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn maybe_report(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn report(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveFallbackChain` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AdaptiveFallbackChain { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 173 | impl AdaptiveFallbackChain { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 174 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn next_strategy(&mut self, language: &str, content_length: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | fn analyze_content_for_strategy(&self, content: &str, language: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | fn adjust_scores_for_language(&self, scores: &mut HashMap, language: &str, content_length: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn record_success(&self, language: &str, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 384 | fn record_failure(&self, strategy: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategySuccessRate` is never constructed [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:398:8 [INFO] [stdout] | [INFO] [stdout] 398 | struct StrategySuccessRate { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_success`, `record_failure`, and `success_rate` are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:405:8 [INFO] [stdout] | [INFO] [stdout] 404 | impl StrategySuccessRate { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 405 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | fn record_success(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | fn record_failure(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn success_rate(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FallbackStrategy` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:443:10 [INFO] [stdout] | [INFO] [stdout] 443 | pub enum FallbackStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:464:12 [INFO] [stdout] | [INFO] [stdout] 462 | impl FallbackStrategy { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 463 | /// 获取所有策略 [INFO] [stdout] 464 | pub fn all_strategies() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | fn apply(&self, content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 506 | fn apply_simple_keyword(content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | fn apply_regex_based(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 551 | fn apply_fragment_parsing(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | fn apply_heuristic(_content: &str, _language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn apply_mimic_similar(_content: &str, language: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_highlight` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:584:4 [INFO] [stdout] | [INFO] [stdout] 584 | fn create_highlight(style: HighlightStyle, abs_pos: usize, text: &str, line_starts: &[usize]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_line_starts` is never used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:616:4 [INFO] [stdout] | [INFO] [stdout] 616 | fn get_line_starts(content: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `undo` and `redo` are never used [INFO] [stdout] --> src/history/mod.rs:4:8 [INFO] [stdout] | [INFO] [stdout] 2 | pub trait ReversibleEdit: std::fmt::Debug { [INFO] [stdout] | -------------- methods in this trait [INFO] [stdout] 3 | /// 撤销操作 [INFO] [stdout] 4 | fn undo(&self) -> Operation; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 7 | fn redo(&self) -> Operation; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/history/mod.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | Insert(usize, usize, String), [INFO] [stdout] | ------ ^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 14 - Insert(usize, usize, String), [INFO] [stdout] 14 + Insert((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/history/mod.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | Delete(usize, usize, String), [INFO] [stdout] | ------ ^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 17 - Delete(usize, usize, String), [INFO] [stdout] 17 + Delete((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Replace` is never constructed [INFO] [stdout] --> src/history/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum Operation { [INFO] [stdout] | --------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 20 | Replace(usize, usize, String, String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Operation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `undo_op` and `redo_op` are never read [INFO] [stdout] --> src/history/mod.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct EditOperation { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 42 | /// 撤销操作 [INFO] [stdout] 43 | pub undo_op: Operation, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub redo_op: Operation, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EditOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/history/mod.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 81 | impl History { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn can_undo(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn can_redo(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn undo(&mut self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn redo(&mut self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn finish_undo_redo(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn start_compound_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn end_compound_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompoundEdit` is never constructed [INFO] [stdout] --> src/history/mod.rs:203:12 [INFO] [stdout] | [INFO] [stdout] 203 | pub struct CompoundEdit { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Time`, `Size`, and `Type` are never constructed [INFO] [stdout] --> src/file_browser/mod.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum SortMode { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 13 | Time, [INFO] [stdout] | ^^^^ [INFO] [stdout] 14 | /// 按文件大小排序 [INFO] [stdout] 15 | Size, [INFO] [stdout] | ^^^^ [INFO] [stdout] 16 | /// 按文件类型排序 [INFO] [stdout] 17 | Type, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SortMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Simple` is never constructed [INFO] [stdout] --> src/file_browser/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub enum ViewMode { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] 23 | /// 简单视图,仅显示文件名 [INFO] [stdout] 24 | Simple, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ViewMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `show_hidden` and `pattern` are never read [INFO] [stdout] --> src/file_browser/mod.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct FileFilter { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 32 | /// 隐藏或显示隐藏文件 [INFO] [stdout] 33 | pub show_hidden: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 34 | /// 文件通配符 [INFO] [stdout] 35 | pub pattern: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileFilter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `size` is never read [INFO] [stdout] --> src/file_browser/mod.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct FileEntry { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 65 | pub size: u64, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/file_browser/mod.rs:282:12 [INFO] [stdout] | [INFO] [stdout] 157 | impl FileBrowser { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 282 | pub fn move_selection(&mut self, offset: isize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 299 | pub fn enter_selected(&mut self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | pub fn go_parent(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub fn get_display_name(&self, idx: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | pub fn toggle_sort_mode(&mut self, mode: SortMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 482 | pub fn set_filter(&mut self, filter: String) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 488 | pub fn add_to_bookmarks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 493 | pub fn remove_from_bookmarks(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 498 | pub fn toggle_hidden_files(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 504 | pub fn update_preview(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | pub fn toggle_preview(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 616 | pub fn delete_selected(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 646 | pub fn rename_selected(&mut self, new_name: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 681 | pub fn copy_selected(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 702 | pub fn paste_file(&mut self, source_path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 746 | fn copy_dir_recursively(&self, src: &Path, dst: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 765 | pub fn visible_items(&self, height: usize) -> Vec<&FileItem> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 776 | pub fn ensure_selection_visible(&mut self, height: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 798 | pub fn goto_bookmark(&mut self, bookmark: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 922 | pub fn search_files(&mut self, search_term: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 957 | pub fn clear_selections(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/plugin/lua/mod.rs:424:24 [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result
{ [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 424 | pub fn get_globals(&self) -> Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1417:30 [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1417 | fn render_status_bar(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1473:32 [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1473 | fn render_command_line(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui/mod.rs:1527:31 [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec { [INFO] [stdout] | ^^^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1527 | fn render_search_info(editor: &Editor) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 48 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/highlight/tree_sitter_highlight.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | parser.set_included_ranges(&[]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 64 | let _ = parser.set_included_ranges(&[]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 00s [INFO] running `Command { std: "docker" "inspect" "855095ce32576c480ffa224e8da969df26b52b663ecd4ca1bbda4c88ed29054b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "855095ce32576c480ffa224e8da969df26b52b663ecd4ca1bbda4c88ed29054b", kill_on_drop: false }` [INFO] [stdout] 855095ce32576c480ffa224e8da969df26b52b663ecd4ca1bbda4c88ed29054b