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

Re: [RFC] Indicate that Git waits for user input via editor

From
Stefan Beller <sbeller@google.com>
Date
Nov 16, 2017, 00:06 UTC
Message-ID
<CAGZ79kZbm8SGY4rXKZHV82E-HX9qbQ4iyCbMgJEBFQf4fj3u=Q@mail.gmail.com>
In-Reply-To
<xmqq8tf7yxzn.fsf@gitster.mtv.corp.google.com>
On Wed, Nov 15, 2017 at 2:32 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 34 quoted lines
> Lars Schneider <larsxschneider@gmail.com> writes:
>
>> However, if you configure an editor that runs outside your terminal window then
>> you might run into the following problem:
>> Git opens the editor but the editor is the background or on another screen and
>> consequently you don't see the editor. You only see the Git command line
>> interface which appears to hang.
>>
>> I wonder if would make sense to print "Opening editor for user input..." or
>> something to the screen to make the user aware of the action. Does this sound
>> sensible to you? Am I missing an existing solution to this problem?
>
> My knee-jerk reaction was: for such a user who has EDITOR set to a
> program that pops under, wouldn't any program, not just Git, that
> uses the editor to open a file for editing/viewing look broken?
> Would we care if we are called "broken" by such a clueless user who
> cannot tell a (non-)broken caller of an editor and a broken editor?
>
> But that is true only when the user does realize/expect that the
> program s/he is running _will_ open an editor at the point of the
> workflow.  If s/he types "git merge" or "git rebase -i @{u}", for
> example, it is true that the world would be a better place if s/he
> knows that would ask a file to be edited with an editor, but it is
> unrealisic to expect that everybody knows how to operate these
> commands.  Everybody is a newbie at least once.
>
> I wonder if we can do something like
>
>         git_spawn_editor()
>         {
>                 const char *EL = "\033[K"; /* Erase in Line */
>
>                 /* notice the lack of terminating LF */
>                 fprintf(stderr, "Launching your editor...");
"It takes quite some time to launch this special Git Editor"

As Lars pointed out, the editor may be launched in the background, that the user would not know, but they might expect a thing to pop up as a modal dialog as is always with UIs.

So despite it being technically wrong at this point in time, I would phrase it in past tense or in a way that indicates that the user needs to take action already.

The "Launching..." sounds as if I need to wait for an event to occur.
Show 13 quoted lines
>                 fflush(stderr);
>
>                 if (!run_command(... spawn the editor ...)) {
>                         /* Success! - go back and erase the whole line */
>                         fprintf(stderr, "\r%s", EL);
>                 } else {
>                         fprintf(stderr, "failed (%s)\n", strerror(errno));
>                 }
>                 fflush(stderr);
>         }
>
> to tentatively give a message without permanently wasting the
> vertical space.
Previous: Junio C HamanoNext: Junio C Hamano
Message 6 of 16 in “[RFC] Indicate that Git waits for user input via editor”
  1. Lars SchneiderNov 15, 2017
  2. Stefan BellerNov 15, 2017
  3. Lars SchneiderNov 15, 2017
  4. Stefan BellerNov 15, 2017
  5. Junio C HamanoNov 15, 2017
  6. Stefan BellerNov 16, 2017
  7. Junio C HamanoNov 16, 2017
  8. Stefan BellerNov 16, 2017
  9. Junio C HamanoNov 16, 2017
  10. launch_editor(): indicate that Git waits for user inputJunio C Hamano, Nov 16, 2017
  11. Lars SchneiderNov 16, 2017
  12. Junio C HamanoNov 16, 2017
  13. Lars SchneiderNov 16, 2017
  14. Junio C HamanoNov 17, 2017
  15. Kaartic SivaraamNov 18, 2017
  16. Junio C HamanoNov 19, 2017

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.