Merge pull request #208 from wagoodman/config/toggle-unchanged-files

config keybinding: unchanged vs unmodified
This commit is contained in:
Alex Goodman 2019-07-21 15:40:16 -04:00 committed by GitHub
commit d8bf1ba2e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 59 additions and 53 deletions

View File

@ -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

View File

@ -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")

View File

@ -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
}

View File

@ -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)
}
}

View File

@ -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 {

View File

@ -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)
}
}

View File

@ -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

View File

@ -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)
}
}

View File

@ -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)
}

View File

@ -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))
}

View File

@ -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)
}