show untracked files' contents
[?]
Mar 20, 2025, 7:51 PM
4WO3ZJM2RNYZCBPS7FGYAEBELYD57OSS7LEUYCWGZBCAY272SNQQCDependencies
- [2]
6YZAVBWUInitial commit - [3]
IQDCHWCPload a pijul repo - [4]
SWWE2R6Mdisplay basic repo stuff - [5]
WT3GA27Padd cursor with selection - [6]
UB2ITZJSrefresh changed files on FS changes - [7]
EC3TVL4Xadd untracked files - [8]
KT5UYXGKfix selection after adding file, add changed file diffs - [9]
S2NVIFXRallow to enter record msg - [10]
W7IUT3ZVstart recording impl - [11]
YBJRDOTCmake all repo actions async - [12]
2VUX5BTDload identity - [13]
A5YBC77Vrecord! - [14]
Z2CJPWZEfocus record message text_editor on spawn - [15]
D7A7MSIHallow to defer or abandon record, add buttons - [16]
UCBNZULEmake changed files paths optional (no path for root) - [17]
KM5PSZ4Awatch repo once loaded - [18]
ELG3UDT6allow to rm added files
Change contents
- edit in crates/libflowers_client/src/repo.rs at line 3
use pijul::changestore::filesystem::FileSystem; - replacement in crates/libflowers_client/src/repo.rs at line 14
use pijul::change::{Author, BaseHunk, ChangeHeader, Hunk, Local, LocalChange};use pijul::change::{self, get_change_contents, Author, BaseHunk, ChangeHeader, Hunk, Local,LocalChange,}; - replacement in crates/libflowers_client/src/repo.rs at line 56
Edit,Edit {line: usize,deleted: bool,contents: Vec<u8>,}, - replacement in crates/libflowers_client/src/repo.rs at line 178
let changed_files = changed_files(&diff);let changed_files = changed_files(&diff, &repo.changes); - replacement in crates/libflowers_client/src/repo.rs at line 190
state.changed_files = changed_files(&diff);state.changed_files = changed_files(&diff, &state.repo.changes); - replacement in crates/libflowers_client/src/repo.rs at line 438
fn changed_files(diff: &Diff) -> BTreeSet<ChangedFile> {fn changed_files(diff: &Diff,repo_changes: &FileSystem,) -> BTreeSet<ChangedFile> { - replacement in crates/libflowers_client/src/repo.rs at line 444
.map(|change| match change {.map(|change| match dbg!(change) { - replacement in crates/libflowers_client/src/repo.rs at line 491
change: _,change, - replacement in crates/libflowers_client/src/repo.rs at line 493[8.3085]→[8.3085:3116](∅→∅),[8.3116]→[16.298:346](∅→∅),[16.346]→[8.3158:3218](∅→∅),[8.3158]→[8.3158:3218](∅→∅)
} => ChangedFile {path: Some(local.path.clone()),diff: ChangedFileDiff::Edit,},} => {let path = Some(local.path.clone());let line = local.line;let deleted = if let change::Atom::EdgeMap(map) = change {map.edges.first().map(|edge| edge.flag.is_deleted()).unwrap_or_default()} else {false};// TODO: This fn isn't public in upstream pijul, contriblet contents =get_change_contents(repo_changes, change, &diff.contents).unwrap();ChangedFile {path,diff: ChangedFileDiff::Edit {line,deleted,contents,},}} - edit in crates/flowers_ui/src/main.rs at line 4
use tokio_stream::StreamExt; - edit in crates/flowers_ui/src/main.rs at line 6
use core::str; - replacement in crates/flowers_ui/src/main.rs at line 8
self, button, column, horizontal_rule, row, text, text_editor,self, button, column, horizontal_rule, row, scrollable, text, text_editor, - replacement in crates/flowers_ui/src/main.rs at line 64
let tasks = Task::batch([repo_task, repo_msg_out_task, load_id_task]);let (untracked_file_load_tx, untracked_file_load_rx) =watch::channel("".to_string());let untracked_file_load_rx =WatchStream::from_changes(untracked_file_load_rx);let repo_path_clone = repo_path.clone();let untracked_file_load_task = Task::run(untracked_file_load_rx.map(move |path| (repo_path_clone.clone(), path)).then(|(repo_path, path)| async {load_untracked_file(repo_path, path).await}),|msg| msg,);let tasks = Task::batch([repo_task,repo_msg_out_task,load_id_task,untracked_file_load_task,]); - edit in crates/flowers_ui/src/main.rs at line 93
untracked_file_contents: None,untracked_file_load_tx, - edit in crates/flowers_ui/src/main.rs at line 109
untracked_file_contents: Option<UntrackedFileContents>,untracked_file_load_tx: watch::Sender<String>, - edit in crates/flowers_ui/src/main.rs at line 114
enum UntrackedFileContents {Loading {path: String,},Loaded {path: String,data: Vec<u8>,// TODO: use pijul pijul::text_changes::Encoding (not exposed yet)// encoding: Encoding,},}#[derive(Debug)] - edit in crates/flowers_ui/src/main.rs at line 138
NoOp, - edit in crates/flowers_ui/src/main.rs at line 153
LoadedUntrackedFile { path: String, data: Vec<u8> }, - replacement in crates/flowers_ui/src/main.rs at line 158
|repo: &repo::State, ix: usize| -> cursor::Selection {|repo: &repo::State,ix: usize,untracked_file_contents: &mut Option<UntrackedFileContents>,untracked_file_load_tx: &watch::Sender<String>|-> cursor::Selection { - edit in crates/flowers_ui/src/main.rs at line 164
// Load the fileuntracked_file_load_tx.send(path.clone()).unwrap();*untracked_file_contents =Some(UntrackedFileContents::Loading { path: path.clone() }); - edit in crates/flowers_ui/src/main.rs at line 180
Message::NoOp => Task::none(), - replacement in crates/flowers_ui/src/main.rs at line 207
untracked_file_selection(repo, ix)untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,) - replacement in crates/flowers_ui/src/main.rs at line 219
untracked_file_selection(repo, ix)untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,) - replacement in crates/flowers_ui/src/main.rs at line 240
untracked_file_selection(repo, ix)untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,) - replacement in crates/flowers_ui/src/main.rs at line 263
Some(untracked_file_selection(repo, ix))Some(untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,)) - replacement in crates/flowers_ui/src/main.rs at line 282
untracked_file_selection(repo, ix)untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,) - replacement in crates/flowers_ui/src/main.rs at line 294
untracked_file_selection(repo, ix)untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,) - replacement in crates/flowers_ui/src/main.rs at line 310
untracked_file_selection(repo, ix)untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,) - replacement in crates/flowers_ui/src/main.rs at line 329
Some(untracked_file_selection(repo, ix))Some(untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,)) - edit in crates/flowers_ui/src/main.rs at line 346
match &selection {cursor::Selection::UntrackedFile { path, .. } => {// Load the filestate.untracked_file_load_tx.send(path.clone()).unwrap();state.untracked_file_contents =Some(UntrackedFileContents::Loading {path: path.clone(),});}cursor::Selection::ChangedFile { .. } => {}} - replacement in crates/flowers_ui/src/main.rs at line 389
Some(untracked_file_selection(repo, ix))Some(untracked_file_selection(repo,ix,&mut state.untracked_file_contents,&state.untracked_file_load_tx,)) - edit in crates/flowers_ui/src/main.rs at line 525
Message::LoadedUntrackedFile { path, data } => {match &state.untracked_file_contents {Some(UntrackedFileContents::Loading { path: loading_path }) => {if &path == loading_path {state.untracked_file_contents =Some(UntrackedFileContents::Loaded { path, data });}}// Reloaded fileSome(UntrackedFileContents::Loaded {path: loaded_path,..}) => {if &path == loaded_path {state.untracked_file_contents =Some(UntrackedFileContents::Loaded { path, data });}}None => {}}Task::none()} - replacement in crates/flowers_ui/src/main.rs at line 601
cursor::Selection::UntrackedFile { ix: _, path } => repo.untracked_files.iter().enumerate().find(|(_ix, file_path)| *file_path == path).map(|(ix, path)| cursor::Selection::UntrackedFile {ix,path: path.clone(),}),cursor::Selection::UntrackedFile { ix: _, path } => {state.untracked_file_load_tx.send(path.clone()).unwrap();repo.untracked_files.iter().enumerate().find(|(_ix, file_path)| *file_path == path).map(|(ix, path)| {cursor::Selection::UntrackedFile {ix,path: path.clone(),}})} - edit in crates/flowers_ui/src/main.rs at line 667
}async fn load_untracked_file(repo_path: PathBuf, file_path: String) -> Message {let mut path = repo_path;path.push(&file_path);if let Ok(data) = tokio::fs::read(&path).await {Message::LoadedUntrackedFile {path: file_path,data,}} else {Message::NoOp} - edit in crates/flowers_ui/src/main.rs at line 748
};let selection_details = match state.cursor.selection.as_ref() {Some(cursor::Selection::UntrackedFile { path, .. }) => {debug_assert!(repo.untracked_files.contains(path));let diff = match &state.untracked_file_contents {Some(UntrackedFileContents::Loaded {path: loaded_path,data,}) if loaded_path == path =>// TODO: use encoding{el(scrollable(text(str::from_utf8(data).unwrap_or("Not UTF-8"),)).width(Length::Fill))}_ => el(text("Loading...")),};el(column([el(text("Diff:")), diff]))}Some(cursor::Selection::ChangedFile { path, .. }) => {if let Some(path) = path {debug_assert!(repo.changed_files.iter().any(|file| file.path.as_ref() == Some(path)));}el(row([]))}None => el(row([])), - replacement in crates/flowers_ui/src/main.rs at line 794
el(column([record_msg_editor]).width(Length::FillPortion(1))),el(column([record_msg_editor, selection_details]).width(Length::FillPortion(1))),