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: boolAfter " waiting for register name
pending_mark_set: boolAfter 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: WhichKeyStateWhich-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: StringLive 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: booltrue = 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: boolSoft-wrap long lines; false = horizontal scroll via hscroll.
undo_caching: boolPersist undo history to ~/.xei/undo on close (config undo_caching).
gpu_graphics: boolPer-feature GPU toggles under gpu_acc.
gpu_hyperlinks: bool§hscroll: usizeHorizontal pan (visual columns) when wrap_lines is off.
syntax_seen_version: u64Last buffer version handed to the syntax highlighter (render cache).
git: GitGutterGit gutter signs for the current file
blame: GitBlameOptional git blame overlay (gb toggle)
folds: FoldStateIndent-based folds (za / zc / zo / zM / zR)
multi: MultiCursorExtra carets (primary = buffer.cursor)
scm: ScmPanelLight Source Control side panel (Ctrl+G)
git_wb: GitWorkbenchFull Git workbench (Ctrl+Shift+G)
settings: SettingsPanelSettings — About / Setting / Help (Ctrl+,)
preview: PreviewStatePretty 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: SplitStateEditor splits (Ctrl+W v/s)
peek: PeekStatePeek definition overlay
workspace_search: WorkspaceSearchWorkspace find/replace panel
screensaver: Screensaver:screensaver xeifetch overlay
pet: PetStateDesktop 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: boolShow LSP inlay hints when available
code_action_bank: Vec<CodeActionItem>Code actions awaiting palette selection (Ctrl+.)
gpu_acc: boolGPU-terminal enhancements (Ghostty/Kitty sync, undercurl, graphics…)
key_hints: boolWhich-key style chord hints after prefix keys.
dap: DapClientDAP debugger client + panel state.
call_hierarchy: CallHierarchyStateCall hierarchy panel (gC / SPC l c).
rebase: RebaseStateInteractive rebase planner.
pr_review: PrReviewStatePR review (files + comments + diff).
hooks: HooksConfigPlugin hooks (~/.xei/hooks.toml).
update: UpdateStateRelease check + self-update (welcome notice · :update).
code_lens_enabled: boolShow LSP code lenses in the editor.
term_caps_summary: StringDetected 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: u32Physical pixels per cell (from the frontend probe; 0 = unknown → 14).
cell_px_h: u32§term_modern: bool§term_kitty_graphics: boolTerminal speaks Kitty graphics protocol (Ghostty/Kitty/WezTerm).
replaying_macro: boolWhile replaying a macro — suppress nested recording
rename_pending: boolPending rename: new name input via XLC or message
Implementations§
Source§impl App
impl App
pub fn apply_config(&mut self)
pub fn apply_pet_from_config(&mut self, cfg: &Config)
Sourcepub fn pet_graphics_ok(&self) -> bool
pub fn pet_graphics_ok(&self) -> bool
Pet overlay is allowed only with gpu_acc + Kitty graphics terminal.
Sourcepub fn pet_pos_max(&self) -> (u16, u16)
pub fn pet_pos_max(&self) -> (u16, u16)
Max cell coords for nudging in Settings (uses live terminal size).
Sourcepub fn pet_screen_xy(&self) -> (u16, u16)
pub fn pet_screen_xy(&self) -> (u16, u16)
Paint-time position only (does not mutate saved coords).
Sourcepub fn toggle_status_metrics(&mut self)
pub fn toggle_status_metrics(&mut self)
:status — toggle the live CPU/MEM/GPU readout in the status line.
Sourcepub fn set_metrics(&mut self, m: ProcMetrics)
pub fn set_metrics(&mut self, m: ProcMetrics)
Frontend hook: store the latest sampled process metrics.
pub fn exit_bench(&mut self)
pub fn toggle_screensaver(&mut self)
pub fn new() -> Self
pub fn open_file(path: &str) -> Self
Sourcepub fn restore_session(&mut self)
pub fn restore_session(&mut self)
Restore tabs/cursors from ~/.xei/session (used when started with no file args).
pub fn save_session(&self)
Sourcepub fn refresh_git(&mut self)
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.
Sourcepub fn poll_git_refresh(&mut self) -> bool
pub fn poll_git_refresh(&mut self) -> bool
Apply a finished background git refresh (call once per frame).
pub fn rebuild_folds(&mut self)
Sourcepub fn toggle_blame(&mut self)
pub fn toggle_blame(&mut self)
Toggle blame side panel (Ctrl+B / gb) with slide animation.
Sourcepub fn toggle_debug_panel(&mut self)
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.
Sourcepub fn close_debug_panel(&mut self)
pub fn close_debug_panel(&mut self)
Close the debug panel entirely (q from the panel).
Sourcepub fn open_blank_tab(&mut self)
pub fn open_blank_tab(&mut self)
:mbb — fresh blank tab landing on the welcome screen.
Sourcepub fn dap_toggle_breakpoint(&mut self)
pub fn dap_toggle_breakpoint(&mut self)
F9 — toggle breakpoint on cursor line.
Sourcepub fn dap_start_or_continue(&mut self)
pub fn dap_start_or_continue(&mut self)
F5 — start or continue.
Sourcepub fn dap_launch_program(&mut self, program_line: &str)
pub fn dap_launch_program(&mut self, program_line: &str)
Launch a program (XLC :DapLaunch <path> [args…]).
Sourcepub fn dap_evaluate(&mut self, expr: &str)
pub fn dap_evaluate(&mut self, expr: &str)
Evaluate expression in the stopped frame (Console REPL).
Sourcepub fn dap_set_condition(&mut self, condition: &str)
pub fn dap_set_condition(&mut self, condition: &str)
:bp if <expr> — conditional breakpoint on cursor line.
Sourcepub fn dap_set_logpoint(&mut self, msg: &str)
pub fn dap_set_logpoint(&mut self, msg: &str)
:bp log <msg> — logpoint on cursor line.
Sourcepub fn dap_launch_config(&mut self, name: Option<&str>)
pub fn dap_launch_config(&mut self, name: Option<&str>)
Launch using a named config from .vscode/launch.json.
Sourcepub fn dap_attach(&mut self, spec: &str)
pub fn dap_attach(&mut self, spec: &str)
:DapAttach pid <n> or :DapAttach port <n> [lang]
Sourcepub fn dap_list_configs(&mut self)
pub fn dap_list_configs(&mut self)
List launch.json configs into message / XLC.
pub fn dap_stop(&mut self)
pub fn dap_step_over(&mut self)
pub fn dap_step_into(&mut self)
pub fn dap_step_out(&mut self)
Sourcepub fn open_call_hierarchy(&mut self, outgoing: bool)
pub fn open_call_hierarchy(&mut self, outgoing: bool)
Open call hierarchy (incoming by default).
pub fn toggle_call_direction(&mut self)
Sourcepub fn poll_call_hierarchy(&mut self)
pub fn poll_call_hierarchy(&mut self)
Apply finished call hierarchy from LSP poll.
pub fn open_rebase(&mut self, count: usize)
pub fn run_rebase_plan(&mut self)
pub fn open_pr_review(&mut self, number: u64)
pub fn open_pr_review_selected(&mut self)
pub fn toggle_code_lens(&mut self)
pub fn reload_hooks(&mut self)
Sourcepub fn poll_hook_messages(&mut self)
pub fn poll_hook_messages(&mut self)
Drain finished hook results into the status message (call per frame).
Sourcepub fn dap_apply_stopped_location(&mut self)
pub fn dap_apply_stopped_location(&mut self)
After DAP poll: jump editor to stopped frame if path matches an openable file.
pub fn fold_toggle(&mut self)
pub fn fold_close(&mut self)
pub fn fold_open(&mut self)
pub fn fold_close_all(&mut self)
pub fn fold_open_all(&mut self)
Sourcepub fn toggle_scm(&mut self)
pub fn toggle_scm(&mut self)
Toggle light Source Control panel (Ctrl+G). From Git workbench → step back to light SCM.
pub fn close_scm_immediate(&mut self)
Sourcepub fn open_git_workbench(&mut self)
pub fn open_git_workbench(&mut self)
Open full Git workbench (Ctrl+Shift+G).
pub fn toggle_git_workbench(&mut self)
Sourcepub fn close_git_workbench(&mut self)
pub fn close_git_workbench(&mut self)
Esc / close from workbench: back to light SCM if we came from there.
Sourcepub fn open_settings(&mut self)
pub fn open_settings(&mut self)
Open unified Settings (Ctrl+,). Starts on About page.
pub fn close_settings(&mut self)
pub fn apply_settings_draft(&mut self)
Sourcepub fn set_hints(&mut self, hints: Vec<(&'static str, &'static str)>)
pub fn set_hints(&mut self, hints: Vec<(&'static str, &'static str)>)
Set which-key hints if the feature is enabled.
Sourcepub fn begin_chord(
&mut self,
title: &str,
hints: Vec<(&'static str, &'static str)>,
)
pub fn begin_chord( &mut self, title: &str, hints: Vec<(&'static str, &'static str)>, )
Begin a prefix chord with title + delayed popup.
Sourcepub fn begin_leader(&mut self)
pub fn begin_leader(&mut self)
Open Space leader root map.
Sourcepub fn leader_enter_sub(&mut self, key: char, label: &str)
pub fn leader_enter_sub(&mut self, key: char, label: &str)
Enter Space submenu (f, g, …).
Sourcepub fn clear_which_key(&mut self)
pub fn clear_which_key(&mut self)
Clear leader / which-key session.
Sourcepub fn which_key_visible(&self) -> bool
pub fn which_key_visible(&self) -> bool
Whether the which-key popup should draw this frame.
pub fn toggle_terminal_side(&mut self)
Sourcepub fn toggle_terminal_full(&mut self)
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.
Sourcepub fn terminal_window_focused(&self) -> bool
pub fn terminal_window_focused(&self) -> bool
Whether the focused split pane is showing the Ctrl+Shift+T terminal.
pub fn request_close_pane_terminal(&mut self)
pub fn confirm_close_pane_terminal(&mut self, yes: bool)
Sourcepub fn gpu_active(&self) -> bool
pub fn gpu_active(&self) -> bool
Whether progressive GPU-terminal features should run this session.
Sourcepub fn set_term_caps(
&mut self,
summary: String,
sync: bool,
undercurl: bool,
underline_color: bool,
hyperlinks: bool,
modern: bool,
kitty_graphics: bool,
)
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.
pub fn save_settings(&mut self)
pub fn scm_refresh(&mut self)
pub fn scm_commit(&mut self)
pub fn scm_stage_selected(&mut self)
pub fn scm_stage_all(&mut self)
pub fn scm_open_selected_file(&mut self)
Sourcepub fn toggle_preview(&mut self)
pub fn toggle_preview(&mut self)
Toggle pretty preview for the current buffer (Markdown / JSON / media).
Sourcepub fn cell_px_or_default(&self) -> u32
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.
pub fn cell_px_h_or_default(&self) -> u32
pub fn open_media_preview(&mut self, path: &Path) -> Result<(), String>
pub fn clear_media_handles(&mut self)
Sourcepub fn close_preview(&mut self)
pub fn close_preview(&mut self)
Begin reverse transform close (mode flips when anim settles).
pub fn close_preview_immediate(&mut self)
pub fn refresh_preview_if_open(&mut self)
Sourcepub fn settle_anims(&mut self)
pub fn settle_anims(&mut self)
Settle modes after panel/preview close animations complete.
Breadcrumb path segments for the current file (VS Code-style).
pub fn file_extension(&self) -> Option<String>
pub fn file_name(&self) -> &str
pub fn push_undo(&mut self)
Sourcepub fn sync_lsp_document(&mut self)
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.
pub fn undo(&mut self)
pub fn redo(&mut self)
Sourcepub fn apply_operator_motion(
&mut self,
op: Operator,
motion: Motion,
count: usize,
)
pub fn apply_operator_motion( &mut self, op: Operator, motion: Motion, count: usize, )
Apply operator to a motion; records last_change for .
pub fn apply_operator_textobject( &mut self, op: Operator, obj: TextObject, count: usize, )
pub fn store_yank(&mut self, text: String, linewise: bool)
pub fn apply_substitute_cmd(&mut self, cmd: SubstituteCmd)
Sourcepub fn block_range(&self) -> Option<(usize, usize, usize, usize)>
pub fn block_range(&self) -> Option<(usize, usize, usize, usize)>
Visual-block range: (min_row, max_row, min_col, max_col) inclusive cols.
pub fn yank_block(&mut self)
pub fn delete_block(&mut self)
pub fn request_references(&mut self)
pub fn request_rename(&mut self, new_name: &str)
Sourcepub fn clipboard_copy(&mut self)
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).
Sourcepub fn clipboard_paste(&mut self)
pub fn clipboard_paste(&mut self)
Paste from system clipboard (Cmd+V / Ctrl+V style) into the buffer.
Sourcepub fn paste_text_at_cursor(&mut self, text: &str)
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.
Sourcepub fn select_all(&mut self)
pub fn select_all(&mut self)
Select entire buffer (Ctrl+A / context menu).
Sourcepub fn open_editor_ctx(&mut self, x: u16, y: u16)
pub fn open_editor_ctx(&mut self, x: u16, y: u16)
Open editor right-click context menu at screen coords.
pub fn close_editor_ctx(&mut self)
Sourcepub fn run_editor_ctx_action(&mut self) -> Result<String, String>
pub fn run_editor_ctx_action(&mut self) -> Result<String, String>
Run selected editor context-menu action.
pub fn jump_back(&mut self)
pub fn jump_forward(&mut self)
pub fn set_mark(&mut self, name: char)
pub fn jump_to_mark(&mut self, name: char, linewise: bool)
pub fn record_find(&mut self, kind: FindKind, forward: bool, ch: char)
pub fn repeat_find(&mut self, reverse: bool)
pub fn clear_operator_pending(&mut self)
pub fn begin_operator(&mut self, op: Operator)
Sourcepub fn repeat_last_change(&mut self)
pub fn repeat_last_change(&mut self)
Replay last change (. command).
pub fn goto_line(&mut self, line_1based: usize)
pub fn search_word_under_cursor_backward(&mut self)
pub fn quit(&mut self)
pub fn enter_insert(&mut self)
pub fn enter_normal(&mut self)
pub fn clear_multi_cursors(&mut self)
Sourcepub fn multi_cursor_add_next(&mut self)
pub fn multi_cursor_add_next(&mut self)
Ctrl+D — add next occurrence of word under primary cursor.
Sourcepub fn multi_cursor_add_below(&mut self)
pub fn multi_cursor_add_below(&mut self)
Ctrl+Alt+Down / ]c — column cursor below primary.
pub fn multi_cursor_add_above(&mut self)
Sourcepub fn multi_insert_char(&mut self, ch: char)
pub fn multi_insert_char(&mut self, ch: char)
Apply insert-mode edit at every cursor (bottom→top so offsets stay valid).
pub fn multi_backspace(&mut self)
pub fn multi_delete_char(&mut self)
pub fn multi_move_each(&mut self, f: impl Fn(&mut Buffer))
pub fn multi_newline(&mut self)
pub fn open_file_palette(&mut self)
pub fn open_command_palette(&mut self)
pub fn open_problems_palette(&mut self)
pub fn execute_palette_selection(&mut self)
Sourcepub fn goto_file_location(&mut self, path: &str, row: usize, col: usize)
pub fn goto_file_location(&mut self, path: &str, row: usize, col: usize)
Jump to path:line:col (opens tab if needed).
pub fn project_root(&self) -> PathBuf
pub fn open_workspace_search(&mut self)
pub fn open_document_symbols(&mut self)
pub fn open_workspace_symbols(&mut self)
pub fn apply_pending_symbols(&mut self)
pub fn request_peek_definition(&mut self)
pub fn open_peek_at(&mut self, path: &str, row: usize, col: usize)
pub fn promote_peek(&mut self)
pub fn split_vertical(&mut self)
pub fn split_horizontal(&mut self)
Sourcepub fn close_split(&mut self)
pub fn close_split(&mut self)
Vim C-w q: close the focused pane; neighbors survive (the split
collapses once one pane remains).
Sourcepub fn focus_dir(&mut self, dir: char)
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).
Sourcepub fn focus_other_pane(&mut self)
pub fn focus_other_pane(&mut self)
Persist active buffer scroll into the focused pane, then switch focus.
pub fn focus_pane(&mut self, idx: usize)
Sourcepub fn sync_split_from_active(&mut self)
pub fn sync_split_from_active(&mut self)
Write current scroll/tab into focused pane slot.
Sourcepub fn apply_focused_pane(&mut self)
pub fn apply_focused_pane(&mut self)
Load focused pane’s tab into the active editor.
Sourcepub fn sync_focused_pane_tab(&mut self)
pub fn sync_focused_pane_tab(&mut self)
Assign a different tab to the focused pane (e.g. after gt in a split).
pub fn diag_next(&mut self)
pub fn diag_prev(&mut self)
Sourcepub fn git_change_next(&mut self)
pub fn git_change_next(&mut self)
Jump to next git gutter change (from git diff HEAD).
Sourcepub fn git_change_prev(&mut self)
pub fn git_change_prev(&mut self)
Jump to previous git gutter change.
Sourcepub fn reload_from_disk(&mut self)
pub fn reload_from_disk(&mut self)
Force-reload current file from disk (discards local unsaved edits).
Sourcepub fn git_remote(&mut self, action: &str)
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.
pub fn toggle_relative_number(&mut self)
pub fn toggle_inlay_hints(&mut self)
pub fn prompt_rename(&mut self)
pub fn request_hover(&mut self)
Sourcepub fn select_word_under_cursor(&mut self)
pub fn select_word_under_cursor(&mut self)
Select word under cursor (double-click / viw-ish helper).
pub fn enter_visual(&mut self)
pub fn enter_visual_line(&mut self)
pub fn enter_visual_block(&mut self)
pub fn enter_xlc(&mut self, prompt: Option<&str>)
pub fn close_xlc(&mut self)
Sourcepub fn enter_search(&mut self)
pub fn enter_search(&mut self)
Start incremental / (forward) or ? (backward) search.
pub fn enter_search_backward(&mut self)
Sourcepub fn commit_search(&mut self)
pub fn commit_search(&mut self)
Commit live search input as the new pattern and leave Search mode.
Sourcepub fn cancel_search(&mut self)
pub fn cancel_search(&mut self)
Cancel search: restore cursor, restore previous committed pattern.
Sourcepub fn update_search_input(&mut self)
pub fn update_search_input(&mut self)
Update live query while typing in Search mode.
Sourcepub fn active_search_pattern(&self) -> Option<&str>
pub fn active_search_pattern(&self) -> Option<&str>
Pattern currently used for highlighting (live input or committed).
pub fn search_pattern_len_chars(&self) -> usize
Sourcepub fn search_matches_row_slice(&self, row: usize) -> (usize, &[Position])
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).
pub fn is_current_search_match(&self, row: usize, col: usize) -> bool
pub fn selected_range(&self) -> Option<(Position, Position)>
pub fn execute_xlc(&mut self)
Sourcepub fn recompute_search(&mut self, pattern: &str, jump: bool)
pub fn recompute_search(&mut self, pattern: &str, jump: bool)
Recompute matches for pattern. If jump, move cursor to nearest match
in the active search direction from origin/cursor.
Sourcepub fn perform_search(&mut self)
pub fn perform_search(&mut self)
Backward-compatible alias.
pub fn search_next(&mut self)
pub fn search_prev(&mut self)
Sourcepub fn search_word_under_cursor(&mut self)
pub fn search_word_under_cursor(&mut self)
Search for the word under the cursor (* in vim).
pub fn save_file(&mut self)
pub fn move_left(&mut self)
pub fn move_right(&mut self)
pub fn move_up(&mut self)
pub fn move_down(&mut self)
pub fn update_scroll(&mut self)
pub fn delete_line(&mut self)
pub fn delete_word(&mut self)
Sourcepub fn paste_before(&mut self)
pub fn paste_before(&mut self)
P — put before cursor / above line
pub fn yank_selection(&mut self)
pub fn delete_selection(&mut self)
pub fn record_mtime(&mut self)
Sourcepub fn check_external_change(&mut self)
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.
pub fn save_state_to_tab(&mut self)
pub fn restore_state_from_tab(&mut self)
pub fn open_new_tab(&mut self, path: &str)
pub fn next_tab(&mut self)
pub fn prev_tab(&mut self)
pub fn lsp_restart_for_current(&mut self)
pub fn format_document(&mut self)
pub fn request_code_actions(&mut self)
Sourcepub fn apply_file_edits(&mut self, edits: Vec<FileEdit>)
pub fn apply_file_edits(&mut self, edits: Vec<FileEdit>)
Apply multi-file full-text edits (rename / format / code action).
pub fn open_code_actions_palette(&mut self)
pub fn apply_code_action(&mut self, index: usize)
pub fn close_current_tab(&mut self)
Trait Implementations§
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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