Skip to main content

App

Struct App 

Source
pub struct App {
Show 124 fields pub running: bool, pub mode: Mode, pub buffer: Buffer, pub message: String, pub filename: Option<PathBuf>, pub scroll: usize, pub xlc: Xlc, pub undo_stack: UndoStack, pub yank_buffer: Option<String>, pub registers: Registers, pub marks: Marks, pub jumps: JumpList, pub last_find: Option<LastFind>, pub pending_register: bool, pub pending_mark_set: bool, pub pending_mark_jump: Option<bool>, pub pending_key: Option<char>, pub pending_ft: Option<char>, pub count: Option<usize>, pub pending_hints: Vec<(&'static str, &'static str)>, pub which_key: WhichKeyState, pub visual_anchor: Option<Position>, pub search_pattern: Option<String>, pub search_input: String, pub search_matches: Vec<Position>, pub search_current: usize, pub search_origin: Option<Position>, pub search_scroll_origin: usize, pub search_forward: bool, pub completions: Completions, pub modified: bool, pub mouse: MouseState, pub viewport: EditorViewport, pub explorer: Explorer, pub terminal: Terminal, pub explorer_width: u16, pub terminal_width: u16, pub resize_target: Option<ResizeTarget>, pub explorer_separator_x: u16, pub terminal_separator_x: u16, pub screen_width: u16, pub screen_height: u16, pub theme: &'static Theme, pub xlc_height: u16, pub xlc_separator_y: u16, pub file_mtime: Option<SystemTime>, pub buffers: Vec<BufferTab>, pub current_buffer: usize, pub syntax: SyntaxEngine, pub lsp: LspClient, pub debug: bool, pub show_metrics: bool, pub metrics: ProcMetrics, pub bench_report: Option<BenchReport>, pub last_change: Option<LastChange>, pub pending_operator: Option<Operator>, pub pending_to_mod: Option<char>, pub tab_hit_regions: Vec<(u16, u16, usize)>, pub tab_bar_y: u16, pub screen_row_to_buffer: Vec<usize>, pub screen_row_visual_base: Vec<usize>, pub palette: Palette, pub hover_text: Option<String>, pub last_click: Option<(u16, u16, Instant)>, pub macros: MacroBank, pub tab_width: usize, pub clipboard_sync: bool, pub relative_number: bool, pub wrap_lines: bool, pub undo_caching: bool, pub gpu_graphics: bool, pub gpu_hyperlinks: bool, pub hscroll: usize, pub syntax_seen_version: u64, pub git: GitGutter, pub blame: GitBlame, pub folds: FoldState, pub multi: MultiCursor, pub scm: ScmPanel, pub git_wb: GitWorkbench, pub settings: SettingsPanel, pub preview: PreviewState, pub preview_image: Option<ImageAsset>, pub preview_audio: Option<AudioPlayer>, pub split: SplitState, pub peek: PeekState, pub workspace_search: WorkspaceSearch, pub screensaver: Screensaver, pub pet: PetState, pub pane_hit_regions: Vec<(u16, u16, u16, u16, usize)>, pub split_sep_hit: Option<SplitSepHit>, pub git_log_hits: Vec<(u16, u16, u16, u16, usize)>, pub git_tab_hits: Vec<(u16, u16, u16, u16, u8)>, pub dap_tab_hits: Vec<(u16, u16, u16, u16, u8)>, pub dap_row_hits: Vec<(u16, u16, u16, u16, usize)>, pub dap_panel_rect: Option<(u16, u16, u16, u16)>, pub terminal_rect: Option<(u16, u16, u16, u16)>, pub preview_gfx: Vec<(String, u16, u16, u16, u16)>, pub pr_tab_hits: Vec<(u16, u16, u16, u16, u8)>, pub pr_row_hits: Vec<(u16, u16, u16, u16, usize)>, pub git_pane_hits: Vec<(u16, u16, u16, u16, u8)>, pub editor_ctx: Option<EditorContextMenu>, pub inlay_hints_enabled: bool, pub code_action_bank: Vec<CodeActionItem>, pub gpu_acc: bool, pub key_hints: bool, pub dap: DapClient, pub call_hierarchy: CallHierarchyState, pub rebase: RebaseState, pub pr_review: PrReviewState, pub hooks: HooksConfig, pub update: UpdateState, pub code_lens_enabled: bool, pub term_caps_summary: String, pub term_sync: bool, pub term_undercurl: bool, pub term_underline_color: bool, pub term_hyperlinks: bool, pub cell_px: u32, pub cell_px_h: u32, pub term_modern: bool, pub term_kitty_graphics: bool, pub replaying_macro: bool, pub rename_pending: bool, /* private fields */
}

