1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2024-12-04 10:34:55 +02:00
lazygit/pkg/gui/filetree
Jesse Duffield e33fe37a99 Standardise on using lo for slice functions
We've been sometimes using lo and sometimes using my slices package, and we need to pick one
for consistency. Lo is more extensive and better maintained so we're going with that.

My slices package was a superset of go's own slices package so in some places I've just used
the official one (the methods were just wrappers anyway).

I've also moved the remaining methods into the utils package.
2023-07-30 18:51:23 +10:00
..
build_tree_test.go refactor to use generics for file nodes 2022-07-31 19:43:14 +10:00
build_tree.go refactor to use generics for file nodes 2022-07-31 19:43:14 +10:00
collapsed_paths.go make more use of generics 2022-03-24 20:14:41 +11:00
commit_file_node.go handle nil properly with file nodes 2022-08-01 20:32:01 +10:00
commit_file_tree_view_model.go introduce Ref interface 2022-04-02 17:04:42 +11:00
commit_file_tree.go Standardise on using lo for slice functions 2023-07-30 18:51:23 +10:00
file_node_test.go refactor to use generics for file nodes 2022-07-31 19:43:14 +10:00
file_node.go fix could-not-access error 2022-11-11 12:30:14 +11:00
file_tree_test.go move more view model logic into the files view model 2022-03-17 19:13:40 +11:00
file_tree_view_model.go Support filtering files 2023-07-03 12:54:13 +10:00
file_tree.go Standardise on using lo for slice functions 2023-07-30 18:51:23 +10:00
node.go Standardise on using lo for slice functions 2023-07-30 18:51:23 +10:00
README.md properly resolve cyclic dependency 2022-01-22 10:48:51 +11:00

FileTree Package

This package handles the representation of file trees. There are two ways to render files: one is to render them flat, so something like this:

dir1/file1
dir1/file2
file3

And the other is to render them as a tree

dir1/
  file1
  file2
file3

Internally we represent each of the above as a tree, but with the flat approach there's just a single root node and every path is a direct child of that root. Viewing in 'tree' mode (as opposed to 'flat' mode) allows for collapsing and expanding directories, and lets you perform actions on directories e.g. staging a whole directory. But it takes up more vertical space and sometimes you just want to have a flat view where you can go flick through your files one by one to see the diff.

This package is not concerned about rendering the tree: only representing its internal state.