From ac609bd37c0b879ce08f0fcff7b1c7ef09d37333 Mon Sep 17 00:00:00 2001 From: Ryooooooga Date: Wed, 4 Aug 2021 18:43:34 +0900 Subject: [PATCH] fix backward compatibility --- docs/Config.md | 6 +++--- pkg/commands/files.go | 6 +++--- pkg/commands/files_test.go | 16 ++++++++-------- pkg/commands/patch/patch_modifier.go | 10 ++++++---- pkg/commands/patch/patch_modifier_test.go | 2 +- pkg/config/config_default_platform.go | 8 ++++---- pkg/config/config_linux.go | 8 ++++---- pkg/config/config_windows.go | 8 ++++---- pkg/config/user_config.go | 8 ++++---- pkg/gui/lbl/state.go | 2 +- pkg/gui/line_by_line_panel.go | 12 ++---------- 11 files changed, 40 insertions(+), 46 deletions(-) diff --git a/docs/Config.md b/docs/Config.md index 355e23d02..aa68cbb64 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -64,8 +64,8 @@ git: disableForcePushing: false parseEmoji: false os: - editor: '' # see 'Configuring File Editing' section - editCommand: '{{editor}} {{filename}}' + editCommand: '' # see 'Configuring File Editing' section + editCommandTemplate: '{{editor}} {{filename}}' openCommand: '' refresher: refreshInterval: 10 # file/submodule refresh interval in seconds @@ -231,7 +231,7 @@ Lazygit will edit a file with the first set editor in the following: ```yaml os: - editor: 'vim' # as an example + editCommand: 'vim' # as an example ``` 2. \$(git config core.editor) diff --git a/pkg/commands/files.go b/pkg/commands/files.go index 1d4ad5fe6..fed1e795c 100644 --- a/pkg/commands/files.go +++ b/pkg/commands/files.go @@ -323,7 +323,7 @@ func (c *GitCommand) ResetAndClean() error { } func (c *GitCommand) EditFileCmdStr(filename string, lineNumber int) (string, error) { - editor := c.Config.GetUserConfig().OS.Editor + editor := c.Config.GetUserConfig().OS.EditCommand if editor == "" { editor = c.GetConfigValue("core.editor") @@ -353,6 +353,6 @@ func (c *GitCommand) EditFileCmdStr(filename string, lineNumber int) (string, er "line": strconv.Itoa(lineNumber), } - editTemplate := c.Config.GetUserConfig().OS.EditCommand - return utils.ResolvePlaceholderString(editTemplate, templateValues), nil + editCmdTemplate := c.Config.GetUserConfig().OS.EditCommandTemplate + return utils.ResolvePlaceholderString(editCmdTemplate, templateValues), nil } diff --git a/pkg/commands/files_test.go b/pkg/commands/files_test.go index 46ccda947..f12067e55 100644 --- a/pkg/commands/files_test.go +++ b/pkg/commands/files_test.go @@ -741,13 +741,13 @@ func TestGitCommandRemoveUntrackedFiles(t *testing.T) { // TestEditFileCmdStr is a function. func TestEditFileCmdStr(t *testing.T) { type scenario struct { - filename string - configEditor string - configEditCommand string - command func(string, ...string) *exec.Cmd - getenv func(string) string - getGitConfigValue func(string) (string, error) - test func(string, error) + filename string + configEditCommand string + configEditCommandTemplate string + command func(string, ...string) *exec.Cmd + getenv func(string) string + getGitConfigValue func(string) (string, error) + test func(string, error) } scenarios := []scenario{ @@ -912,8 +912,8 @@ func TestEditFileCmdStr(t *testing.T) { for _, s := range scenarios { gitCmd := NewDummyGitCommand() - gitCmd.Config.GetUserConfig().OS.Editor = s.configEditor gitCmd.Config.GetUserConfig().OS.EditCommand = s.configEditCommand + gitCmd.Config.GetUserConfig().OS.EditCommandTemplate = s.configEditCommandTemplate gitCmd.OSCommand.Command = s.command gitCmd.OSCommand.Getenv = s.getenv gitCmd.getGitConfigValue = s.getGitConfigValue diff --git a/pkg/commands/patch/patch_modifier.go b/pkg/commands/patch/patch_modifier.go index e5c6d061f..3ab13931b 100644 --- a/pkg/commands/patch/patch_modifier.go +++ b/pkg/commands/patch/patch_modifier.go @@ -137,17 +137,19 @@ func ModifiedPatchForLines(log *logrus.Entry, filename string, diffText string, } // I want to know, given a hunk, what line a given index is on -func (hunk *PatchHunk) LineNumberOfLine(idx int) (int, error) { +func (hunk *PatchHunk) LineNumberOfLine(idx int) int { n := idx - hunk.FirstLineIdx - 1 - if n < 0 || len(hunk.bodyLines) <= n { - return -1, fmt.Errorf("line index out of range") + if n < 0 { + n = 0 + } else if n >= len(hunk.bodyLines) { + n = len(hunk.bodyLines) - 1 } lines := hunk.bodyLines[0:n] offset := nLinesWithPrefix(lines, []string{"+", " "}) - return hunk.newStart + offset, nil + return hunk.newStart + offset } func nLinesWithPrefix(lines []string, chars []string) int { diff --git a/pkg/commands/patch/patch_modifier_test.go b/pkg/commands/patch/patch_modifier_test.go index 1f1eeb114..8b866019b 100644 --- a/pkg/commands/patch/patch_modifier_test.go +++ b/pkg/commands/patch/patch_modifier_test.go @@ -539,7 +539,7 @@ func TestLineNumberOfLine(t *testing.T) { for _, s := range scenarios { t.Run(s.testName, func(t *testing.T) { - result, _ := s.hunk.LineNumberOfLine(s.idx) + result := s.hunk.LineNumberOfLine(s.idx) if !assert.Equal(t, s.expected, result) { fmt.Println(result) } diff --git a/pkg/config/config_default_platform.go b/pkg/config/config_default_platform.go index cb6e338df..0f56297d3 100644 --- a/pkg/config/config_default_platform.go +++ b/pkg/config/config_default_platform.go @@ -5,9 +5,9 @@ package config // GetPlatformDefaultConfig gets the defaults for the platform func GetPlatformDefaultConfig() OSConfig { return OSConfig{ - Editor: ``, - EditCommand: `{{editor}} {{filename}}`, - OpenCommand: "open {{filename}}", - OpenLinkCommand: "open {{link}}", + EditCommand: ``, + EditCommandTemplate: `{{editor}} {{filename}}`, + OpenCommand: "open {{filename}}", + OpenLinkCommand: "open {{link}}", } } diff --git a/pkg/config/config_linux.go b/pkg/config/config_linux.go index 1eed335f0..fe75b7322 100644 --- a/pkg/config/config_linux.go +++ b/pkg/config/config_linux.go @@ -3,9 +3,9 @@ package config // GetPlatformDefaultConfig gets the defaults for the platform func GetPlatformDefaultConfig() OSConfig { return OSConfig{ - Editor: ``, - EditCommand: `{{editor}} {{filename}}`, - OpenCommand: `sh -c "xdg-open {{filename}} >/dev/null"`, - OpenLinkCommand: `sh -c "xdg-open {{link}} >/dev/null"`, + EditCommand: ``, + EditCommandTemplate: `{{editor}} {{filename}}`, + OpenCommand: `sh -c "xdg-open {{filename}} >/dev/null"`, + OpenLinkCommand: `sh -c "xdg-open {{link}} >/dev/null"`, } } diff --git a/pkg/config/config_windows.go b/pkg/config/config_windows.go index 1bc919848..71124808b 100644 --- a/pkg/config/config_windows.go +++ b/pkg/config/config_windows.go @@ -3,9 +3,9 @@ package config // GetPlatformDefaultConfig gets the defaults for the platform func GetPlatformDefaultConfig() OSConfig { return OSConfig{ - Editor: ``, - EditCommand: `{{editor}} {{filename}}`, - OpenCommand: `cmd /c "start "" {{filename}}"`, - OpenLinkCommand: `cmd /c "start "" {{link}}"`, + EditCommand: ``, + EditCommandTemplate: `{{editor}} {{filename}}`, + OpenCommand: `cmd /c "start "" {{filename}}"`, + OpenLinkCommand: `cmd /c "start "" {{link}}"`, } } diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index ea079948e..e7f952890 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -252,12 +252,12 @@ type KeybindingSubmodulesConfig struct { // OSConfig contains config on the level of the os type OSConfig struct { - // Editor is the command for editing a file - Editor string `yaml:"editor,omitempty"` - - // EditCommand is the command template for editing a file + // EditCommand is the command for editing a file EditCommand string `yaml:"editCommand,omitempty"` + // EditCommandTemplate is the command template for editing a file + EditCommandTemplate string `yaml:"editCommandTemplate,omitempty"` + // OpenCommand is the command for opening a file OpenCommand string `yaml:"openCommand,omitempty"` diff --git a/pkg/gui/lbl/state.go b/pkg/gui/lbl/state.go index 6adb03a54..8ae828923 100644 --- a/pkg/gui/lbl/state.go +++ b/pkg/gui/lbl/state.go @@ -167,7 +167,7 @@ func (s *State) SelectedRange() (int, int) { } } -func (s *State) CurrentLineNumber() (int, error) { +func (s *State) CurrentLineNumber() int { return s.CurrentHunk().LineNumberOfLine(s.selectedLineIdx) } diff --git a/pkg/gui/line_by_line_panel.go b/pkg/gui/line_by_line_panel.go index 6f93c36b9..8121b6ed3 100644 --- a/pkg/gui/line_by_line_panel.go +++ b/pkg/gui/line_by_line_panel.go @@ -208,11 +208,7 @@ func (gui *Gui) handleOpenFileAtLine() error { } // need to look at current index, then work out what my hunk's header information is, and see how far my line is away from the hunk header - lineNumber, err := state.CurrentLineNumber() - if err != nil { - lineNumber = 1 - } - + lineNumber := state.CurrentLineNumber() filenameWithLineNum := fmt.Sprintf("%s:%d", filename, lineNumber) if err := gui.OSCommand.OpenFile(filenameWithLineNum); err != nil { return err @@ -283,10 +279,6 @@ func (gui *Gui) handleLineByLineEdit() error { return nil } - lineNumber, err := gui.State.Panels.LineByLine.CurrentLineNumber() - if err != nil { - lineNumber = 1 - } - + lineNumber := gui.State.Panels.LineByLine.CurrentLineNumber() return gui.editFileAtLine(file.Name, lineNumber) }