Fields§

§running: bool§mode: Mode§buffer: Buffer§message: String§filename: Option<PathBuf>§scroll: usize§xlc: Xlc§undo_stack: UndoStack§yank_buffer: Option<String>

Deprecated alias surface: prefer registers. Kept in sync with unnamed.

§registers: Registers§marks: Marks§jumps: JumpList§last_find: Option<LastFind>§pending_register: bool

After " waiting for register name

§pending_mark_set: bool

After m waiting for mark name

§pending_mark_jump: Option<bool>

After ' or ` waiting for mark name (true = linewise ')

§pending_key: Option<char>§pending_ft: Option<char>§count: Option<usize>§pending_hints: Vec<(&'static str, &'static str)>§which_key: WhichKeyState

Which-key delay + Space-leader path.

§visual_anchor: Option<Position>§search_pattern: Option<String>

Last committed search pattern (used by n/N after leaving search mode).

§search_input: String

Live query while in Search mode (does not touch search_pattern until commit).

§search_matches: Vec<Position>§search_current: usize§search_origin: Option<Position>

Cursor when / was pressed — restored on Esc cancel.

§search_scroll_origin: usize§search_forward: bool

true = forward /, false = reverse ?

§completions: Completions§modified: bool§mouse: MouseState§viewport: EditorViewport§explorer: Explorer§terminal: Terminal§explorer_width: u16§terminal_width: u16§resize_target: Option<ResizeTarget>§explorer_separator_x: u16§terminal_separator_x: u16§screen_width: u16§screen_height: u16§theme: &'static Theme§xlc_height: u16§xlc_separator_y: u16§file_mtime: Option<SystemTime>§buffers: Vec<BufferTab>§current_buffer: usize§syntax: SyntaxEngine§lsp: LspClient§debug: bool§show_metrics: bool

:status — show live CPU/MEM/GPU of this process in the status line. The frontend samples (platform-specific) and writes into metrics; core only owns the toggle + the last-sampled snapshot for rendering.

§metrics: ProcMetrics§bench_report: Option<BenchReport>

Latest :bench results (shown in Mode::Bench).

§last_change: Option<LastChange>

Last change for . repeat

§pending_operator: Option<Operator>

Pending operator (d/c/y) while waiting for motion/object

§pending_to_mod: Option<char>

Pending text-object modifier i/a after operator

§tab_hit_regions: Vec<(u16, u16, usize)>

Tab bar hit regions for mouse (filled by UI each frame)

§tab_bar_y: u16§screen_row_to_buffer: Vec<usize>

Screen-row → buffer-row map for the current frame (handles soft-wrap). Index 0 = viewport.text_y. Built in the TUI draw path.

§screen_row_visual_base: Vec<usize>

For each screen row, visual-column base within that buffer line (0, text_width, 2*text_width, …). Parallel to screen_row_to_buffer.

§palette: Palette§hover_text: Option<String>

Hover popup text (LSP)

§last_click: Option<(u16, u16, Instant)>

Double-click tracking (ms-ish ticks via counter)

§macros: MacroBank§tab_width: usize§clipboard_sync: bool§relative_number: bool§wrap_lines: bool

Soft-wrap long lines; false = horizontal scroll via hscroll.

§undo_caching: bool

Persist undo history to ~/.xei/undo on close (config undo_caching).

§gpu_graphics: bool

Per-feature GPU toggles under gpu_acc.

§gpu_hyperlinks: bool§hscroll: usize

Horizontal pan (visual columns) when wrap_lines is off.

§syntax_seen_version: u64

Last buffer version handed to the syntax highlighter (render cache).

§git: GitGutter

Git gutter signs for the current file

§blame: GitBlame

Optional git blame overlay (gb toggle)

§folds: FoldState

Indent-based folds (za / zc / zo / zM / zR)

§multi: MultiCursor

Extra carets (primary = buffer.cursor)

§scm: ScmPanel

Light Source Control side panel (Ctrl+G)

§git_wb: GitWorkbench

Full Git workbench (Ctrl+Shift+G)

§settings: SettingsPanel

Settings — About / Setting / Help (Ctrl+,)

§preview: PreviewState

