[INFO] cloning repository https://github.com/dheerajgopi/termide
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dheerajgopi/termide" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdheerajgopi%2Ftermide", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdheerajgopi%2Ftermide'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 72ac825b218df1b56eff4dae576d2754f781df1f
[INFO] building dheerajgopi/termide against try#58b1b3c5342a414c161338871f8004258ccef2a7 for pr-149937
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdheerajgopi%2Ftermide" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/dheerajgopi/termide
[INFO] finished tweaking git repo https://github.com/dheerajgopi/termide
[INFO] tweaked toml for git repo https://github.com/dheerajgopi/termide written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/dheerajgopi/termide on toolchain 58b1b3c5342a414c161338871f8004258ccef2a7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+58b1b3c5342a414c161338871f8004258ccef2a7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/dheerajgopi/termide 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" "+58b1b3c5342a414c161338871f8004258ccef2a7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded notify-debouncer-mini v0.7.0
[INFO] [stderr]   Downloaded str_indices v0.4.4
[INFO] [stderr]   Downloaded indoc v2.0.7
[INFO] [stderr]   Downloaded ropey v1.6.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+58b1b3c5342a414c161338871f8004258ccef2a7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6788081840a404d129e09a2a31b04e7500a177db428210ec2afb45105b6ff5cb
[INFO] running `Command { std: "docker" "start" "-a" "6788081840a404d129e09a2a31b04e7500a177db428210ec2afb45105b6ff5cb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6788081840a404d129e09a2a31b04e7500a177db428210ec2afb45105b6ff5cb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6788081840a404d129e09a2a31b04e7500a177db428210ec2afb45105b6ff5cb", kill_on_drop: false }`
[INFO] [stdout] 6788081840a404d129e09a2a31b04e7500a177db428210ec2afb45105b6ff5cb
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+58b1b3c5342a414c161338871f8004258ccef2a7" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ca5f4a02e9750623f233873f5956951687f5f233817282239eb3af9c12edcc05
[INFO] running `Command { std: "docker" "start" "-a" "ca5f4a02e9750623f233873f5956951687f5f233817282239eb3af9c12edcc05", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling signal-hook-registry v1.4.7
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling convert_case v0.7.1
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling instability v0.3.9
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling notify-types v2.0.0
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling inotify v0.11.0
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling str_indices v0.4.4
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling notify v8.2.0
[INFO] [stderr]    Compiling ropey v1.6.1
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling toml_parser v1.0.4
[INFO] [stderr]    Compiling toml v0.9.8
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling notify-debouncer-mini v0.7.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling derive_more v2.0.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling termide-plugin-api v0.1.0 (/opt/rustwide/workdir/crates/termide-plugin-api)
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling termide v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `selection::Selection`
[INFO] [stdout]   --> src/buffer/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use selection::Selection;
[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 import: `renderer::Renderer`
[INFO] [stdout]   --> src/ui/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use renderer::Renderer;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Buffer` is never constructed
[INFO] [stdout]   --> src/buffer/buffer.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Buffer {
[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/buffer/buffer.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl Buffer {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn from_str(content: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn insert_char(&mut self, ch: char, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn delete_char_at(&mut self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn delete_forward(&mut self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn get_line_start(&self, pos: Position) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn get_line_end(&self, pos: Position) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn page_up(&self, pos: Position, viewport_height: usize) -> Position {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn page_down(&self, pos: Position, viewport_height: usize) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     fn clamp_column_to_line(&self, line: usize, column: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn content(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn line_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     pub fn get_line(&self, line: usize) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub fn line_len(&self, line: usize) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn is_dirty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub fn clear_dirty(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn set_dirty(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn file_path(&self) -> Option<&PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub fn set_file_path(&mut self, path: PathBuf) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 388 |     pub fn is_valid_position(&self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     pub fn clamp_position(&self, pos: Position) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     fn position_to_char_idx(&self, pos: Position) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn len_chars(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/buffer/position.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Position {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `origin` are never used
[INFO] [stdout]   --> src/buffer/position.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Position {
[INFO] [stdout]    | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn new(line: usize, column: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn origin() -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Selection` is never constructed
[INFO] [stdout]   --> src/buffer/selection.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct Selection {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/buffer/selection.rs:52:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Selection {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new(pos: Position) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn with_anchor_and_cursor(anchor: Position, cursor: Position) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn anchor(&self) -> Position {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn cursor(&self) -> Position {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn has_selection(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn range(&self) -> (Position, Position) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn contains(&self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn extend_to(self, pos: Position) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn clear(self) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseModeError` is never constructed
[INFO] [stdout]  --> src/editor/editor_mode.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ParseModeError {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EditorMode` is never used
[INFO] [stdout]   --> src/editor/editor_mode.rs:47:10
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum EditorMode {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]   --> src/editor/editor_mode.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl EditorMode {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn to_string(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorState` is never constructed
[INFO] [stdout]   --> src/editor/editor_state.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct EditorState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/editor/editor_state.rs:69:12
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl EditorState {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn from_file(path: &Path) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn buffer(&self) -> &Buffer {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn buffer_mut(&mut self) -> &mut Buffer {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn mode(&self) -> EditorMode {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn set_mode(&mut self, mode: EditorMode) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn status_message(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn set_status_message(&mut self, message: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn clear_status_message(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn should_quit(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn request_quit(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn force_quit(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn handle_char_insert(&mut self, ch: char, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn handle_char_delete(&mut self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn set_file_path(&mut self, path: &Path) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn prompt_input(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn prompt_message(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn enter_prompt(&mut self, message: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn prompt_insert_char(&mut self, ch: char) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn prompt_delete_char(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn accept_prompt(&mut self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub fn cancel_prompt(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn save(&mut self) -> Result<bool> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn save_as(&mut self, path: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file` is never used
[INFO] [stdout]   --> src/file_io/read.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn read_file(path: &Path) -> Result<String> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_file` is never used
[INFO] [stdout]   --> src/file_io/write.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn write_file(path: &Path, content: &str) -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_default_bindings` is never used
[INFO] [stdout]   --> src/input/bindings.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn register_default_bindings(registry: &mut KeyBindingRegistry) -> Result<(), BindingError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `global_bindings` is never used
[INFO] [stdout]    --> src/input/bindings.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub fn global_bindings() -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insert_mode_bindings` is never used
[INFO] [stdout]    --> src/input/bindings.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn insert_mode_bindings() -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normal_mode_bindings` is never used
[INFO] [stdout]    --> src/input/bindings.rs:261:8
[INFO] [stdout]     |
[INFO] [stdout] 261 | pub fn normal_mode_bindings() -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prompt_mode_bindings` is never used
[INFO] [stdout]    --> src/input/bindings.rs:305:8
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn prompt_mode_bindings() -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arrow_key_navigation` is never used
[INFO] [stdout]    --> src/input/bindings.rs:364:8
[INFO] [stdout]     |
[INFO] [stdout] 364 | pub fn arrow_key_navigation(modes: Vec<EditorMode>) -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `navigation_commands` is never used
[INFO] [stdout]    --> src/input/bindings.rs:431:8
[INFO] [stdout]     |
[INFO] [stdout] 431 | pub fn navigation_commands(modes: Vec<EditorMode>) -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EditorCommand` is never used
[INFO] [stdout]   --> src/input/command.rs:75:10
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum EditorCommand {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CommandParseError` is never used
[INFO] [stdout]    --> src/input/command.rs:362:10
[INFO] [stdout]     |
[INFO] [stdout] 362 | pub enum CommandParseError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_plugin_command` is never used
[INFO] [stdout]    --> src/input/command.rs:540:4
[INFO] [stdout]     |
[INFO] [stdout] 540 | fn parse_plugin_command(s: &str) -> Result<EditorCommand, CommandParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoadResult` is never constructed
[INFO] [stdout]   --> src/input/config.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct LoadResult {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]   --> src/input/config.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum ConfigError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeybindingConfig` is never constructed
[INFO] [stdout]    --> src/input/config.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct KeybindingConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserBinding` is never constructed
[INFO] [stdout]    --> src/input/config.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct UserBinding {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_user_keybindings` is never used
[INFO] [stdout]    --> src/input/config.rs:231:8
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub fn load_user_keybindings(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_single_binding` is never used
[INFO] [stdout]    --> src/input/config.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn load_single_binding(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_mode` is never used
[INFO] [stdout]    --> src/input/config.rs:347:8
[INFO] [stdout]     |
[INFO] [stdout] 347 | pub fn parse_mode(s: &str) -> Result<EditorMode, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_parse_error` is never used
[INFO] [stdout]    --> src/input/config.rs:352:4
[INFO] [stdout]     |
[INFO] [stdout] 352 | fn format_parse_error(error: &ParseError) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_command_error` is never used
[INFO] [stdout]    --> src/input/config.rs:369:4
[INFO] [stdout]     |
[INFO] [stdout] 369 | fn format_command_error(error: &CommandParseError) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reload_user_keybindings` is never used
[INFO] [stdout]    --> src/input/config.rs:447:8
[INFO] [stdout]     |
[INFO] [stdout] 447 | pub fn reload_user_keybindings(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_config_path` is never used
[INFO] [stdout]    --> src/input/config.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 486 | pub fn get_config_path() -> Option<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Direction` is never used
[INFO] [stdout]   --> src/input/direction.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MatchResult` is never used
[INFO] [stdout]    --> src/input/input_handler.rs:175:10
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub enum MatchResult {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InputHandler` is never constructed
[INFO] [stdout]    --> src/input/input_handler.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub struct InputHandler {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/input/input_handler.rs:231:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl InputHandler {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub fn with_timeout(timeout: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn register_binding(&mut self, binding: KeyBinding) -> Result<(), BindingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn registry_mut(&mut self) -> &mut KeyBindingRegistry {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn process_key_event(&mut self, event: KeyEvent, mode: EditorMode) -> MatchResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     pub fn on_mode_change(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn check_timeout(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRIMARY_MODIFIER` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:122:11
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub const PRIMARY_MODIFIER: KeyModifiers = KeyModifiers::CONTROL;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyPattern` is never constructed
[INFO] [stdout]    --> src/input/keybinding.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct KeyPattern {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `matches` are never used
[INFO] [stdout]    --> src/input/keybinding.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | impl KeyPattern {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn new(code: KeyCode, modifiers: KeyModifiers) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn matches(&self, event: &KeyEvent) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeySequence` is never constructed
[INFO] [stdout]    --> src/input/keybinding.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct KeySequence {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `len`, `is_empty`, `matches`, and `is_partial_match` are never used
[INFO] [stdout]    --> src/input/keybinding.rs:307:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl KeySequence {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn new(patterns: Vec<KeyPattern>) -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn matches(&self, buffer: &[KeyPattern]) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn is_partial_match(&self, buffer: &[KeyPattern]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParseError` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:458:10
[INFO] [stdout]     |
[INFO] [stdout] 458 | pub enum ParseError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_key_pattern` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:573:4
[INFO] [stdout]     |
[INFO] [stdout] 573 | fn parse_key_pattern(s: &str) -> Result<KeyPattern, ParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_modifier` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:604:4
[INFO] [stdout]     |
[INFO] [stdout] 604 | fn parse_modifier(s: &str) -> Result<KeyModifiers, ParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_key_code` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:615:4
[INFO] [stdout]     |
[INFO] [stdout] 615 | fn parse_key_code(s: &str) -> Result<KeyCode, ParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BindingContext` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:693:10
[INFO] [stdout]     |
[INFO] [stdout] 693 | pub enum BindingContext {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_active` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:772:12
[INFO] [stdout]     |
[INFO] [stdout] 724 | impl BindingContext {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 772 |     pub fn is_active(&self, current_mode: EditorMode) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Priority` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:818:10
[INFO] [stdout]     |
[INFO] [stdout] 818 | pub enum Priority {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyBinding` is never constructed
[INFO] [stdout]    --> src/input/keybinding.rs:859:12
[INFO] [stdout]     |
[INFO] [stdout] 859 | pub struct KeyBinding {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sequence`, `command`, `context`, and `priority` are never used
[INFO] [stdout]    --> src/input/keybinding.rs:908:12
[INFO] [stdout]     |
[INFO] [stdout] 870 | impl KeyBinding {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 908 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 923 |     pub fn sequence(&self) -> &KeySequence {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 928 |     pub fn command(&self) -> &EditorCommand {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 933 |     pub fn context(&self) -> &BindingContext {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 938 |     pub fn priority(&self) -> Priority {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BindingError` is never used
[INFO] [stdout]    --> src/input/registry.rs:124:10
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub enum BindingError {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyBindingRegistry` is never constructed
[INFO] [stdout]    --> src/input/registry.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct KeyBindingRegistry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/input/registry.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl KeyBindingRegistry {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn new(timeout: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn register(&mut self, binding: KeyBinding) -> Result<(), BindingError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn unregister(&mut self, sequence: &KeySequence, context: &BindingContext) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn unregister_by_priority(&mut self, priority: Priority) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn add_to_sequence(&mut self, pattern: KeyPattern) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 484 |     pub fn find_match(&self, current_mode: EditorMode) -> Option<&EditorCommand> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn is_partial_match(&self, current_mode: EditorMode) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn check_timeout(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 612 |     pub fn clear_sequence(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_plugin_context_to_core` is never used
[INFO] [stdout]    --> src/input/registry.rs:755:4
[INFO] [stdout]     |
[INFO] [stdout] 755 | fn convert_plugin_context_to_core(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_plugin_mode_to_core` is never used
[INFO] [stdout]    --> src/input/registry.rs:774:4
[INFO] [stdout]     |
[INFO] [stdout] 774 | fn convert_plugin_mode_to_core(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigWatcher` is never constructed
[INFO] [stdout]   --> src/input/watcher.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct ConfigWatcher {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `check_for_changes` are never used
[INFO] [stdout]    --> src/input/watcher.rs:150:12
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl ConfigWatcher {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new(config_path: &Path) -> Result<Self, notify::Error> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn check_for_changes(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_frame_impl` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn render_frame_impl(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text_area` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn render_text_area(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_status_bar` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:96:4
[INFO] [stdout]    |
[INFO] [stdout] 96 | fn render_status_bar(frame: &mut Frame, area: Rect, state: &EditorState, cursor_pos: Position) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_cursor_screen_position` is never used
[INFO] [stdout]    --> src/ui/renderer.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn calculate_cursor_screen_position(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Renderer` is never constructed
[INFO] [stdout]    --> src/ui/renderer.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub struct Renderer {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ui/renderer.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 229 | impl Renderer {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn restore_terminal(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub fn render(&mut self, state: &EditorState, cursor_pos: Position) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     fn adjust_scroll(&mut self, cursor_pos: Position, terminal_height: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     fn calculate_frame_hash(&self, state: &EditorState, cursor_pos: Position) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 408 |     pub fn scroll_offset(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn set_scroll_offset(&mut self, offset: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub fn force_render(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.98s
[INFO] running `Command { std: "docker" "inspect" "ca5f4a02e9750623f233873f5956951687f5f233817282239eb3af9c12edcc05", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ca5f4a02e9750623f233873f5956951687f5f233817282239eb3af9c12edcc05", kill_on_drop: false }`
[INFO] [stdout] ca5f4a02e9750623f233873f5956951687f5f233817282239eb3af9c12edcc05
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+58b1b3c5342a414c161338871f8004258ccef2a7" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5b317efbdaf6c2d095749dded1750e47e1c0a8a769f3f1d5915773f9d9cbe4dc
[INFO] running `Command { std: "docker" "start" "-a" "5b317efbdaf6c2d095749dded1750e47e1c0a8a769f3f1d5915773f9d9cbe4dc", kill_on_drop: false }`
[INFO] [stderr]    Compiling termide v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `selection::Selection`
[INFO] [stdout]   --> src/buffer/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use selection::Selection;
[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 import: `renderer::Renderer`
[INFO] [stdout]   --> src/ui/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use renderer::Renderer;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Buffer` is never constructed
[INFO] [stdout]   --> src/buffer/buffer.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Buffer {
[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/buffer/buffer.rs:60:12
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl Buffer {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn from_str(content: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn insert_char(&mut self, ch: char, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn delete_char_at(&mut self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn delete_forward(&mut self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn get_line_start(&self, pos: Position) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn get_line_end(&self, pos: Position) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn page_up(&self, pos: Position, viewport_height: usize) -> Position {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn page_down(&self, pos: Position, viewport_height: usize) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     fn clamp_column_to_line(&self, line: usize, column: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn content(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn line_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     pub fn get_line(&self, line: usize) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub fn line_len(&self, line: usize) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn is_dirty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub fn clear_dirty(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn set_dirty(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn file_path(&self) -> Option<&PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub fn set_file_path(&mut self, path: PathBuf) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 388 |     pub fn is_valid_position(&self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     pub fn clamp_position(&self, pos: Position) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     fn position_to_char_idx(&self, pos: Position) -> Option<usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn len_chars(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/buffer/position.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Position {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `origin` are never used
[INFO] [stdout]   --> src/buffer/position.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Position {
[INFO] [stdout]    | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn new(line: usize, column: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn origin() -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Selection` is never constructed
[INFO] [stdout]   --> src/buffer/selection.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct Selection {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/buffer/selection.rs:52:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Selection {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn new(pos: Position) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn with_anchor_and_cursor(anchor: Position, cursor: Position) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn anchor(&self) -> Position {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn cursor(&self) -> Position {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn has_selection(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn range(&self) -> (Position, Position) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn contains(&self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn extend_to(self, pos: Position) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn clear(self) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseModeError` is never constructed
[INFO] [stdout]  --> src/editor/editor_mode.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ParseModeError {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EditorMode` is never used
[INFO] [stdout]   --> src/editor/editor_mode.rs:47:10
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum EditorMode {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]   --> src/editor/editor_mode.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl EditorMode {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn to_string(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorState` is never constructed
[INFO] [stdout]   --> src/editor/editor_state.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct EditorState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/editor/editor_state.rs:69:12
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl EditorState {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn from_file(path: &Path) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn buffer(&self) -> &Buffer {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn buffer_mut(&mut self) -> &mut Buffer {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn mode(&self) -> EditorMode {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn set_mode(&mut self, mode: EditorMode) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn status_message(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn set_status_message(&mut self, message: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn clear_status_message(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn should_quit(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn request_quit(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn force_quit(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn handle_char_insert(&mut self, ch: char, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn handle_char_delete(&mut self, pos: Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn set_file_path(&mut self, path: &Path) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn prompt_input(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn prompt_message(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn enter_prompt(&mut self, message: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn prompt_insert_char(&mut self, ch: char) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn prompt_delete_char(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn accept_prompt(&mut self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub fn cancel_prompt(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn save(&mut self) -> Result<bool> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn save_as(&mut self, path: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file` is never used
[INFO] [stdout]   --> src/file_io/read.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn read_file(path: &Path) -> Result<String> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_file` is never used
[INFO] [stdout]   --> src/file_io/write.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn write_file(path: &Path, content: &str) -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_default_bindings` is never used
[INFO] [stdout]   --> src/input/bindings.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn register_default_bindings(registry: &mut KeyBindingRegistry) -> Result<(), BindingError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `global_bindings` is never used
[INFO] [stdout]    --> src/input/bindings.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub fn global_bindings() -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insert_mode_bindings` is never used
[INFO] [stdout]    --> src/input/bindings.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn insert_mode_bindings() -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normal_mode_bindings` is never used
[INFO] [stdout]    --> src/input/bindings.rs:261:8
[INFO] [stdout]     |
[INFO] [stdout] 261 | pub fn normal_mode_bindings() -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prompt_mode_bindings` is never used
[INFO] [stdout]    --> src/input/bindings.rs:305:8
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn prompt_mode_bindings() -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arrow_key_navigation` is never used
[INFO] [stdout]    --> src/input/bindings.rs:364:8
[INFO] [stdout]     |
[INFO] [stdout] 364 | pub fn arrow_key_navigation(modes: Vec<EditorMode>) -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `navigation_commands` is never used
[INFO] [stdout]    --> src/input/bindings.rs:431:8
[INFO] [stdout]     |
[INFO] [stdout] 431 | pub fn navigation_commands(modes: Vec<EditorMode>) -> Vec<KeyBinding> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EditorCommand` is never used
[INFO] [stdout]   --> src/input/command.rs:75:10
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum EditorCommand {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CommandParseError` is never used
[INFO] [stdout]    --> src/input/command.rs:362:10
[INFO] [stdout]     |
[INFO] [stdout] 362 | pub enum CommandParseError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_plugin_command` is never used
[INFO] [stdout]    --> src/input/command.rs:540:4
[INFO] [stdout]     |
[INFO] [stdout] 540 | fn parse_plugin_command(s: &str) -> Result<EditorCommand, CommandParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoadResult` is never constructed
[INFO] [stdout]   --> src/input/config.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct LoadResult {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]   --> src/input/config.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum ConfigError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeybindingConfig` is never constructed
[INFO] [stdout]    --> src/input/config.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct KeybindingConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserBinding` is never constructed
[INFO] [stdout]    --> src/input/config.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct UserBinding {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_user_keybindings` is never used
[INFO] [stdout]    --> src/input/config.rs:231:8
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub fn load_user_keybindings(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_single_binding` is never used
[INFO] [stdout]    --> src/input/config.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn load_single_binding(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_mode` is never used
[INFO] [stdout]    --> src/input/config.rs:347:8
[INFO] [stdout]     |
[INFO] [stdout] 347 | pub fn parse_mode(s: &str) -> Result<EditorMode, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_parse_error` is never used
[INFO] [stdout]    --> src/input/config.rs:352:4
[INFO] [stdout]     |
[INFO] [stdout] 352 | fn format_parse_error(error: &ParseError) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_command_error` is never used
[INFO] [stdout]    --> src/input/config.rs:369:4
[INFO] [stdout]     |
[INFO] [stdout] 369 | fn format_command_error(error: &CommandParseError) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reload_user_keybindings` is never used
[INFO] [stdout]    --> src/input/config.rs:447:8
[INFO] [stdout]     |
[INFO] [stdout] 447 | pub fn reload_user_keybindings(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_config_path` is never used
[INFO] [stdout]    --> src/input/config.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 486 | pub fn get_config_path() -> Option<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Direction` is never used
[INFO] [stdout]   --> src/input/direction.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MatchResult` is never used
[INFO] [stdout]    --> src/input/input_handler.rs:175:10
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub enum MatchResult {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InputHandler` is never constructed
[INFO] [stdout]    --> src/input/input_handler.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub struct InputHandler {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/input/input_handler.rs:231:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl InputHandler {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub fn with_timeout(timeout: Duration) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn register_binding(&mut self, binding: KeyBinding) -> Result<(), BindingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn registry_mut(&mut self) -> &mut KeyBindingRegistry {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn process_key_event(&mut self, event: KeyEvent, mode: EditorMode) -> MatchResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     pub fn on_mode_change(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn check_timeout(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRIMARY_MODIFIER` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:122:11
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub const PRIMARY_MODIFIER: KeyModifiers = KeyModifiers::CONTROL;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyPattern` is never constructed
[INFO] [stdout]    --> src/input/keybinding.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct KeyPattern {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `matches` are never used
[INFO] [stdout]    --> src/input/keybinding.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | impl KeyPattern {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn new(code: KeyCode, modifiers: KeyModifiers) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn matches(&self, event: &KeyEvent) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeySequence` is never constructed
[INFO] [stdout]    --> src/input/keybinding.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct KeySequence {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `len`, `is_empty`, `matches`, and `is_partial_match` are never used
[INFO] [stdout]    --> src/input/keybinding.rs:307:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl KeySequence {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn new(patterns: Vec<KeyPattern>) -> Option<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn matches(&self, buffer: &[KeyPattern]) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn is_partial_match(&self, buffer: &[KeyPattern]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParseError` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:458:10
[INFO] [stdout]     |
[INFO] [stdout] 458 | pub enum ParseError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_key_pattern` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:573:4
[INFO] [stdout]     |
[INFO] [stdout] 573 | fn parse_key_pattern(s: &str) -> Result<KeyPattern, ParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_modifier` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:604:4
[INFO] [stdout]     |
[INFO] [stdout] 604 | fn parse_modifier(s: &str) -> Result<KeyModifiers, ParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_key_code` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:615:4
[INFO] [stdout]     |
[INFO] [stdout] 615 | fn parse_key_code(s: &str) -> Result<KeyCode, ParseError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BindingContext` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:693:10
[INFO] [stdout]     |
[INFO] [stdout] 693 | pub enum BindingContext {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_active` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:772:12
[INFO] [stdout]     |
[INFO] [stdout] 724 | impl BindingContext {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 772 |     pub fn is_active(&self, current_mode: EditorMode) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Priority` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:818:10
[INFO] [stdout]     |
[INFO] [stdout] 818 | pub enum Priority {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyBinding` is never constructed
[INFO] [stdout]    --> src/input/keybinding.rs:859:12
[INFO] [stdout]     |
[INFO] [stdout] 859 | pub struct KeyBinding {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sequence`, `command`, `context`, and `priority` are never used
[INFO] [stdout]    --> src/input/keybinding.rs:908:12
[INFO] [stdout]     |
[INFO] [stdout] 870 | impl KeyBinding {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 908 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 923 |     pub fn sequence(&self) -> &KeySequence {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 928 |     pub fn command(&self) -> &EditorCommand {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 933 |     pub fn context(&self) -> &BindingContext {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 938 |     pub fn priority(&self) -> Priority {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BindingError` is never used
[INFO] [stdout]    --> src/input/registry.rs:124:10
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub enum BindingError {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyBindingRegistry` is never constructed
[INFO] [stdout]    --> src/input/registry.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct KeyBindingRegistry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/input/registry.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl KeyBindingRegistry {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn new(timeout: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn register(&mut self, binding: KeyBinding) -> Result<(), BindingError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn unregister(&mut self, sequence: &KeySequence, context: &BindingContext) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn unregister_by_priority(&mut self, priority: Priority) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn add_to_sequence(&mut self, pattern: KeyPattern) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 484 |     pub fn find_match(&self, current_mode: EditorMode) -> Option<&EditorCommand> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     pub fn is_partial_match(&self, current_mode: EditorMode) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn check_timeout(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 612 |     pub fn clear_sequence(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_plugin_context_to_core` is never used
[INFO] [stdout]    --> src/input/registry.rs:755:4
[INFO] [stdout]     |
[INFO] [stdout] 755 | fn convert_plugin_context_to_core(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_plugin_mode_to_core` is never used
[INFO] [stdout]    --> src/input/registry.rs:774:4
[INFO] [stdout]     |
[INFO] [stdout] 774 | fn convert_plugin_mode_to_core(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigWatcher` is never constructed
[INFO] [stdout]   --> src/input/watcher.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct ConfigWatcher {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `check_for_changes` are never used
[INFO] [stdout]    --> src/input/watcher.rs:150:12
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl ConfigWatcher {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new(config_path: &Path) -> Result<Self, notify::Error> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn check_for_changes(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_frame_impl` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn render_frame_impl(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text_area` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn render_text_area(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_status_bar` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:96:4
[INFO] [stdout]    |
[INFO] [stdout] 96 | fn render_status_bar(frame: &mut Frame, area: Rect, state: &EditorState, cursor_pos: Position) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_cursor_screen_position` is never used
[INFO] [stdout]    --> src/ui/renderer.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn calculate_cursor_screen_position(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Renderer` is never constructed
[INFO] [stdout]    --> src/ui/renderer.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub struct Renderer {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ui/renderer.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 229 | impl Renderer {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn restore_terminal(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub fn render(&mut self, state: &EditorState, cursor_pos: Position) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     fn adjust_scroll(&mut self, cursor_pos: Position, terminal_height: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     fn calculate_frame_hash(&self, state: &EditorState, cursor_pos: Position) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 408 |     pub fn scroll_offset(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn set_scroll_offset(&mut self, offset: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub fn force_render(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f_num`
[INFO] [stdout]    --> tests/integration_tests.rs:476:61
[INFO] [stdout]     |
[INFO] [stdout] 476 |     for (key_str, cmd_str, _expected_plugin, _expected_cmd, f_num) in &bindings {
[INFO] [stdout]     |                                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_f_num`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `renderer::Renderer`
[INFO] [stdout]   --> src/ui/mod.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use renderer::Renderer;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_dirty` is never used
[INFO] [stdout]    --> src/buffer/buffer.rs:361:12
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl Buffer {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn set_dirty(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_as` is never used
[INFO] [stdout]    --> src/editor/editor_state.rs:379:12
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl EditorState {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn save_as(&mut self, path: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PromptInsertChar` is never constructed
[INFO] [stdout]    --> src/input/command.rs:292:5
[INFO] [stdout]     |
[INFO] [stdout]  75 | pub enum EditorCommand {
[INFO] [stdout]     |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 292 |     PromptInsertChar(char),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EditorCommand` 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 `InvalidParameter` is never constructed
[INFO] [stdout]    --> src/input/command.rs:373:5
[INFO] [stdout]     |
[INFO] [stdout] 362 | pub enum CommandParseError {
[INFO] [stdout]     |          ----------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 373 |     InvalidParameter {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CommandParseError` 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 `warnings` is never read
[INFO] [stdout]   --> src/input/config.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct LoadResult {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub warnings: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LoadResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BindingConflict` is never constructed
[INFO] [stdout]    --> src/input/config.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout]  67 | pub enum ConfigError {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 105 |     BindingConflict {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConfigError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reload_user_keybindings` is never used
[INFO] [stdout]    --> src/input/config.rs:447:8
[INFO] [stdout]     |
[INFO] [stdout] 447 | pub fn reload_user_keybindings(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_config_path` is never used
[INFO] [stdout]    --> src/input/config.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 486 | pub fn get_config_path() -> Option<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_empty` is never used
[INFO] [stdout]    --> src/input/keybinding.rs:342:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl KeySequence {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidSequence` and `InvalidContext` are never constructed
[INFO] [stdout]    --> src/input/registry.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub enum BindingError {
[INFO] [stdout]     |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 138 |     InvalidSequence(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     InvalidContext(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BindingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigWatcher` is never constructed
[INFO] [stdout]   --> src/input/watcher.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct ConfigWatcher {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `check_for_changes` are never used
[INFO] [stdout]    --> src/input/watcher.rs:150:12
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl ConfigWatcher {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new(config_path: &Path) -> Result<Self, notify::Error> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn check_for_changes(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_frame_impl` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn render_frame_impl(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text_area` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn render_text_area(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_status_bar` is never used
[INFO] [stdout]   --> src/ui/renderer.rs:96:4
[INFO] [stdout]    |
[INFO] [stdout] 96 | fn render_status_bar(frame: &mut Frame, area: Rect, state: &EditorState, cursor_pos: Position) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_cursor_screen_position` is never used
[INFO] [stdout]    --> src/ui/renderer.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn calculate_cursor_screen_position(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Renderer` is never constructed
[INFO] [stdout]    --> src/ui/renderer.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub struct Renderer {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ui/renderer.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 229 | impl Renderer {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn restore_terminal(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub fn render(&mut self, state: &EditorState, cursor_pos: Position) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     fn adjust_scroll(&mut self, cursor_pos: Position, terminal_height: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     fn calculate_frame_hash(&self, state: &EditorState, cursor_pos: Position) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 408 |     pub fn scroll_offset(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn set_scroll_offset(&mut self, offset: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub fn force_render(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.77s
[INFO] running `Command { std: "docker" "inspect" "5b317efbdaf6c2d095749dded1750e47e1c0a8a769f3f1d5915773f9d9cbe4dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b317efbdaf6c2d095749dded1750e47e1c0a8a769f3f1d5915773f9d9cbe4dc", kill_on_drop: false }`
[INFO] [stdout] 5b317efbdaf6c2d095749dded1750e47e1c0a8a769f3f1d5915773f9d9cbe4dc
