indicate when a file is a dir with appended '/'
[?]
Nov 24, 2025, 10:18 PM
FU6P5QLG4GVLHVB4O5TCEPJF4X4FGDUBONQFRYP4U5KEPIYLUWJQCDependencies
- [2]
SWWE2R6Mdisplay basic repo stuff - [3]
EC3TVL4Xadd untracked files - [4]
KT5UYXGKfix selection after adding file, add changed file diffs - [5]
YBJRDOTCmake all repo actions async - [6]
A5YBC77Vrecord! - [7]
4WO3ZJM2show untracked files' contents - [8]
W4LFX7IHgroup diffs by file name - [9]
RPCIGCNSadd replacement diff details - [10]
MJDGPSHGWIP contents diff - [11]
OQ6HSAWHshow record log - [12]
WI2BVQ6Jrm client lib crate - [13]
4ELJZGRJload and store all change diffs at once - [14]
BFN2VHZSrefactor file stuff into sub-mod - [15]
23SFYK4Qbig view refactor into a new crate - [16]
OPXFZKEBview tests setup - [17]
3QVNMRNMtest non-empty repo app view - [18]
PKJCFSBMtheme improvements - [19]
XSZZB47Urefactor stuff into lib - [20]
3BK22XE5add a test for hover btn and more refactors - [21]
I56UGW7Umake record test, fix log update - [22]
YYKXNBFLtest: add untracked file - [23]
5CYU7UT7test: rm added file - [24]
ESMM3FELtest selection reindexing - [25]
UF5NJKAStest load repo - [26]
7SSBM4UQview: refactor repo view - [27]
SWDPAGF6test channel name - [28]
QYDWH7KBtest add and rm - [29]
5FVZF7XXtest changed files - [30]
B6YUTY3Qtest untracked files - [31]
YKHE3XMWrefactor diffs handling - [32]
KWTBNTO3diffs selection and scrolling - [33]
WXQBBQ2Aupdate nightly - [34]
PTWZYQFRuse nav-scrollable for repo status - [35]
UR4J677Rnav for log changes and refactors - [36]
A6Z4O6RCactions menu - [37]
JZXYSIYDchannel selection! - [38]
OJPGHVC3entire log! - [39]
3XRG4BB6rewritten nav-scrollable! - [40]
WAOGSCOJvery nice refactor, wip adding channels logs - [41]
WH57EHNMupdate tests - [42]
EJPSD5XOshared allowed actions conditions between update and view - [43]
YK3MOJJLchonky refactor, wip other channels logs & diffs - [44]
7WCB5YQJrefactor msgs and modules - [45]
AZ5D2LQUallow to set record description - [46]
PKLUHYE4allow to copy change hash - [47]
IFQPVMBDerror handling for repo actions - [48]
Z752SDILadvanced shaping for file names - [49]
LFEMJYYDstart of to_record selection - [50]
5O4FWCFPadd tests to_record selection and improve it - [51]
HPSOAD4Rfix moved tracked file view - [52]
K2SQTVJDhandle moved dirs - [53]
N256FH74improve views - [54]
2SLTGWP6add change files diffs to-record selection - [55]
UPWS6J3Bfilter to-record changes from selection - [56]
UMO6U2ZTpartition the change files diffs on whether they have content - [57]
KEPKF3WOunify diffs handling, simplify view - [58]
K63JN6CRrefactor out non-view field from cursor - [59]
ZIUHKVJKupdate tests - [60]
SASAN2XCuse nav-scrollable - [61]
MYGIBRRHwip custom theme - [62]
ONRCENKTrm unnecessary state from repo's internal state - [63]
KMB6FND3test view update fn rather than direct fn calls - [64]
W7IUT3ZVstart recording impl - [65]
ACDXXAX2refactor main's updates into smaller fns - [66]
I2AG42PAnew cols layout - [67]
X6AK4QPXfinish recording test - [*]
VCNKFNUFapp init test - [*]
WT3GA27Padd cursor with selection - [*]
6YZAVBWUInitial commit
Change contents
- edit in libflorescence/src/to_record.rs at line 1
//! Selection of changes to include or exclude in the next record./// Selection can be picked at 3 levels (order matters, from more coarse to/// more fine):////// - overall/// - per file/// - per change in a file////// To determine a pick state for anything from any of these levels, the/// high-levels (first in the list above) take precedence over the more/// fine-grained levels. This is so that fine-grained partial selection is/// preserved even if a state at higher-level is changed to be all included/// or excluded so that it's possible to return back to the partial/// selection. - replacement in libflorescence/src/to_record.rs at line 17
use crate::{diff, repo};use crate::{diff, file}; - replacement in libflorescence/src/to_record.rs at line 39
pub files: HashMap<String, PickSet>,pub files: HashMap<file::Path, PickSet>, - replacement in libflorescence/src/to_record.rs at line 42
pub changes: HashMap<String, PartialFile>,pub changes: HashMap<file::Path, PartialFile>, - replacement in libflorescence/src/to_record.rs at line 81
pub fn determine_file(state: &State,file: &str,changed_files: &repo::ChangedFiles,) -> PickSet {pub fn determine_file(state: &State, file: &file::Path) -> PickSet { - replacement in libflorescence/src/to_record.rs at line 88
} else if file_has_any_partial_change(file, state, changed_files) {} else if file_has_any_partial_change(file, state) { - replacement in libflorescence/src/to_record.rs at line 98
file: &str,file: &file::Path, - replacement in libflorescence/src/to_record.rs at line 123
pub fn file_has_any_partial_change(file: &str,state: &State,changed_files: &repo::ChangedFiles,) -> bool {let changes = changed_files.get(file).unwrap();pub fn file_has_any_partial_change(file: &file::Path, state: &State) -> bool { - replacement in libflorescence/src/to_record.rs at line 129
if file.changes.len() == changes.len() {// The number of of changes in selection is the same as number// of actual changes, we need to have both exclude and include// to be partialfile.changes.values().any(|pick| {has_exclude |= matches!(pick, Pick::Exclude);has_include |= matches!(pick, Pick::Include);has_include && has_exclude})} else {// There is the same number of changes in selection is not the// same as number of actual changes, we only need to find 1// exclusion to be partialfile.changes.values().any(|pick| matches!(pick, Pick::Exclude))}// We need to have both exclude and include to be partialfile.changes.values().any(|pick| {has_exclude |= matches!(pick, Pick::Exclude);has_include |= matches!(pick, Pick::Include);has_include && has_exclude}) - replacement in libflorescence/src/repo.rs at line 9
use crate::{diff, to_record};use crate::{diff, file, to_record}; - edit in libflorescence/src/repo.rs at line 15
use pijul::changestore::filesystem::FileSystem; - edit in libflorescence/src/repo.rs at line 22
use std::cmp; - edit in libflorescence/src/repo.rs at line 26
use std::{cmp, fs}; - replacement in libflorescence/src/repo.rs at line 44
pub untracked_files: BTreeSet<String>,pub untracked_files: BTreeSet<file::Path>, - replacement in libflorescence/src/repo.rs at line 109
pub type ChangedFiles = BTreeMap<String, ChangedFile>;pub type ChangedFiles = BTreeMap<file::Path, ChangedFile>; - replacement in libflorescence/src/repo.rs at line 343
get_change_diffs(hash, &internal_state).context(format!(get_change_diffs(&internal_state, hash).context(format!( - replacement in libflorescence/src/repo.rs at line 431
let changed_files = changed_files(&diff, &repo.changes)?;let changed_files = changed_files(repo, &diff)?; - replacement in libflorescence/src/repo.rs at line 567
// These two variable are needed to for `to_record` change filter.// This is needed to for `to_record` change filter. - edit in libflorescence/src/repo.rs at line 569
let changed_files = changed_files(&diff, &repo.changes)?; - replacement in libflorescence/src/repo.rs at line 658
if let Ok((path, diff)) =pijul_change_to_diff(&diff, hunk, &repo.changes)if let Ok((file, diff)) =pijul_change_to_diff(&repo, &diff, hunk) - replacement in libflorescence/src/repo.rs at line 661
match to_record::determine_file(&to_record,&path,&changed_files,) {match to_record::determine_file(&to_record, &file) { - replacement in libflorescence/src/repo.rs at line 668
&path, diff_id, &to_record,&file, diff_id, &to_record, - edit in libflorescence/src/repo.rs at line 839
hash: ChangeHash, - edit in libflorescence/src/repo.rs at line 840
hash: ChangeHash, - replacement in libflorescence/src/repo.rs at line 843
changed_files(&change, &internal_state.repo.changes)changed_files(&internal_state.repo, &change) - edit in libflorescence/src/repo.rs at line 847
repo: &pijul::Repository, - edit in libflorescence/src/repo.rs at line 849
repo_changes: &FileSystem, - replacement in libflorescence/src/repo.rs at line 853
let (path, diff) = pijul_change_to_diff(diff, change, repo_changes)?;changes.entry(path).or_default().insert(diff);let (file, diff) = pijul_change_to_diff(repo, diff, change)?;changes.entry(file).or_default().insert(diff); - edit in libflorescence/src/repo.rs at line 861
repo: &pijul::Repository, - replacement in libflorescence/src/repo.rs at line 864
repo_changes: &FileSystem,) -> anyhow::Result<(String, ChangedFileDiff)> {let changed_file = match hunk {) -> anyhow::Result<(file::Path, ChangedFileDiff)> {let (path, diff) = match hunk { - replacement in libflorescence/src/repo.rs at line 896
repo_changes,&repo.changes, - replacement in libflorescence/src/repo.rs at line 942
get_change_contents(repo_changes, change, &diff.contents)?;get_change_contents(&repo.changes, change, &diff.contents)?; - replacement in libflorescence/src/repo.rs at line 960
get_change_contents(repo_changes, change, &diff.contents)?;get_change_contents(&repo.changes, change, &diff.contents)?; - replacement in libflorescence/src/repo.rs at line 964
let raw_replacement_contents =get_change_contents(repo_changes, replacement, &diff.contents)?;let raw_replacement_contents = get_change_contents(&repo.changes,replacement,&diff.contents,)?; - replacement in libflorescence/src/repo.rs at line 997
Ok(changed_file)// NOTE This might be called for log or another channel so the file might// not exist (or at extereme could even change from file to dir or// vice-versa). Hence this information is sadly not 100% reliable, but it's// still better than not having it alllet is_dir = fs::metadata(repo.path.join(&path)).map(|metadata| metadata.is_dir()).unwrap_or_default();let path = file::Path { raw: path, is_dir };Ok((path, diff)) - replacement in libflorescence/src/repo.rs at line 1011
) -> anyhow::Result<BTreeSet<String>> {) -> anyhow::Result<BTreeSet<file::Path>> { - replacement in libflorescence/src/repo.rs at line 1038
Some(Ok(path_str.into_owned()))let path = path_str.into_owned();let is_dir = match fs::metadata(repo.path.join(&path)) {Err(e) => {return Some(Err(anyhow::Error::from(e)));}Ok(metadata) => metadata.is_dir(),};Some(Ok(file::Path { raw: path, is_dir })) - edit in libflorescence/src/repo/test.rs at line 1
use crate::file; - replacement in libflorescence/src/repo/test.rs at line 154
let changed_files =repo::changed_files(&diff, &internal.repo.changes).unwrap();let changed_files = repo::changed_files(&internal.repo, &diff).unwrap(); - replacement in libflorescence/src/repo/test.rs at line 156
let changed_file_diff = changed_files.get(DEFAULT_IGNORE_FILE).unwrap();let path = file::Path {raw: DEFAULT_IGNORE_FILE.to_string(),is_dir: false,};let changed_file_diff = changed_files.get(&path).unwrap(); - replacement in libflorescence/src/repo/test.rs at line 183
assert_eq!(untracked_files.first().unwrap(), new_file);assert_eq!(untracked_files.first().unwrap().raw, new_file); - edit in libflorescence/src/file.rs at line 2
use std::fmt::Display;#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]pub struct Path {pub raw: String,pub is_dir: bool,} - replacement in libflorescence/src/file.rs at line 13
pub path: String,pub path: Path, - replacement in libflorescence/src/file.rs at line 19
pub path: &'a str,pub path: &'a Path, - replacement in libflorescence/src/file.rs at line 66
pub fn id_parts_hash(path: &str, file_kind: Kind) -> IdHash {pub fn id_parts_hash(path: &Path, file_kind: Kind) -> IdHash { - edit in libflorescence/src/file.rs at line 82
impl Display for Path {fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {let Path { raw: path, is_dir } = self;// Adds slash when it's a dirwrite!(f, "{path}{}", if *is_dir { "/" } else { "" })}} - replacement in libflorescence/src/file.rs at line 96
let path = "some random path";let raw = "some random path".to_string();let path = Path { raw, is_dir: false }; - replacement in libflorescence/src/file.rs at line 101
id_ref_hash(&IdRef { path, file_kind }),id_ref_hash(&IdRef {path: &path,file_kind}), - replacement in libflorescence/src/file.rs at line 106
path: path.to_string(),path: path.clone(), - replacement in libflorescence/src/file.rs at line 111
id_ref_hash(&IdRef { path, file_kind }),id_parts_hash(path, file_kind),id_ref_hash(&IdRef {path: &path,file_kind}),id_parts_hash(&path, file_kind), - replacement in libflorescence/src/file.rs at line 119
id_ref_hash(&IdRef { path, file_kind }),id_ref_hash(&IdRef {path: &path,file_kind}), - replacement in libflorescence/src/file.rs at line 124
path: path.to_string(),path, - replacement in inflorescence_view/src/view.rs at line 145[26.765]→[15.16052:16079](∅→∅),[34.1554]→[15.16052:16079](∅→∅),[35.3137]→[15.16052:16079](∅→∅),[15.16052]→[15.16052:16079](∅→∅)
|(ix, path)| {|(ix, file)| { - replacement in inflorescence_view/src/view.rs at line 150
button(text(path)button(text(file.to_string()) - replacement in inflorescence_view/src/view.rs at line 156
selection::Select::UntrackedFile{ix, path: path.clone()},selection::Select::UntrackedFile{ix, path: file.clone()}, - replacement in inflorescence_view/src/view.rs at line 166[26.864]→[15.16741:16783](∅→∅),[34.1617]→[15.16741:16783](∅→∅),[35.3290]→[15.16741:16783](∅→∅),[15.16741]→[15.16741:16783](∅→∅),[15.16783]→[54.732:824](∅→∅)
|(ix, (file_path, _diffs))| {let state = to_record::determine_file(to_record, file_path, changed_files);|(ix, (file, _diffs))| {let state = to_record::determine_file(to_record, file); - replacement in inflorescence_view/src/view.rs at line 170
.on_press_with(||Msg::ToRecord(to_record::Msg::ToggleFile{file :file_path.clone()})).on_press_with(||Msg::ToRecord(to_record::Msg::ToggleFile{path :file.clone()})) - replacement in inflorescence_view/src/view.rs at line 177
text(file_path)text(file.to_string()) - replacement in inflorescence_view/src/view.rs at line 182
selection::Select::ChangedFile{ix, path: file_path.clone()},selection::Select::ChangedFile{ix, path: file.clone()}, - replacement in inflorescence_view/src/view.rs at line 248
file::id_parts_hash(path, file::Kind::Untracked);file::id_parts_hash(&path, file::Kind::Untracked); - replacement in inflorescence_view/src/view.rs at line 257
path,Some(path), - replacement in inflorescence_view/src/view.rs at line 266
view_header(format!("Untracked {path} contents:")),view_header(format!("Untracked {} contents:",path.raw)), - replacement in inflorescence_view/src/view.rs at line 280
file::id_parts_hash(path, file::Kind::Changed);file::id_parts_hash(&path, file::Kind::Changed); - replacement in inflorescence_view/src/view.rs at line 289
path,Some(path), - replacement in inflorescence_view/src/view.rs at line 297
el(column([view_header(format!("{path} diff:")), diffs]).spacing(SPACING))el(column([view_header(format!("{} diff:", path.raw)),diffs,]).spacing(SPACING)) - replacement in inflorescence_view/src/view.rs at line 410
[el(container(el(text("Untracked:")))[el(container(el(text("Untracked files:"))) - replacement in inflorescence_view/src/view.rs at line 416
el(text("Changed:")),el(text("Changed files:")), - replacement in inflorescence_view/src/view.rs at line 513
path,None, - replacement in inflorescence_view/src/view.rs at line 760
path,None, - replacement in inflorescence_view/src/view.rs at line 930
path,None, - replacement in inflorescence_view/src/view/test.rs at line 11[41.589]→[19.5854:5880](∅→∅),[31.2357]→[19.5854:5880](∅→∅),[39.5074]→[19.5854:5880](∅→∅),[19.5854]→[19.5854:5880](∅→∅)
use libflorescence::repo;use libflorescence::{file, repo}; - edit in inflorescence_view/src/view/test.rs at line 33
let to_file_path = |raw: &str| file::Path {raw: raw.to_string(),is_dir: false,};let to_dir_path = |raw: &str| file::Path {raw: raw.to_string(),is_dir: true,}; - replacement in inflorescence_view/src/view/test.rs at line 102
"untracked.rs".to_string(),"a/sub/dir/somewhere/deep/untracked_file.rs".to_string(),to_file_path("untracked.rs"),to_dir_path("untracked_dir"),to_file_path("a/sub/dir/somewhere/deep/untracked_file.rs"), - replacement in inflorescence_view/src/view/test.rs at line 107
("changed_file.rs".to_string(), BTreeSet::default()),(to_file_path("changed_file.rs"), BTreeSet::default()), - replacement in inflorescence_view/src/view/test.rs at line 109
"a/sub/dir/somewhere/deep/changed_file.rs".to_string(),to_file_path("a/sub/dir/somewhere/deep/changed_file.rs"), - replacement in inflorescence_view/src/view/test.rs at line 155
path: "".to_string(),path: to_file_path(""), - edit in inflorescence_view/src/diff.rs at line 7
use inflorescence_model::to_record; - edit in inflorescence_view/src/diff.rs at line 11
use inflorescence_model::to_record;use libflorescence::file; - replacement in inflorescence_view/src/diff.rs at line 23
path: &'a str,path: Option<&'a file::Path>, - replacement in inflorescence_view/src/diff.rs at line 48
path: &'a str,path: Option<&'a file::Path>, - replacement in inflorescence_view/src/diff.rs at line 75
// Add space to align these with toggle in `Section::Changed`let toggle_space = el(container(text("")).width(checkbox::WIDTH));el(row([toggle_space, el(column(res))]).spacing(CHECKBOX_SPACING))if path.is_some() {// Add space to align these with toggle in `Section::Changed`let toggle_space =el(container(text("")).width(checkbox::WIDTH));el(row([toggle_space, el(column(res))]).spacing(CHECKBOX_SPACING))} else {el(column(res))} - replacement in inflorescence_view/src/diff.rs at line 114[54.3765]→[54.3765:3798](∅→∅),[54.3798]→[55.11291:11363](∅→∅),[55.11363]→[54.3875:4183](∅→∅),[54.3875]→[54.3875:4183](∅→∅)
let to_record_pick =to_record::determine_change(path, *diff_id, to_record);let to_record_toggle = el(checkbox::two_way(to_record_pick).on_press_with(|| {Msg::ToRecord(to_record::Msg::ToggleChange {file: path.to_string(),diff_id: *diff_id,})}));if let Some(path) = path {let to_record_pick =to_record::determine_change(path, *diff_id, to_record);let to_record_toggle = el(checkbox::two_way(to_record_pick).on_press_with(|| {Msg::ToRecord(to_record::Msg::ToggleChange {path: path.clone(),diff_id: *diff_id,})})); - replacement in inflorescence_view/src/diff.rs at line 125
el(row([to_record_toggle, el(column(res))]).spacing(CHECKBOX_SPACING))el(row([to_record_toggle, el(column(res))]).spacing(CHECKBOX_SPACING))} else {el(column(res))} - replacement in inflorescence_model/src/to_record.rs at line 14
use libflorescence::{diff, repo};use libflorescence::{diff, file, repo}; - replacement in inflorescence_model/src/to_record.rs at line 19
ToggleFile { file: String },ToggleChange { file: String, diff_id: diff::IdHash },ToggleFile {path: file::Path,},ToggleChange {path: file::Path,diff_id: diff::IdHash,}, - replacement in inflorescence_model/src/to_record.rs at line 33
Msg::ToggleFile { file } => {Msg::ToggleFile { path } => { - replacement in inflorescence_model/src/to_record.rs at line 49
let pick = next_file_pick(&file, state, changed_files);state.files.insert(file, pick);let pick = next_file_pick(&path, state);state.files.insert(path, pick); - replacement in inflorescence_model/src/to_record.rs at line 55
file,path: file, - replacement in inflorescence_model/src/to_record.rs at line 145
pub fn next_file_pick(file: &str,state: &State,changed_files: &repo::ChangedFiles,) -> PickSet {pub fn next_file_pick(file: &file::Path, state: &State) -> PickSet { - replacement in inflorescence_model/src/to_record.rs at line 153
&& !file_has_any_partial_change(file, state, changed_files)&& !file_has_any_partial_change(file, state) - replacement in inflorescence_model/src/to_record.rs at line 162
file: &str,file: &file::Path, - replacement in inflorescence_model/src/to_record.rs at line 203
|| file_has_any_partial_change(file, state, changed_files)|| file_has_any_partial_change(file, state) - replacement in inflorescence_model/src/to_record.rs at line 208
|| file_has_any_partial_change(file, state, changed_files)|| file_has_any_partial_change(file, state) - replacement in inflorescence_model/src/to_record.rs at line 248
file: &str,file: &file::Path, - edit in inflorescence_model/src/to_record/test.rs at line 28
let to_path = |raw: &str| file::Path {raw: raw.to_string(),is_dir: false,}; - replacement in inflorescence_model/src/to_record/test.rs at line 34
(file_a.to_owned(), repo::ChangedFile::default()),(file_b.to_owned(), repo::ChangedFile::default()),(file_c.to_owned(), repo::ChangedFile::default()),(to_path(file_a), repo::ChangedFile::default()),(to_path(file_b), repo::ChangedFile::default()),(to_path(file_c), repo::ChangedFile::default()), - replacement in inflorescence_model/src/to_record/test.rs at line 43
file: file.to_owned(),path: to_path(file), - replacement in inflorescence_model/src/to_record/test.rs at line 49
let file = |state: &State, file: &str| *state.files.get(file).unwrap();let file =|state: &State, file: &str| *state.files.get(&to_path(file)).unwrap(); - edit in inflorescence_model/src/to_record/test.rs at line 151
let to_path = |raw: &str| file::Path {raw: raw.to_string(),is_dir: false,}; - replacement in inflorescence_model/src/to_record/test.rs at line 168
file_a.to_owned(),to_path(file_a), - replacement in inflorescence_model/src/to_record/test.rs at line 172
file_b.to_owned(),to_path(file_b), - replacement in inflorescence_model/src/to_record/test.rs at line 179
file_c.to_owned(),to_path(file_c), - replacement in inflorescence_model/src/to_record/test.rs at line 193
file: file.to_owned(),path: to_path(file), - replacement in inflorescence_model/src/to_record/test.rs at line 200
let file = |state: &State, file: &str| *state.files.get(file).unwrap();let file =|state: &State, file: &str| *state.files.get(&to_path(file)).unwrap(); - replacement in inflorescence_model/src/to_record/test.rs at line 206
.get(file).get(&to_path(file)) - edit in inflorescence_model/src/selection.rs at line 1
use libflorescence::file::Path; - replacement in inflorescence_model/src/selection.rs at line 73
path: String,path: Path, - replacement in inflorescence_model/src/selection.rs at line 78
path: String,path: Path, - replacement in inflorescence_model/src/selection.rs at line 95
path: String,path: Path, - replacement in inflorescence_model/src/selection.rs at line 99
path: String,path: Path, - replacement in inflorescence_model/src/action.rs at line 86
ToRecord(to_record::Msg::ToggleFile { file: _ })ToRecord(to_record::Msg::ToggleFile { path: _ }) - replacement in inflorescence_model/src/action.rs at line 88
file: _,path: _, - replacement in inflorescence_model/src/action.rs at line 95
ToRecord(to_record::Msg::ToggleFile { file: _ })ToRecord(to_record::Msg::ToggleFile { path: _ }) - replacement in inflorescence_model/src/action.rs at line 97
file: _,path: _, - replacement in inflorescence_model/src/action.rs at line 349[42.9265]→[42.9265:9295](∅→∅),[42.9295]→[46.446:494](∅→∅),[46.494]→[42.9341:9503](∅→∅),[42.9341]→[42.9341:9503](∅→∅)
match selection {StatusSelection::Untracked => {ma.push(add_untracked());push_if(can_select_right, right, ma);push_if(can_record, start_record, ma)if let Some(selection) = selection {match selection {StatusSelection::Untracked => {ma.push(add_untracked());push_if(can_select_right, right, ma);push_if(can_record, start_record, ma)}StatusSelection::Changed => {// Always allow right move for `to_record` selectionma.push(right());push_if(can_record, start_record, ma)}StatusSelection::AddedFromUntracked => {ma.push(rm_added_file());push_if(can_select_right, right, ma);push_if(can_record, start_record, ma)}StatusSelection::LogChange => {push_if(can_select_right, right, ma);ma.push(clipboard_copy_change_hash());push_if(can_record, start_record, ma)} - replacement in inflorescence_model/src/action.rs at line 372[42.9521]→[46.495:552](∅→∅),[46.552]→[42.9576:9756](∅→∅),[42.9576]→[42.9576:9756](∅→∅),[42.9756]→[46.553:838](∅→∅),[46.838]→[42.9798:9947](∅→∅),[42.9798]→[42.9798:9947](∅→∅)
StatusSelection::AddedFromUntracked => {ma.push(rm_added_file());push_if(can_select_right, right, ma);push_if(can_record, start_record, ma)}StatusSelection::LogChange => {push_if(can_select_right, right, ma);ma.push(clipboard_copy_change_hash());push_if(can_record, start_record, ma)}StatusSelection::Other => {push_if(can_select_right, right, ma);push_if(can_record, start_record, ma)}};} - replacement in inflorescence_model/src/action.rs at line 569
selection: StatusSelection,selection: Option<StatusSelection>, - replacement in inflorescence_model/src/action.rs at line 621
Other,Changed, - replacement in inflorescence_model/src/action.rs at line 710
selection: StatusSelection::Untracked,selection: Some(StatusSelection::Untracked), - replacement in inflorescence_model/src/action.rs at line 735
StatusSelection::OtherStatusSelection::Changed - replacement in inflorescence_model/src/action.rs at line 739
Some(to_record::next_file_pick(path,to_record,changed_files,));Some(to_record::next_file_pick(path, to_record)); - replacement in inflorescence_model/src/action.rs at line 768
selection: main_selection(),selection: Some(main_selection()), - replacement in inflorescence_model/src/action.rs at line 810
selection: StatusSelection::LogChange,selection: Some(StatusSelection::LogChange), - replacement in inflorescence_model/src/action.rs at line 819
selection: StatusSelection::Other,selection: None, - edit in inflorescence/src/test.rs at line 85
let to_path = |raw: &str| file::Path {raw: raw.to_string(),is_dir: false,}; - replacement in inflorescence/src/test.rs at line 124
path: file_to_record.to_string(),path: to_path(file_to_record), - replacement in inflorescence/src/test.rs at line 228
path: file_to_record.to_string(),path: to_path(file_to_record), - replacement in inflorescence/src/test.rs at line 237
path: file_to_record.to_string(),path: to_path(file_to_record), - edit in inflorescence/src/test.rs at line 496
let to_path = |raw: &str| file::Path {raw: raw.to_string(),is_dir: false,}; - replacement in inflorescence/src/test.rs at line 529
assert!(repo_state.untracked_files.contains(file_to_record));assert!(repo_state.untracked_files.contains(&to_path(file_to_record))); - replacement in inflorescence/src/test.rs at line 542
path: file_to_record.to_string(),path: to_path(file_to_record), - replacement in inflorescence/src/test.rs at line 551
path: file_to_record.to_string(),path: to_path(file_to_record), - replacement in inflorescence/src/test.rs at line 579
assert!(repo_state.changed_files.contains_key(file_to_record));assert!(repo_state.changed_files.contains_key(&to_path(file_to_record))); - replacement in inflorescence/src/test.rs at line 583
repo_state.changed_files.get(file_to_record).unwrap(),repo_state.changed_files.get(&to_path(file_to_record)).unwrap(), - replacement in inflorescence/src/test.rs at line 597
path: file_to_record.to_string(),path: to_path(file_to_record), - replacement in inflorescence/src/test.rs at line 605
path: file_to_record.to_string(),path: to_path(file_to_record), - replacement in inflorescence/src/test.rs at line 632
assert!(repo_state.untracked_files.contains(file_to_record));assert!(repo_state.untracked_files.contains(&to_path(file_to_record))); - edit in inflorescence/src/test.rs at line 662
};let to_path = |raw: &str| file::Path {raw: raw.to_string(),is_dir: false, - replacement in inflorescence/src/test.rs at line 690
"untracked_0.rs".to_string(),"untracked_1.rs".to_string(),"untracked_2.rs".to_string(),to_path("untracked_0.rs"),to_path("untracked_1.rs"),to_path("untracked_2.rs"), - replacement in inflorescence/src/test.rs at line 697
path: "untracked_1.rs".to_string(),path: to_path("untracked_1.rs"), - replacement in inflorescence/src/test.rs at line 711
if *ix == 1 && path == "untracked_1.rs" && !diff_selectedif *ix == 1 && path.raw == "untracked_1.rs" && !diff_selected - replacement in inflorescence/src/test.rs at line 718
"untracked_1.rs",&to_path("untracked_1.rs"), - replacement in inflorescence/src/test.rs at line 731
path: "untracked_gone.rs".to_string(),path: to_path("untracked_gone.rs"), - replacement in inflorescence/src/test.rs at line 752
"changed_0.rs".to_string(),to_path("changed_0.rs"), - replacement in inflorescence/src/test.rs at line 755
("changed_1.rs".to_string(), BTreeSet::new()),("changed_2.rs".to_string(), BTreeSet::new()),(to_path("changed_1.rs"), BTreeSet::new()),(to_path("changed_2.rs"), BTreeSet::new()), - replacement in inflorescence/src/test.rs at line 761
path: "changed_0.rs".to_string(),path: to_path("changed_0.rs"), - replacement in inflorescence/src/test.rs at line 775
if *ix == 0 && path == "changed_0.rs" && !diff_selectedif *ix == 0 && path.raw == "changed_0.rs" && !diff_selected - replacement in inflorescence/src/test.rs at line 781
state.files.diffs_cache.inner.peek(&file::id_parts_hash("changed_0.rs", file::Kind::Changed)),state.files.diffs_cache.inner.peek(&file::id_parts_hash(&to_path("changed_0.rs"),file::Kind::Changed)), - replacement in inflorescence/src/test.rs at line 796
path: "changed_1.rs".to_string(),path: to_path("changed_1.rs"), - replacement in inflorescence/src/test.rs at line 809
.insert("changed_1.rs".to_string(), changed_file);.insert(to_path("changed_1.rs"), changed_file); - replacement in inflorescence/src/test.rs at line 822
if *ix == 1 && path == "changed_1.rs" && !diff_selectedif *ix == 1 && path.raw == "changed_1.rs" && !diff_selected - replacement in inflorescence/src/test.rs at line 833
state.files.diffs_cache.inner.peek(&file::id_parts_hash("changed_1.rs", file::Kind::Changed)),state.files.diffs_cache.inner.peek(&file::id_parts_hash(&to_path("changed_1.rs"),file::Kind::Changed)), - replacement in inflorescence/src/test.rs at line 847
path: "changed_gone.rs".to_string(),path: to_path("changed_gone.rs"), - replacement in inflorescence/src/test.rs at line 918
path: "log_gone.rs".to_string(),path: to_path("log_gone.rs"), - replacement in inflorescence/src/selection.rs at line 1255
let diff_selected =diff::file_diff_needs_scrolling(&ctx.navigation.files_diffs);// Always allow right move for `to_record` selectionlet diff_selected = true; - replacement in inflorescence/src/main.rs at line 541
file: path.clone(),path: path.clone(), - replacement in inflorescence/src/main.rs at line 547
let msg = to_record::Msg::ToggleFile { file: path.clone() };let msg = to_record::Msg::ToggleFile { path: path.clone() }; - replacement in inflorescence/src/main.rs at line 751
.send(repo::MsgIn::AddUntrackedFile { path: path.clone() }).send(repo::MsgIn::AddUntrackedFile {path: path.raw.clone(),}) - replacement in inflorescence/src/main.rs at line 757
debug_assert!(removed, "{:?}, path: {path}", repo.untracked_files);debug_assert!(removed,"{:?}, path: {}",repo.untracked_files, path.raw); - replacement in inflorescence/src/main.rs at line 815
.send(repo::MsgIn::RmAddedFile { path: path.clone() }).send(repo::MsgIn::RmAddedFile {path: path.raw.clone(),}) - replacement in inflorescence/src/main.rs at line 825
path,path.raw, - replacement in inflorescence/src/main.rs at line 1373
let file_id = file::log_id_parts_hash(hash, &path);let file_id = file::log_id_parts_hash(hash, &path.raw); - edit in inflorescence/src/file.rs at line 4
#[allow(unused_imports)] - replacement in inflorescence/src/file.rs at line 6
id_hash, id_parts_hash, log_id_parts_hash, Diff, Id, IdHash, Kind,id_hash, id_parts_hash, log_id_parts_hash, Diff, Id, IdHash, Kind, Path, - replacement in inflorescence/src/file.rs at line 185
path.push(&id.path);path.push(&id.path.raw);