Pretty preview pane (Markdown / JSON / media)

§preview_image: Option<ImageAsset>

Kitty image asset for PreviewKind::Image

§preview_audio: Option<AudioPlayer>

Audio player for PreviewKind::Audio

§split: SplitState

Editor splits (Ctrl+W v/s)

§peek: PeekState

Peek definition overlay

§workspace_search: WorkspaceSearch

Workspace find/replace panel

§screensaver: Screensaver

:screensaver xeifetch overlay

§pet: PetState

Desktop pet GIF overlay

§pane_hit_regions: Vec<(u16, u16, u16, u16, usize)>

Pane hit regions filled each frame: (x, y, w, h, pane_idx)

§split_sep_hit: Option<SplitSepHit>

Split separator for mouse drag-resize (filled by UI each frame).

§git_log_hits: Vec<(u16, u16, u16, u16, usize)>

Git workbench Log rows: (x, y, w, h, commit_index) for right-click menus

§git_tab_hits: Vec<(u16, u16, u16, u16, u8)>

Git toolbar chips: (x, y, w, h, key 1..=8)

§dap_tab_hits: Vec<(u16, u16, u16, u16, u8)>

DAP panel tab hits: (x, y, w, h, pane_id 0..3)

§dap_row_hits: Vec<(u16, u16, u16, u16, usize)>

DAP list row hits: (x, y, w, h, row_index)

§dap_panel_rect: Option<(u16, u16, u16, u16)>

DAP panel body rect for mouse (x, y, w, h)

§terminal_rect: Option<(u16, u16, u16, u16)>

Terminal rect (side panel / full window / pane-bound) for wheel routing

§preview_gfx: Vec<(String, u16, u16, u16, u16)>

Inline preview images wanted this frame: (path, x, y, w_cells, rows).

§pr_tab_hits: Vec<(u16, u16, u16, u16, u8)>

PR review tab chips: (x, y, w, h, tab 0=Files 1=Comments 2=Body)

§pr_row_hits: Vec<(u16, u16, u16, u16, usize)>

PR review list rows: (x, y, w, h, row index)

§git_pane_hits: Vec<(u16, u16, u16, u16, u8)>

Git docked columns: (x, y, w, h, pane_id 0=Changes 1=Log 2=Files)

§editor_ctx: Option<EditorContextMenu>

Editor right-click context menu (Insert / Normal / Visual)

§inlay_hints_enabled: bool

Show LSP inlay hints when available

§code_action_bank: Vec<CodeActionItem>

Code actions awaiting palette selection (Ctrl+.)

§gpu_acc: bool

GPU-terminal enhancements (Ghostty/Kitty sync, undercurl, graphics…)

§key_hints: bool

Which-key style chord hints after prefix keys.

§dap: DapClient

DAP debugger client + panel state.

§call_hierarchy: CallHierarchyState

Call hierarchy panel (gC / SPC l c).

§rebase: RebaseState

Interactive rebase planner.

§pr_review: PrReviewState

PR review (files + comments + diff).

§hooks: HooksConfig

Plugin hooks (~/.xei/hooks.toml).

§update: UpdateState

Release check + self-update (welcome notice · :update).

§code_lens_enabled: bool

Show LSP code lenses in the editor.

§term_caps_summary: String

Detected terminal capabilities (filled by TUI shell at startup). Core only stores a simple summary string so headless tests stay free of crossterm queries; detailed flags live in the TUI term_caps module.

§term_sync: bool§term_undercurl: bool§term_underline_color: bool§term_hyperlinks: bool§cell_px: u32

Physical pixels per cell (from the frontend probe; 0 = unknown → 14).

§cell_px_h: u32§term_modern: bool§term_kitty_graphics: bool

Terminal speaks Kitty graphics protocol (Ghostty/Kitty/WezTerm).

§replaying_macro: bool

While replaying a macro — suppress nested recording

§rename_pending: bool

Pending rename: new name input via XLC or message

Implementations§

Source§

impl App

Source

pub fn apply_config(&mut self)

Source

pub fn apply_pet_from_config(&mut self, cfg: &Config)

Source

pub fn pet_graphics_ok(&self) -> bool

Pet overlay is allowed only with gpu_acc + Kitty graphics terminal.

Source

pub fn pet_pos_max(&self) -> (u16, u16)

Max cell coords for nudging in Settings (uses live terminal size).

Source

pub fn pet_screen_xy(&self) -> (u16, u16)

