summaryrefslogtreecommitdiffstats
path: root/pkg/gui
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2023-03-26 14:04:09 +0200
committerStefan Haller <stefan@haller-berlin.de>2023-04-13 13:14:00 +0200
commit659d668e16c3aac63ca7c41bba06003b6b1f8023 (patch)
treec35e2369269851793d05b9d666ddb002c0b9068d /pkg/gui
parent7bbcec965bb6606c661287f3a729a1de08debd81 (diff)
Implement edit presets
Diffstat (limited to 'pkg/gui')
-rw-r--r--pkg/gui/controllers/helpers/files_helper.go29
-rw-r--r--pkg/gui/controllers/staging_controller.go2
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
}