From 3129e60a73522341d14b247839159d5f2c668c04 Mon Sep 17 00:00:00 2001 From: plgruener Date: Mon, 21 Jun 2021 20:08:27 +0800 Subject: [PATCH] text editor selection: follow unix defacto standards (#356) Currently, `tea` only supports the $EDITOR env var to open the user's preferred editor (used for reviewing pull requests). Standard \*nix practice is, however, to check for $VISUAL first and only then use $EDITOR as fallback. This is also done by Git itself, see man git-var(1). (Actually, the order there is $GIT_EDITOR > core.editor > $VISUAL > $EDITOR > vi) Co-authored-by: plgruener Reviewed-on: https://gitea.com/gitea/tea/pulls/356 Reviewed-by: Norwin Reviewed-by: 6543 <6543@obermui.de> Co-authored-by: plgruener Co-committed-by: plgruener --- modules/interact/pull_review.go | 2 +- modules/task/pull_review.go | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/interact/pull_review.go b/modules/interact/pull_review.go index 7a190ef..1052dcd 100644 --- a/modules/interact/pull_review.go +++ b/modules/interact/pull_review.go @@ -63,7 +63,7 @@ func ReviewPull(ctx *context.TeaContext, idx int64) error { return task.CreatePullReview(ctx, idx, state, comment, codeComments) } -// DoDiffReview (1) fetches & saves diff in tempfile, (2) starts $EDITOR to comment on diff, +// DoDiffReview (1) fetches & saves diff in tempfile, (2) starts $VISUAL or $EDITOR to comment on diff, // (3) parses resulting file into code comments. func DoDiffReview(ctx *context.TeaContext, idx int64) ([]gitea.CreatePullReviewComment, error) { tmpFile, err := task.SavePullDiff(ctx, idx) diff --git a/modules/task/pull_review.go b/modules/task/pull_review.go index 1cef147..ff3bd08 100644 --- a/modules/task/pull_review.go +++ b/modules/task/pull_review.go @@ -107,10 +107,13 @@ func ParseDiffComments(diffFile string) ([]gitea.CreatePullReviewComment, error) // OpenFileInEditor opens filename in a text editor, and blocks until the editor terminates. func OpenFileInEditor(filename string) error { - editor := os.Getenv("EDITOR") + editor := os.Getenv("VISUAL") if editor == "" { - fmt.Println("No $EDITOR env is set, defaulting to vim") - editor = "vim" + editor = os.Getenv("EDITOR") + if editor == "" { + fmt.Println("No $VISUAL or $EDITOR env is set, defaulting to vim") + editor = "vi" + } } // Get the full executable path for the editor.