Paint-time position only (does not mutate saved coords).

Source

pub fn toggle_status_metrics(&mut self)

:status — toggle the live CPU/MEM/GPU readout in the status line.

Source

pub fn set_metrics(&mut self, m: ProcMetrics)

Frontend hook: store the latest sampled process metrics.

Source

pub fn run_bench(&mut self)

:bench — run the self-benchmark and switch to the results screen.

Source

pub fn exit_bench(&mut self)

Source

pub fn toggle_screensaver(&mut self)

Source

pub fn new() -> Self

Source

pub fn open_file(path: &str) -> Self

Source

pub fn restore_session(&mut self)

Restore tabs/cursors from ~/.xei/session (used when started with no file args).

Source

pub fn save_session(&self)

Source

pub fn refresh_git(&mut self)

Non-blocking: git diff (+ git blame when the panel is up) run on a background thread; results land via App::poll_git_refresh.

Source

pub fn poll_git_refresh(&mut self) -> bool

Apply a finished background git refresh (call once per frame).

Source

pub fn rebuild_folds(&mut self)

Source

pub fn toggle_blame(&mut self)

Toggle blame side panel (Ctrl+B / gb) with slide animation.

Source

pub fn toggle_debug_panel(&mut self)

Toggle DAP debug panel focus (Ctrl+Shift+D). Visibility and focus are separate: Esc drops focus back to the editor keeping the panel docked; q in the panel closes it.

Source

pub fn close_debug_panel(&mut self)

Close the debug panel entirely (q from the panel).

Source

pub fn open_blank_tab(&mut self)

:mbb — fresh blank tab landing on the welcome screen.

Source

pub fn dap_toggle_breakpoint(&mut self)

F9 — toggle breakpoint on cursor line.

Source

pub fn dap_start_or_continue(&mut self)

F5 — start or continue.

Source

pub fn dap_launch_program(&mut self, program_line: &str)

Launch a program (XLC :DapLaunch <path> [args…]).

Source

pub fn dap_pause(&mut self)

F6 — suspend a running program.

Source

pub fn dap_evaluate(&mut self, expr: &str)

Evaluate expression in the stopped frame (Console REPL).

Source

pub fn dap_set_condition(&mut self, condition: &str)

:bp if <expr> — conditional breakpoint on cursor line.

Source

pub fn dap_set_logpoint(&mut self, msg: &str)

:bp log <msg> — logpoint on cursor line.

Source

pub fn dap_launch_config(&mut self, name: Option<&str>)

Launch using a named config from .vscode/launch.json.

Source

pub fn dap_attach(&mut self, spec: &str)

:DapAttach pid <n> or :DapAttach port <n> [lang]

Source

pub fn dap_list_configs(&mut self)

List launch.json configs into message / XLC.

Source

pub fn dap_stop(&mut self)

Source

pub fn dap_step_over(&mut self)

Source

pub fn dap_step_into(&mut self)

Source

pub fn dap_step_out(&mut self)

Source

pub fn open_call_hierarchy(&mut self, outgoing: bool)

Open call hierarchy (incoming by default).

Source

pub fn toggle_call_direction(&mut self)

Source

pub fn poll_call_hierarchy(&mut self)

Apply finished call hierarchy from LSP poll.

Source

pub fn open_rebase(&mut self, count: usize)

Source

pub fn run_rebase_plan(&mut self)

Source

pub fn open_pr_review(&mut self, number: u64)

Source

pub fn open_pr_review_selected(&mut self)

Source

pub fn toggle_code_lens(&mut self)

Source

pub fn reload_hooks(&mut self)

Source

pub fn poll_hook_messages(&mut self)

Drain finished hook results into the status message (call per frame).

Source

pub fn dap_apply_stopped_location(&mut self)

After DAP poll: jump editor to stopped frame if path matches an openable file.

Source

pub fn fold_toggle(&mut self)

Source

pub fn fold_close(&mut self)

Source

pub fn fold_open(&mut self)

Source

pub fn fold_close_all(&mut self)

Source

pub fn fold_open_all(&mut self)

Source

pub fn toggle_scm(&mut self)

Toggle light Source Control panel (Ctrl+G). From Git workbench → step back to light SCM.

Source

pub fn close_scm(&mut self)

Begin slide-out close (mode flips to Normal when anim settles).

Source

pub fn close_scm_immediate(&mut self)

Source

pub fn open_git_workbench(&mut self)

