git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[StGit PATCH] Invoke the correct interactive editor

From
Karl Hasselström <kha@treskal.com>
Date
Aug 28, 2008, 00:19 UTC
Message-ID
<20080828001843.5510.76140.stgit@yoghurt>

The order is supposed to be GIT_EDITOR, stgit.editor, core.editor, VISUAL, EDITOR, vi. This patch makes it so.

Signed-off-by: Karl Hasselström <kha@treskal.com>
---
 stgit/utils.py  |   22 +++++++++++++---------
 t/t3300-edit.sh |    8 ++++----
 t/test-lib.sh   |    5 ++---
 3 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/stgit/utils.py b/stgit/utils.py
index 864975d..d1409cc 100644
--- a/stgit/utils.py
+++ b/stgit/utils.py
@@ -170,17 +170,21 @@ def rename(basedir, file1, file2):
 class EditorException(StgException):
     pass
 
+def get_editor():
+    for editor in [os.environ.get('GIT_EDITOR'),
+                   config.get('stgit.editor'), # legacy
+                   config.get('core.editor'),
+                   os.environ.get('VISUAL'),
+                   os.environ.get('EDITOR'),
+                   'vi']:
+        if editor:
+            return editor
+
 def call_editor(filename):
     """Run the editor on the specified filename."""
-
-    # the editor
-    editor = config.get('stgit.editor')
-    if not editor:
-        editor = os.environ.get('EDITOR', 'vi')
-    editor += ' %s' % filename
-
-    out.start('Invoking the editor: "%s"' % editor)
-    err = os.system(editor)
+    cmd = '%s %s' % (get_editor(), filename)
+    out.start('Invoking the editor: "%s"' % cmd)
+    err = os.system(cmd)
     if err:
         raise EditorException, 'editor failed, exit code: %d' % err
     out.done()
diff --git a/t/t3300-edit.sh b/t/t3300-edit.sh
index 5c2d32e..ad3b23f 100755
--- a/t/t3300-edit.sh
+++ b/t/t3300-edit.sh
@@ -99,7 +99,7 @@ EOF
 }
 
 mkeditor vi
-test_expect_failure 'Edit commit message interactively (vi)' '
+test_expect_success 'Edit commit message interactively (vi)' '
     m=$(msg HEAD) &&
     PATH=.:$PATH stg edit p2 &&
     test "$(msg HEAD)" = "$m/vi"
@@ -114,14 +114,14 @@ test_expect_success 'Edit commit message interactively (EDITOR)' '
 '
 
 mkeditor e2
-test_expect_failure 'Edit commit message interactively (VISUAL)' '
+test_expect_success 'Edit commit message interactively (VISUAL)' '
     m=$(msg HEAD) &&
     VISUAL=./e2 EDITOR=./e1 PATH=.:$PATH stg edit p2 &&
     test "$(msg HEAD)" = "$m/e2"
 '
 
 mkeditor e3
-test_expect_failure 'Edit commit message interactively (core.editor)' '
+test_expect_success 'Edit commit message interactively (core.editor)' '
     m=$(msg HEAD) &&
     git config core.editor e3 &&
     VISUAL=./e2 EDITOR=./e1 PATH=.:$PATH stg edit p2 &&
@@ -137,7 +137,7 @@ test_expect_success 'Edit commit message interactively (stgit.editor)' '
 '
 
 mkeditor e5
-test_expect_failure 'Edit commit message interactively (GIT_EDITOR)' '
+test_expect_success 'Edit commit message interactively (GIT_EDITOR)' '
     m=$(msg HEAD) &&
     GIT_EDITOR=./e5 VISUAL=./e2 EDITOR=./e1 PATH=.:$PATH stg edit p2 &&
     test "$(msg HEAD)" = "$m/e5"
diff --git a/t/test-lib.sh b/t/test-lib.sh
index ad8da68..c1fb1b3 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -14,8 +14,8 @@ PAGER=cat
 TZ=UTC
 TERM=dumb
 export LANG LC_ALL PAGER TERM TZ
-EDITOR=:
-VISUAL=:
+unset EDITOR
+unset VISUAL
 unset GIT_EDITOR
 unset AUTHOR_DATE
 unset AUTHOR_EMAIL
@@ -42,7 +42,6 @@ GIT_MERGE_VERBOSITY=5
 export GIT_MERGE_VERBOSITY
 export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
 export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
-export EDITOR VISUAL
 GIT_TEST_CMP=${GIT_TEST_CMP:-diff -u}
 
 # Protect ourselves from common misconfiguration to export
Next: Catalin Marinas
Message 1 of 2 in “Invoke the correct interactive editor”
  1. Invoke the correct interactive editorKarl Hasselström, Aug 28, 2008
  2. Catalin MarinasAug 30, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.