Merge pull request #208 from wagoodman/config/toggle-unchanged-files
config keybinding: unchanged vs unmodified
This commit is contained in:
commit
d8bf1ba2e5
@ -189,6 +189,8 @@ Key Binding | Description
|
||||
<kbd>Ctrl + M</kbd> | Filetree view: show/hide modified files
|
||||
<kbd>Ctrl + U</kbd> | Filetree view: show/hide unmodified files
|
||||
<kbd>Ctrl + B</kbd> | Filetree view: show/hide file attributes
|
||||
<kbd>PageUp</kbd> | Filetree view: scroll up a page
|
||||
<kbd>PageDown</kbd> | Filetree view: scroll down a page
|
||||
|
||||
## UI Configuration
|
||||
|
||||
|
@ -70,7 +70,7 @@ func initConfig() {
|
||||
viper.SetDefault("keybinding.toggle-added-files", "ctrl+a")
|
||||
viper.SetDefault("keybinding.toggle-removed-files", "ctrl+r")
|
||||
viper.SetDefault("keybinding.toggle-modified-files", "ctrl+m")
|
||||
viper.SetDefault("keybinding.toggle-unchanged-files", "ctrl+u")
|
||||
viper.SetDefault("keybinding.toggle-unmodified-files", "ctrl+u")
|
||||
viper.SetDefault("keybinding.page-up", "pgup")
|
||||
viper.SetDefault("keybinding.page-down", "pgdn")
|
||||
|
||||
|
@ -10,8 +10,8 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
Unchanged DiffType = iota
|
||||
Changed
|
||||
Unmodified DiffType = iota
|
||||
Modified
|
||||
Added
|
||||
Removed
|
||||
)
|
||||
@ -23,7 +23,7 @@ func NewNodeData() *NodeData {
|
||||
return &NodeData{
|
||||
ViewInfo: *NewViewInfo(),
|
||||
FileInfo: FileInfo{},
|
||||
DiffType: Unchanged,
|
||||
DiffType: Unmodified,
|
||||
}
|
||||
}
|
||||
|
||||
@ -129,19 +129,19 @@ func (data *FileInfo) Compare(other FileInfo) DiffType {
|
||||
data.Mode == other.Mode &&
|
||||
data.Uid == other.Uid &&
|
||||
data.Gid == other.Gid {
|
||||
return Unchanged
|
||||
return Unmodified
|
||||
}
|
||||
}
|
||||
return Changed
|
||||
return Modified
|
||||
}
|
||||
|
||||
// String of a DiffType
|
||||
func (diff DiffType) String() string {
|
||||
switch diff {
|
||||
case Unchanged:
|
||||
return "Unchanged"
|
||||
case Changed:
|
||||
return "Changed"
|
||||
case Unmodified:
|
||||
return "Unmodified"
|
||||
case Modified:
|
||||
return "Modified"
|
||||
case Added:
|
||||
return "Added"
|
||||
case Removed:
|
||||
@ -157,5 +157,5 @@ func (diff DiffType) merge(other DiffType) DiffType {
|
||||
if diff == other {
|
||||
return diff
|
||||
}
|
||||
return Changed
|
||||
return Modified
|
||||
}
|
||||
|
@ -10,23 +10,23 @@ func TestAssignDiffType(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Errorf("Expected no error from fetching path. got: %v", err)
|
||||
}
|
||||
node.Data.DiffType = Changed
|
||||
if tree.Root.Children["usr"].Data.DiffType != Changed {
|
||||
node.Data.DiffType = Modified
|
||||
if tree.Root.Children["usr"].Data.DiffType != Modified {
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestMergeDiffTypes(t *testing.T) {
|
||||
a := Unchanged
|
||||
b := Unchanged
|
||||
a := Unmodified
|
||||
b := Unmodified
|
||||
merged := a.merge(b)
|
||||
if merged != Unchanged {
|
||||
if merged != Unmodified {
|
||||
t.Errorf("Expected Unchaged (0) but got %v", merged)
|
||||
}
|
||||
a = Changed
|
||||
b = Unchanged
|
||||
a = Modified
|
||||
b = Unmodified
|
||||
merged = a.merge(b)
|
||||
if merged != Changed {
|
||||
if merged != Modified {
|
||||
t.Errorf("Expected Unchaged (0) but got %v", merged)
|
||||
}
|
||||
}
|
||||
|
@ -17,10 +17,10 @@ const (
|
||||
)
|
||||
|
||||
var diffTypeColor = map[DiffType]*color.Color{
|
||||
Added: color.New(color.FgGreen),
|
||||
Removed: color.New(color.FgRed),
|
||||
Changed: color.New(color.FgYellow),
|
||||
Unchanged: color.New(color.Reset),
|
||||
Added: color.New(color.FgGreen),
|
||||
Removed: color.New(color.FgRed),
|
||||
Modified: color.New(color.FgYellow),
|
||||
Unmodified: color.New(color.Reset),
|
||||
}
|
||||
|
||||
// NewNode creates a new FileNode relative to the given parent node with a payload.
|
||||
@ -292,7 +292,7 @@ func (node *FileNode) AssignDiffType(diffType DiffType) error {
|
||||
// compare the current node against the given node, returning a definitive DiffType.
|
||||
func (node *FileNode) compare(other *FileNode) DiffType {
|
||||
if node == nil && other == nil {
|
||||
return Unchanged
|
||||
return Unmodified
|
||||
}
|
||||
|
||||
if node == nil && other != nil {
|
||||
|
@ -115,7 +115,7 @@ func TestIsWhiteout(t *testing.T) {
|
||||
func TestDiffTypeFromAddedChildren(t *testing.T) {
|
||||
tree := NewFileTree()
|
||||
node, _, _ := tree.AddPath("/usr", *BlankFileChangeInfo("/usr"))
|
||||
node.Data.DiffType = Unchanged
|
||||
node.Data.DiffType = Unmodified
|
||||
|
||||
node, _, _ = tree.AddPath("/usr/bin", *BlankFileChangeInfo("/usr/bin"))
|
||||
node.Data.DiffType = Added
|
||||
@ -123,11 +123,11 @@ func TestDiffTypeFromAddedChildren(t *testing.T) {
|
||||
node, _, _ = tree.AddPath("/usr/bin2", *BlankFileChangeInfo("/usr/bin2"))
|
||||
node.Data.DiffType = Removed
|
||||
|
||||
err := tree.Root.Children["usr"].deriveDiffType(Unchanged)
|
||||
err := tree.Root.Children["usr"].deriveDiffType(Unmodified)
|
||||
checkError(t, err, "unable to setup test")
|
||||
|
||||
if tree.Root.Children["usr"].Data.DiffType != Changed {
|
||||
t.Errorf("Expected Changed but got %v", tree.Root.Children["usr"].Data.DiffType)
|
||||
if tree.Root.Children["usr"].Data.DiffType != Modified {
|
||||
t.Errorf("Expected Modified but got %v", tree.Root.Children["usr"].Data.DiffType)
|
||||
}
|
||||
}
|
||||
func TestDiffTypeFromRemovedChildren(t *testing.T) {
|
||||
@ -142,11 +142,11 @@ func TestDiffTypeFromRemovedChildren(t *testing.T) {
|
||||
node, _, _ = tree.AddPath("/usr/.wh.bin2", *info2)
|
||||
node.Data.DiffType = Removed
|
||||
|
||||
err := tree.Root.Children["usr"].deriveDiffType(Unchanged)
|
||||
err := tree.Root.Children["usr"].deriveDiffType(Unmodified)
|
||||
checkError(t, err, "unable to setup test")
|
||||
|
||||
if tree.Root.Children["usr"].Data.DiffType != Changed {
|
||||
t.Errorf("Expected Changed but got %v", tree.Root.Children["usr"].Data.DiffType)
|
||||
if tree.Root.Children["usr"].Data.DiffType != Modified {
|
||||
t.Errorf("Expected Modified but got %v", tree.Root.Children["usr"].Data.DiffType)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -334,7 +334,7 @@ func (tree *FileTree) CompareAndMark(upper *FileTree) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else if pair.lowerNode.Data.DiffType == Unchanged {
|
||||
} else if pair.lowerNode.Data.DiffType == Unmodified {
|
||||
err = pair.lowerNode.deriveDiffType(pair.tentative)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -423,7 +423,7 @@ func TestCompareWithNoChanges(t *testing.T) {
|
||||
if n.Path() == "/" {
|
||||
return nil
|
||||
}
|
||||
if (n.Data.DiffType) != Unchanged {
|
||||
if (n.Data.DiffType) != Unmodified {
|
||||
t.Errorf("Expecting node at %s to have DiffType unchanged, but had %v", n.Path(), n.Data.DiffType)
|
||||
}
|
||||
return nil
|
||||
@ -477,11 +477,11 @@ func TestCompareWithAdds(t *testing.T) {
|
||||
failedAssertions = append(failedAssertions, err)
|
||||
}
|
||||
} else if stringInSlice(p, []string{"/usr/bin", "/usr"}) {
|
||||
if err := AssertDiffType(n, Changed); err != nil {
|
||||
if err := AssertDiffType(n, Modified); err != nil {
|
||||
failedAssertions = append(failedAssertions, err)
|
||||
}
|
||||
} else {
|
||||
if err := AssertDiffType(n, Unchanged); err != nil {
|
||||
if err := AssertDiffType(n, Unmodified); err != nil {
|
||||
failedAssertions = append(failedAssertions, err)
|
||||
}
|
||||
}
|
||||
@ -588,11 +588,11 @@ func TestCompareWithChanges(t *testing.T) {
|
||||
if p == "/" {
|
||||
return nil
|
||||
} else if stringInSlice(p, changedPaths) {
|
||||
if err := AssertDiffType(n, Changed); err != nil {
|
||||
if err := AssertDiffType(n, Modified); err != nil {
|
||||
failedAssertions = append(failedAssertions, err)
|
||||
}
|
||||
} else {
|
||||
if err := AssertDiffType(n, Unchanged); err != nil {
|
||||
if err := AssertDiffType(n, Unmodified); err != nil {
|
||||
failedAssertions = append(failedAssertions, err)
|
||||
}
|
||||
}
|
||||
@ -656,11 +656,11 @@ func TestCompareWithRemoves(t *testing.T) {
|
||||
failedAssertions = append(failedAssertions, err)
|
||||
}
|
||||
} else if stringInSlice(p, []string{"/usr", "/root"}) {
|
||||
if err := AssertDiffType(n, Changed); err != nil {
|
||||
if err := AssertDiffType(n, Modified); err != nil {
|
||||
failedAssertions = append(failedAssertions, err)
|
||||
}
|
||||
} else {
|
||||
if err := AssertDiffType(n, Unchanged); err != nil {
|
||||
if err := AssertDiffType(n, Unmodified); err != nil {
|
||||
failedAssertions = append(failedAssertions, err)
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ type FileTreeController struct {
|
||||
keybindingToggleAdded []keybinding.Key
|
||||
keybindingToggleRemoved []keybinding.Key
|
||||
keybindingToggleModified []keybinding.Key
|
||||
keybindingToggleUnchanged []keybinding.Key
|
||||
keybindingToggleUnmodified []keybinding.Key
|
||||
keybindingPageDown []keybinding.Key
|
||||
keybindingPageUp []keybinding.Key
|
||||
}
|
||||
@ -80,9 +80,13 @@ func NewFileTreeController(name string, gui *gocui.Gui, tree *filetree.FileTree,
|
||||
logrus.Error(err)
|
||||
}
|
||||
|
||||
controller.keybindingToggleUnchanged, err = keybinding.ParseAll(viper.GetString("keybinding.toggle-unchanged-files"))
|
||||
// support legacy behavior first, then use default behavior
|
||||
controller.keybindingToggleUnmodified, err = keybinding.ParseAll(viper.GetString("keybinding.toggle-unchanged-files"))
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
controller.keybindingToggleUnmodified, err = keybinding.ParseAll(viper.GetString("keybinding.toggle-unmodified-files"))
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
controller.keybindingPageUp, err = keybinding.ParseAll(viper.GetString("keybinding.page-up"))
|
||||
@ -162,12 +166,12 @@ func (controller *FileTreeController) Setup(v *gocui.View, header *gocui.View) e
|
||||
}
|
||||
}
|
||||
for _, key := range controller.keybindingToggleModified {
|
||||
if err := controller.gui.SetKeybinding(controller.Name, key.Value, key.Modifier, func(*gocui.Gui, *gocui.View) error { return controller.toggleShowDiffType(filetree.Changed) }); err != nil {
|
||||
if err := controller.gui.SetKeybinding(controller.Name, key.Value, key.Modifier, func(*gocui.Gui, *gocui.View) error { return controller.toggleShowDiffType(filetree.Modified) }); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
for _, key := range controller.keybindingToggleUnchanged {
|
||||
if err := controller.gui.SetKeybinding(controller.Name, key.Value, key.Modifier, func(*gocui.Gui, *gocui.View) error { return controller.toggleShowDiffType(filetree.Unchanged) }); err != nil {
|
||||
for _, key := range controller.keybindingToggleUnmodified {
|
||||
if err := controller.gui.SetKeybinding(controller.Name, key.Value, key.Modifier, func(*gocui.Gui, *gocui.View) error { return controller.toggleShowDiffType(filetree.Unmodified) }); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@ -392,7 +396,7 @@ func (controller *FileTreeController) KeyHelp() string {
|
||||
renderStatusOption(controller.keybindingToggleCollapseAll[0].String(), "Collapse all dir", false) +
|
||||
renderStatusOption(controller.keybindingToggleAdded[0].String(), "Added", !controller.vm.HiddenDiffTypes[filetree.Added]) +
|
||||
renderStatusOption(controller.keybindingToggleRemoved[0].String(), "Removed", !controller.vm.HiddenDiffTypes[filetree.Removed]) +
|
||||
renderStatusOption(controller.keybindingToggleModified[0].String(), "Modified", !controller.vm.HiddenDiffTypes[filetree.Changed]) +
|
||||
renderStatusOption(controller.keybindingToggleUnchanged[0].String(), "Unmodified", !controller.vm.HiddenDiffTypes[filetree.Unchanged]) +
|
||||
renderStatusOption(controller.keybindingToggleModified[0].String(), "Modified", !controller.vm.HiddenDiffTypes[filetree.Modified]) +
|
||||
renderStatusOption(controller.keybindingToggleUnmodified[0].String(), "Unmodified", !controller.vm.HiddenDiffTypes[filetree.Unmodified]) +
|
||||
renderStatusOption(controller.keybindingToggleAttributes[0].String(), "Attributes", controller.vm.ShowAttributes)
|
||||
}
|
||||
|
@ -53,10 +53,10 @@ func NewFileTreeViewModel(tree *filetree.FileTree, refTrees []*filetree.FileTree
|
||||
treeViewModel.HiddenDiffTypes[filetree.Added] = true
|
||||
case "removed":
|
||||
treeViewModel.HiddenDiffTypes[filetree.Removed] = true
|
||||
case "changed":
|
||||
treeViewModel.HiddenDiffTypes[filetree.Changed] = true
|
||||
case "unchanged":
|
||||
treeViewModel.HiddenDiffTypes[filetree.Unchanged] = true
|
||||
case "modified":
|
||||
treeViewModel.HiddenDiffTypes[filetree.Modified] = true
|
||||
case "unmodified":
|
||||
treeViewModel.HiddenDiffTypes[filetree.Unmodified] = true
|
||||
default:
|
||||
utils.PrintAndExit(fmt.Sprintf("unknown diff.hide value: %s", t))
|
||||
}
|
||||
|
@ -324,7 +324,7 @@ func TestFileTreeHideAddedRemovedModified(t *testing.T) {
|
||||
vm.toggleShowDiffType(filetree.Added)
|
||||
|
||||
// hide modified files
|
||||
vm.toggleShowDiffType(filetree.Changed)
|
||||
vm.toggleShowDiffType(filetree.Modified)
|
||||
|
||||
// hide removed files
|
||||
vm.toggleShowDiffType(filetree.Removed)
|
||||
@ -350,7 +350,7 @@ func TestFileTreeHideUnmodified(t *testing.T) {
|
||||
}
|
||||
|
||||
// hide unmodified files
|
||||
vm.toggleShowDiffType(filetree.Unchanged)
|
||||
vm.toggleShowDiffType(filetree.Unmodified)
|
||||
|
||||
runTestCase(t, vm, width, height, nil)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user