Open full Git workbench (Ctrl+Shift+G).

Source

pub fn toggle_git_workbench(&mut self)

Source

pub fn close_git_workbench(&mut self)

Esc / close from workbench: back to light SCM if we came from there.

Source

pub fn open_settings(&mut self)

Open unified Settings (Ctrl+,). Starts on About page.

Source

pub fn close_settings(&mut self)

Source

pub fn apply_settings_draft(&mut self)

Source

pub fn set_hints(&mut self, hints: Vec<(&'static str, &'static str)>)

Set which-key hints if the feature is enabled.

Source

pub fn begin_chord( &mut self, title: &str, hints: Vec<(&'static str, &'static str)>, )

Begin a prefix chord with title + delayed popup.

Source

pub fn begin_leader(&mut self)

Open Space leader root map.

Source

pub fn leader_enter_sub(&mut self, key: char, label: &str)

Enter Space submenu (f, g, …).

Source

pub fn clear_which_key(&mut self)

Clear leader / which-key session.

Source

pub fn which_key_visible(&self) -> bool

Whether the which-key popup should draw this frame.

Source

pub fn toggle_terminal_side(&mut self)

Source

pub fn toggle_terminal_full(&mut self)

Ctrl+Shift+T — terminal as a real split window (not Mode::Terminal). Stays in Normal so Ctrl+W / Git / layout chords keep working.

Source

pub fn terminal_window_focused(&self) -> bool

Whether the focused split pane is showing the Ctrl+Shift+T terminal.

Source

pub fn request_close_pane_terminal(&mut self)

Source

pub fn confirm_close_pane_terminal(&mut self, yes: bool)

Source

pub fn gpu_active(&self) -> bool

Whether progressive GPU-terminal features should run this session.

Source

pub fn set_term_caps( &mut self, summary: String, sync: bool, undercurl: bool, underline_color: bool, hyperlinks: bool, modern: bool, kitty_graphics: bool, )

Install terminal caps discovered by the TUI shell.

Source

pub fn save_settings(&mut self)

Source

pub fn scm_refresh(&mut self)

Source

pub fn scm_commit(&mut self)

Source

pub fn scm_stage_selected(&mut self)

Source

pub fn scm_stage_all(&mut self)

Source

pub fn scm_open_selected_file(&mut self)

Source

pub fn toggle_preview(&mut self)

Toggle pretty preview for the current buffer (Markdown / JSON / media).

Source

pub fn cell_px_or_default(&self) -> u32

Open media / data preview from a filesystem path (explorer Enter). Effective pixels-per-cell for image caches.

Source

pub fn cell_px_h_or_default(&self) -> u32

Source

pub fn open_media_preview(&mut self, path: &Path) -> Result<(), String>

Source

pub fn clear_media_handles(&mut self)

Source

pub fn close_preview(&mut self)

Begin reverse transform close (mode flips when anim settles).

Source

pub fn close_preview_immediate(&mut self)

Source

pub fn refresh_preview_if_open(&mut self)

Source

pub fn settle_anims(&mut self)

Settle modes after panel/preview close animations complete.

Source

pub fn breadcrumbs(&self) -> Vec<String>

Breadcrumb path segments for the current file (VS Code-style).

Source

pub fn file_extension(&self) -> Option<String>

Source

pub fn file_name(&self) -> &str

Source

pub fn push_undo(&mut self)

Source

pub fn sync_lsp_document(&mut self)

Push the current buffer to the LSP if it differs from what the server last saw. Frontends call this from their loop (throttled) and before position-based requests, so the server always answers against the post-edit document — including plain insert-mode typing, which never produced a didChange before.

Source

pub fn undo(&mut self)

Source

pub fn redo(&mut self)

Source

pub fn apply_operator_motion( &mut self, op: Operator, motion: Motion, count: usize, )

Apply operator to a motion; records last_change for .

Source

pub fn apply_operator_textobject( &mut self, op: Operator, obj: TextObject, count: usize, )

Source

pub fn store_yank(&mut self, text: String, linewise: bool)

Source

pub fn apply_substitute_cmd(&mut self, cmd: SubstituteCmd)

Source

pub fn block_range(&self) -> Option<(usize, usize, usize, usize)>

Visual-block range: (min_row, max_row, min_col, max_col) inclusive cols.

Source

pub fn yank_block(&mut self)

Source

pub fn delete_block(&mut self)

Source

