From 866f4b9f0efa13dfb4b3ab995ab5595a3ed29e2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Marku=C5=A1i=C4=87?= Date: Tue, 15 Feb 2022 19:34:36 +0100 Subject: [PATCH] Support line offset for most common editors by default --- pkg/commands/git_commands/file.go | 10 ++++++++++ pkg/commands/git_commands/file_test.go | 11 ++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/pkg/commands/git_commands/file.go b/pkg/commands/git_commands/file.go index 026d79cb0..353a8dcdc 100644 --- a/pkg/commands/git_commands/file.go +++ b/pkg/commands/git_commands/file.go @@ -58,5 +58,15 @@ func (self *FileCommands) GetEditCmdStr(filename string, lineNumber int) (string } editCmdTemplate := self.UserConfig.OS.EditCommandTemplate + if editCmdTemplate == "{{editor}} {{filename}}" { + switch editor { + case "emacs", "nano", "vi", "vim": + editCmdTemplate = "{{editor}} +{{line}} {{filename}}" + case "subl": + editCmdTemplate = "{{editor}} {{filename}}:{{line}}" + case "code": + editCmdTemplate = "{{editor}} --goto {{filename}}:{{line}}" + } + } return utils.ResolvePlaceholderString(editCmdTemplate, templateValues), nil } diff --git a/pkg/commands/git_commands/file_test.go b/pkg/commands/git_commands/file_test.go index a26699b3e..61482054b 100644 --- a/pkg/commands/git_commands/file_test.go +++ b/pkg/commands/git_commands/file_test.go @@ -47,7 +47,7 @@ func TestEditFileCmdStr(t *testing.T) { gitConfigMockResponses: nil, test: func(cmdStr string, err error) { assert.NoError(t, err) - assert.Equal(t, `nano "test"`, cmdStr) + assert.Equal(t, `nano +1 "test"`, cmdStr) }, }, { @@ -61,7 +61,7 @@ func TestEditFileCmdStr(t *testing.T) { gitConfigMockResponses: map[string]string{"core.editor": "nano"}, test: func(cmdStr string, err error) { assert.NoError(t, err) - assert.Equal(t, `nano "test"`, cmdStr) + assert.Equal(t, `nano +1 "test"`, cmdStr) }, }, { @@ -79,6 +79,7 @@ func TestEditFileCmdStr(t *testing.T) { gitConfigMockResponses: nil, test: func(cmdStr string, err error) { assert.NoError(t, err) + assert.Equal(t, `nano +1 "test"`, cmdStr) }, }, { @@ -96,7 +97,7 @@ func TestEditFileCmdStr(t *testing.T) { gitConfigMockResponses: nil, test: func(cmdStr string, err error) { assert.NoError(t, err) - assert.Equal(t, `emacs "test"`, cmdStr) + assert.Equal(t, `emacs +1 "test"`, cmdStr) }, }, { @@ -111,7 +112,7 @@ func TestEditFileCmdStr(t *testing.T) { gitConfigMockResponses: nil, test: func(cmdStr string, err error) { assert.NoError(t, err) - assert.Equal(t, `vi "test"`, cmdStr) + assert.Equal(t, `vi +1 "test"`, cmdStr) }, }, { @@ -126,7 +127,7 @@ func TestEditFileCmdStr(t *testing.T) { gitConfigMockResponses: nil, test: func(cmdStr string, err error) { assert.NoError(t, err) - assert.Equal(t, `vi "file/with space"`, cmdStr) + assert.Equal(t, `vi +1 "file/with space"`, cmdStr) }, }, {