mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	Edit command as user OS config option
This commit is contained in:
		
				
					committed by
					
						 Jesse Duffield
						Jesse Duffield
					
				
			
			
				
	
			
			
			
						parent
						
							cb78cf7de4
						
					
				
				
					commit
					60468d2e17
				
			| @@ -318,7 +318,11 @@ func (c *GitCommand) ResetAndClean() error { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (c *GitCommand) EditFileCmdStr(filename string) (string, error) { | func (c *GitCommand) EditFileCmdStr(filename string) (string, error) { | ||||||
| 	editor := c.GetConfigValue("core.editor") | 	editor := c.Config.GetUserConfig().OS.EditCommand | ||||||
|  |  | ||||||
|  | 	if editor == "" { | ||||||
|  | 		editor = c.GetConfigValue("core.editor") | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	if editor == "" { | 	if editor == "" { | ||||||
| 		editor = c.OSCommand.Getenv("GIT_EDITOR") | 		editor = c.OSCommand.Getenv("GIT_EDITOR") | ||||||
|   | |||||||
| @@ -720,6 +720,7 @@ func TestGitCommandRemoveUntrackedFiles(t *testing.T) { | |||||||
| func TestEditFileCmdStr(t *testing.T) { | func TestEditFileCmdStr(t *testing.T) { | ||||||
| 	type scenario struct { | 	type scenario struct { | ||||||
| 		filename          string | 		filename          string | ||||||
|  | 		configEditCommand string | ||||||
| 		command           func(string, ...string) *exec.Cmd | 		command           func(string, ...string) *exec.Cmd | ||||||
| 		getenv            func(string) string | 		getenv            func(string) string | ||||||
| 		getGitConfigValue func(string) (string, error) | 		getGitConfigValue func(string) (string, error) | ||||||
| @@ -729,6 +730,7 @@ func TestEditFileCmdStr(t *testing.T) { | |||||||
| 	scenarios := []scenario{ | 	scenarios := []scenario{ | ||||||
| 		{ | 		{ | ||||||
| 			"test", | 			"test", | ||||||
|  | 			"", | ||||||
| 			func(name string, arg ...string) *exec.Cmd { | 			func(name string, arg ...string) *exec.Cmd { | ||||||
| 				return secureexec.Command("exit", "1") | 				return secureexec.Command("exit", "1") | ||||||
| 			}, | 			}, | ||||||
| @@ -744,6 +746,25 @@ func TestEditFileCmdStr(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"test", | 			"test", | ||||||
|  | 			"nano", | ||||||
|  | 			func(name string, args ...string) *exec.Cmd { | ||||||
|  | 				assert.Equal(t, "which", name) | ||||||
|  | 				return secureexec.Command("echo") | ||||||
|  | 			}, | ||||||
|  | 			func(env string) string { | ||||||
|  | 				return "" | ||||||
|  | 			}, | ||||||
|  | 			func(cf string) (string, error) { | ||||||
|  | 				return "", nil | ||||||
|  | 			}, | ||||||
|  | 			func(cmdStr string, err error) { | ||||||
|  | 				assert.NoError(t, err) | ||||||
|  | 				assert.Equal(t, "nano \"test\"", cmdStr) | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"test", | ||||||
|  | 			"", | ||||||
| 			func(name string, arg ...string) *exec.Cmd { | 			func(name string, arg ...string) *exec.Cmd { | ||||||
| 				assert.Equal(t, "which", name) | 				assert.Equal(t, "which", name) | ||||||
| 				return secureexec.Command("exit", "1") | 				return secureexec.Command("exit", "1") | ||||||
| @@ -761,6 +782,7 @@ func TestEditFileCmdStr(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"test", | 			"test", | ||||||
|  | 			"", | ||||||
| 			func(name string, arg ...string) *exec.Cmd { | 			func(name string, arg ...string) *exec.Cmd { | ||||||
| 				assert.Equal(t, "which", name) | 				assert.Equal(t, "which", name) | ||||||
| 				return secureexec.Command("exit", "1") | 				return secureexec.Command("exit", "1") | ||||||
| @@ -781,6 +803,7 @@ func TestEditFileCmdStr(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"test", | 			"test", | ||||||
|  | 			"", | ||||||
| 			func(name string, arg ...string) *exec.Cmd { | 			func(name string, arg ...string) *exec.Cmd { | ||||||
| 				assert.Equal(t, "which", name) | 				assert.Equal(t, "which", name) | ||||||
| 				return secureexec.Command("exit", "1") | 				return secureexec.Command("exit", "1") | ||||||
| @@ -802,6 +825,7 @@ func TestEditFileCmdStr(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"test", | 			"test", | ||||||
|  | 			"", | ||||||
| 			func(name string, arg ...string) *exec.Cmd { | 			func(name string, arg ...string) *exec.Cmd { | ||||||
| 				assert.Equal(t, "which", name) | 				assert.Equal(t, "which", name) | ||||||
| 				return secureexec.Command("echo") | 				return secureexec.Command("echo") | ||||||
| @@ -819,6 +843,7 @@ func TestEditFileCmdStr(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"file/with space", | 			"file/with space", | ||||||
|  | 			"", | ||||||
| 			func(name string, args ...string) *exec.Cmd { | 			func(name string, args ...string) *exec.Cmd { | ||||||
| 				assert.Equal(t, "which", name) | 				assert.Equal(t, "which", name) | ||||||
| 				return secureexec.Command("echo") | 				return secureexec.Command("echo") | ||||||
| @@ -838,6 +863,7 @@ func TestEditFileCmdStr(t *testing.T) { | |||||||
|  |  | ||||||
| 	for _, s := range scenarios { | 	for _, s := range scenarios { | ||||||
| 		gitCmd := NewDummyGitCommand() | 		gitCmd := NewDummyGitCommand() | ||||||
|  | 		gitCmd.Config.GetUserConfig().OS.EditCommand = s.configEditCommand | ||||||
| 		gitCmd.OSCommand.Command = s.command | 		gitCmd.OSCommand.Command = s.command | ||||||
| 		gitCmd.OSCommand.Getenv = s.getenv | 		gitCmd.OSCommand.Getenv = s.getenv | ||||||
| 		gitCmd.getGitConfigValue = s.getGitConfigValue | 		gitCmd.getGitConfigValue = s.getGitConfigValue | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ package config | |||||||
| // GetPlatformDefaultConfig gets the defaults for the platform | // GetPlatformDefaultConfig gets the defaults for the platform | ||||||
| func GetPlatformDefaultConfig() OSConfig { | func GetPlatformDefaultConfig() OSConfig { | ||||||
| 	return OSConfig{ | 	return OSConfig{ | ||||||
|  | 		EditCommand:     ``, | ||||||
| 		OpenCommand:     "open {{filename}}", | 		OpenCommand:     "open {{filename}}", | ||||||
| 		OpenLinkCommand: "open {{link}}", | 		OpenLinkCommand: "open {{link}}", | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ package config | |||||||
| // GetPlatformDefaultConfig gets the defaults for the platform | // GetPlatformDefaultConfig gets the defaults for the platform | ||||||
| func GetPlatformDefaultConfig() OSConfig { | func GetPlatformDefaultConfig() OSConfig { | ||||||
| 	return OSConfig{ | 	return OSConfig{ | ||||||
|  | 		EditCommand:     ``, | ||||||
| 		OpenCommand:     `sh -c "xdg-open {{filename}} >/dev/null"`, | 		OpenCommand:     `sh -c "xdg-open {{filename}} >/dev/null"`, | ||||||
| 		OpenLinkCommand: `sh -c "xdg-open {{link}} >/dev/null"`, | 		OpenLinkCommand: `sh -c "xdg-open {{link}} >/dev/null"`, | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ package config | |||||||
| // GetPlatformDefaultConfig gets the defaults for the platform | // GetPlatformDefaultConfig gets the defaults for the platform | ||||||
| func GetPlatformDefaultConfig() OSConfig { | func GetPlatformDefaultConfig() OSConfig { | ||||||
| 	return OSConfig{ | 	return OSConfig{ | ||||||
|  | 		EditCommand:     ``, | ||||||
| 		OpenCommand:     `cmd /c "start "" {{filename}}"`, | 		OpenCommand:     `cmd /c "start "" {{filename}}"`, | ||||||
| 		OpenLinkCommand: `cmd /c "start "" {{link}}"`, | 		OpenLinkCommand: `cmd /c "start "" {{link}}"`, | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -248,6 +248,9 @@ type KeybindingSubmodulesConfig struct { | |||||||
|  |  | ||||||
| // OSConfig contains config on the level of the os | // OSConfig contains config on the level of the os | ||||||
| type OSConfig struct { | type OSConfig struct { | ||||||
|  | 	// EditCommand is the command for editing a file | ||||||
|  | 	EditCommand string `yaml:"editCommand,omitempty"` | ||||||
|  |  | ||||||
| 	// OpenCommand is the command for opening a file | 	// OpenCommand is the command for opening a file | ||||||
| 	OpenCommand string `yaml:"openCommand,omitempty"` | 	OpenCommand string `yaml:"openCommand,omitempty"` | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user