pub fn request_references(&mut self)

Source

pub fn request_rename(&mut self, new_name: &str)

Source

pub fn clipboard_copy(&mut self)

Copy current visual selection, or the current line in Normal mode, to the system clipboard (Cmd+C / Ctrl+C style).

Source

pub fn clipboard_paste(&mut self)

Paste from system clipboard (Cmd+V / Ctrl+V style) into the buffer.

Source

pub fn paste_text_at_cursor(&mut self, text: &str)

Insert pasted text at the cursor verbatim (no auto-indent — a bracketed paste from the outer terminal should land exactly as-is). Used by the TUI’s Event::Paste handler in editor Insert mode.

Source

pub fn select_all(&mut self)

Select entire buffer (Ctrl+A / context menu).

Source

pub fn open_editor_ctx(&mut self, x: u16, y: u16)

Open editor right-click context menu at screen coords.

Source

pub fn close_editor_ctx(&mut self)

Source

pub fn run_editor_ctx_action(&mut self) -> Result<String, String>

Run selected editor context-menu action.

Source

pub fn push_jump(&mut self)

Snapshot current location for jumplist (call before big moves).

Source

pub fn jump_back(&mut self)

Source

pub fn jump_forward(&mut self)

Source

pub fn set_mark(&mut self, name: char)

Source

pub fn jump_to_mark(&mut self, name: char, linewise: bool)

Source

pub fn record_find(&mut self, kind: FindKind, forward: bool, ch: char)

Source

pub fn repeat_find(&mut self, reverse: bool)

Source

pub fn clear_operator_pending(&mut self)

Source

pub fn begin_operator(&mut self, op: Operator)

Source

pub fn repeat_last_change(&mut self)

Replay last change (. command).

Source

pub fn goto_line(&mut self, line_1based: usize)

Source

pub fn search_word_under_cursor_backward(&mut self)

Source

pub fn quit(&mut self)

Source

pub fn enter_insert(&mut self)

Source

pub fn enter_normal(&mut self)

Source

pub fn clear_multi_cursors(&mut self)

Source

pub fn multi_cursor_add_next(&mut self)

Ctrl+D — add next occurrence of word under primary cursor.

Source

pub fn multi_cursor_add_below(&mut self)

Ctrl+Alt+Down / ]c — column cursor below primary.

Source

pub fn multi_cursor_add_above(&mut self)

Source

pub fn multi_insert_char(&mut self, ch: char)

Apply insert-mode edit at every cursor (bottom→top so offsets stay valid).

Source

pub fn multi_backspace(&mut self)

Source

pub fn multi_delete_char(&mut self)

Source

pub fn multi_move_each(&mut self, f: impl Fn(&mut Buffer))

Source

pub fn multi_newline(&mut self)

Source

pub fn open_file_palette(&mut self)

Source

pub fn open_command_palette(&mut self)

Source

pub fn open_problems_palette(&mut self)

Source

pub fn execute_palette_selection(&mut self)

Source

pub fn goto_file_location(&mut self, path: &str, row: usize, col: usize)

Jump to path:line:col (opens tab if needed).

Source

pub fn project_root(&self) -> PathBuf

Source

pub fn open_document_symbols(&mut self)

Source

pub fn open_workspace_symbols(&mut self)

Source

pub fn apply_pending_symbols(&mut self)

Source

pub fn request_peek_definition(&mut self)

Source

pub fn open_peek_at(&mut self, path: &str, row: usize, col: usize)

Source

pub fn promote_peek(&mut self)

Source

pub fn split_vertical(&mut self)

Source

pub fn split_horizontal(&mut self)

Source

pub fn close_split(&mut self)

Vim C-w q: close the focused pane; neighbors survive (the split collapses once one pane remains).

Source

pub fn focus_dir(&mut self, dir: char)

Vim C-w h/j/k/l: directional focus along the split axis (steps one pane per press; works for any pane count).

Source

pub fn focus_other_pane(&mut self)

Persist active buffer scroll into the focused pane, then switch focus.

Source

pub fn focus_pane(&mut self, idx: usize)

Source

pub fn sync_split_from_active(&mut self)

Write current scroll/tab into focused pane slot.

Source

pub fn apply_focused_pane(&mut self)

Load focused pane’s tab into the active editor.

Source

pub fn sync_focused_pane_tab(&mut self)

Assign a different tab to the focused pane (e.g. after gt in a split).

Source

pub fn diag_next(&mut self)

