Expand description
Diff file tree widget for displaying changed files.
A tree view widget for displaying changed files in a diff, similar to gitui’s unstaged changes panel or VS Code’s source control view.
This implementation wraps the generic TreeView component for simplified code.
§Features
- Hierarchical display: Groups files by directory structure
- Status markers: Visual indicators for file status (M, +, -, R)
- Collapsible directories: Expand/collapse with keyboard
- Color coding: Green (added), yellow (modified), red (deleted), blue (renamed)
- Keyboard navigation: Uses TreeView’s navigation
§Structure
DiffFileTree- The main tree widget (wraps TreeView)DiffFileEntry- Data type for tree nodes (path + status)FileStatus- File modification status enum
§Example
use ratatui_toolkit::widgets::code_diff::diff_file_tree::{DiffFileTree, FileStatus};
let files = vec![
("src/lib.rs", FileStatus::Modified),
("src/utils/helper.rs", FileStatus::Added),
("src/old_module.rs", FileStatus::Deleted),
];
let tree = DiffFileTree::from_paths(&files);
// Render with ratatui Widget trait...
// frame.render_widget(&tree, area);§Visual Style
M src/
lib.rs
+ utils/
+ helper.rs
- old_module.rsRe-exports§
pub use helpers::file_icon;
Modules§
- constructors
- Constructors for DiffFileTree.
- helpers
- Helper functions for diff file tree.
- methods
- Methods for DiffFileTree.
- traits
- Trait implementations for DiffFileTree.
Structs§
- Diff
File Entry - A single file or directory entry in a diff tree.
- Diff
File Tree - A tree widget for displaying changed files in a diff.
Enums§
- File
Status - The modification status of a file in a diff.