Skip to content

Commit

Permalink
Merge branch 'un-revert-editor-save-and-reset'
Browse files Browse the repository at this point in the history
A fix for calling `vim` in Windows Terminal caused a regression and was
reverted. We partially un-revert this, to get the fix again.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho authored and mjcheetham committed Jul 29, 2024
2 parents cd0fc4f + a24d216 commit bc3c131
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions editor.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "strvec.h"
#include "run-command.h"
#include "sigchain.h"
#include "compat/terminal.h"

#ifndef DEFAULT_EDITOR
#define DEFAULT_EDITOR "vi"
Expand Down Expand Up @@ -62,6 +63,7 @@ static int launch_specified_editor(const char *editor, const char *path,
return error("Terminal is dumb, but EDITOR unset");

if (strcmp(editor, ":")) {
int save_and_restore_term = !strcmp(editor, "vi") || !strcmp(editor, "vim");
struct strbuf realpath = STRBUF_INIT;
struct child_process p = CHILD_PROCESS_INIT;
int ret, sig;
Expand Down Expand Up @@ -90,14 +92,20 @@ static int launch_specified_editor(const char *editor, const char *path,
strvec_pushv(&p.env, (const char **)env);
p.use_shell = 1;
p.trace2_child_class = "editor";
if (save_and_restore_term)
save_and_restore_term = !save_term(1);
if (start_command(&p) < 0) {
if (save_and_restore_term)
restore_term();
strbuf_release(&realpath);
return error("unable to start editor '%s'", editor);
}

sigchain_push(SIGINT, SIG_IGN);
sigchain_push(SIGQUIT, SIG_IGN);
ret = finish_command(&p);
if (save_and_restore_term)
restore_term();
strbuf_release(&realpath);
sig = ret - 128;
sigchain_pop(SIGINT);
Expand Down

0 comments on commit bc3c131

Please sign in to comment.