Source

pub fn diag_prev(&mut self)

Source

pub fn git_change_next(&mut self)

Jump to next git gutter change (from git diff HEAD).

Source

pub fn git_change_prev(&mut self)

Jump to previous git gutter change.

Source

pub fn reload_from_disk(&mut self)

Force-reload current file from disk (discards local unsaved edits).

Source

pub fn git_remote(&mut self, action: &str)

Run a simple git remote command (fetch / pull / push) from workspace root. Network git ops run in the background (workbench runner + spinner); the result lands in the status line via poll_loading in the frontend.

Source

pub fn toggle_relative_number(&mut self)

Source

pub fn toggle_inlay_hints(&mut self)

Source

pub fn prompt_rename(&mut self)

Source

pub fn goto_tab(&mut self, idx: usize)

Switch to tab index if it exists (0-based).

Source

pub fn request_hover(&mut self)

Source

pub fn select_word_under_cursor(&mut self)

Select word under cursor (double-click / viw-ish helper).

Source

pub fn enter_visual(&mut self)

Source

pub fn enter_visual_line(&mut self)

Source

pub fn enter_visual_block(&mut self)

Source

pub fn enter_xlc(&mut self, prompt: Option<&str>)

Source

pub fn close_xlc(&mut self)

Start incremental / (forward) or ? (backward) search.

Source

pub fn enter_search_backward(&mut self)

Commit live search input as the new pattern and leave Search mode.

Cancel search: restore cursor, restore previous committed pattern.

Source

pub fn update_search_input(&mut self)

Update live query while typing in Search mode.

Source

pub fn active_search_pattern(&self) -> Option<&str>

Pattern currently used for highlighting (live input or committed).

Source

pub fn search_pattern_len_chars(&self) -> usize

Source

pub fn search_matches_row_slice(&self, row: usize) -> (usize, &[Position])

Matches on row plus the global index of the first one. search_matches is built in row order by collect_matches, so this binary-searches the row’s slice instead of the renderer scanning every match for every character of every visible line. The base index lets callers keep comparing against search_current (a global index).

Source

pub fn is_current_search_match(&self, row: usize, col: usize) -> bool

Source

pub fn selected_range(&self) -> Option<(Position, Position)>

Source

pub fn execute_xlc(&mut self)

Recompute matches for pattern. If jump, move cursor to nearest match in the active search direction from origin/cursor.

Backward-compatible alias.

Source

pub fn search_next(&mut self)

Source

pub fn search_prev(&mut self)

Source

pub fn search_word_under_cursor(&mut self)

Search for the word under the cursor (* in vim).

Source

pub fn save_file(&mut self)

Source

pub fn move_left(&mut self)

Source

pub fn move_right(&mut self)

Source

pub fn move_up(&mut self)

Source

pub fn move_down(&mut self)

Source

pub fn update_scroll(&mut self)

Source

pub fn delete_line(&mut self)

Source

pub fn delete_word(&mut self)

Source

pub fn paste(&mut self)

p — put after cursor / below line

Source

pub fn paste_before(&mut self)

P — put before cursor / above line

Source

pub fn yank_selection(&mut self)

Source

pub fn delete_selection(&mut self)

Source

pub fn record_mtime(&mut self)

Source

pub fn check_external_change(&mut self)

Live-refresh: if the open file changed on disk, reload the buffer. Preserves cursor/scroll as much as possible; rebuilds folds / git / LSP.

Source

pub fn save_state_to_tab(&mut self)

Source

pub fn restore_state_from_tab(&mut self)

Source

pub fn open_new_tab(&mut self, path: &str)

Source

pub fn next_tab(&mut self)

Source

pub fn prev_tab(&mut self)

Source

pub fn lsp_restart_for_current(&mut self)

Source

pub fn format_document(&mut self)

Source

pub fn request_code_actions(&mut self)

Source

pub fn apply_file_edits(&mut self, edits: Vec<FileEdit>)

Apply multi-file full-text edits (rename / format / code action).

Source

pub fn open_code_actions_palette(&mut self)

Source

pub fn apply_code_action(&mut self, index: usize)

Source

pub fn close_current_tab(&mut self)

Trait Implementations§

Source§

impl Default for App

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for App

§

impl !Sync for App

§

impl !UnwindSafe for App

§

impl Freeze for App

§

impl Send for App

§

impl Unpin for App

§

impl UnsafeUnpin for App

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.