diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2023-03-26 14:04:09 +0200 |
---|---|---|
committer | Stefan Haller <stefan@haller-berlin.de> | 2023-04-13 13:14:00 +0200 |
commit | 659d668e16c3aac63ca7c41bba06003b6b1f8023 (patch) | |
tree | c35e2369269851793d05b9d666ddb002c0b9068d /pkg/gui | |
parent | 7bbcec965bb6606c661287f3a729a1de08debd81 (diff) |
Implement edit presets
Diffstat (limited to 'pkg/gui')
-rw-r--r-- | pkg/gui/controllers/helpers/files_helper.go | 29 | ||||
-rw-r--r-- | pkg/gui/controllers/staging_controller.go | 2 |
2 files changed, 22 insertions, 9 deletions
diff --git a/pkg/gui/controllers/helpers/files_helper.go b/pkg/gui/controllers/helpers/files_helper.go index 72be6e4e5..29aa19ce1 100644 --- a/pkg/gui/controllers/helpers/files_helper.go +++ b/pkg/gui/controllers/helpers/files_helper.go @@ -34,19 +34,32 @@ func NewFilesHelper( var _ IFilesHelper = &FilesHelper{} func (self *FilesHelper) EditFile(filename string) error { - return self.EditFileAtLine(filename, 1) + cmdStr, editInTerminal := self.git.File.GetEditCmdStr(filename) + return self.callEditor(cmdStr, editInTerminal) } func (self *FilesHelper) EditFileAtLine(filename string, lineNumber int) error { - cmdStr, err := self.git.File.GetEditCmdStr(filename, lineNumber) - if err != nil { - return self.c.Error(err) + cmdStr, editInTerminal := self.git.File.GetEditAtLineCmdStr(filename, lineNumber) + return self.callEditor(cmdStr, editInTerminal) +} + +func (self *FilesHelper) EditFileAtLineAndWait(filename string, lineNumber int) error { + cmdStr := self.git.File.GetEditAtLineAndWaitCmdStr(filename, lineNumber) + + // Always suspend, regardless of the value of the editInTerminal config, + // since we want to prevent interacting with the UI until the editor + // returns, even if the editor doesn't use the terminal + return self.callEditor(cmdStr, true) +} + +func (self *FilesHelper) callEditor(cmdStr string, editInTerminal bool) error { + if editInTerminal { + return self.c.RunSubprocessAndRefresh( + self.os.Cmd.NewShell(cmdStr), + ) } - self.c.LogAction(self.c.Tr.Actions.EditFile) - return self.c.RunSubprocessAndRefresh( - self.os.Cmd.NewShell(cmdStr), - ) + return self.os.Cmd.NewShell(cmdStr).Run() } func (self *FilesHelper) OpenFile(filename string) error { diff --git a/pkg/gui/controllers/staging_controller.go b/pkg/gui/controllers/staging_controller.go index 1d8a24b95..07e39ea1f 100644 --- a/pkg/gui/controllers/staging_controller.go +++ b/pkg/gui/controllers/staging_controller.go @@ -247,7 +247,7 @@ func (self *StagingController) editHunk() error { lineOffset := 3 lineIdxInHunk := state.GetSelectedLineIdx() - hunkStartIdx - if err := self.helpers.Files.EditFileAtLine(patchFilepath, lineIdxInHunk+lineOffset); err != nil { + if err := self.helpers.Files.EditFileAtLineAndWait(patchFilepath, lineIdxInHunk+lineOffset); err != nil { return err } |