diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-03-22 19:53:22 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-03-22 19:53:22 +0100 |
| commit | fc0efcc89825ef1f61ffe5744b58f7d4e16c2aae (patch) | |
| tree | 607fa0c0469e026e220c25a646cd0ec649eb7916 /ui-terminal-curses.c | |
| parent | c9a259bbe118d60558a8891e0bd701e8fb0ba91d (diff) | |
| download | vis-fc0efcc89825ef1f61ffe5744b58f7d4e16c2aae.tar.gz vis-fc0efcc89825ef1f61ffe5744b58f7d4e16c2aae.tar.xz | |
ui: try to fix job control issues with certain shells
Make sure that curses and libtermkey don't fight over
the terminal state. Also send use SIGTSTP instead of
SIGSTOP.
Previously certain shells (e.g. csh, dash) would get
stuck after the editor process was suspended for the
second time.
Not completely sure whether this is correct, but it
seems to work in my limited tests.
Diffstat (limited to 'ui-terminal-curses.c')
| -rw-r--r-- | ui-terminal-curses.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ui-terminal-curses.c b/ui-terminal-curses.c index 849c617..0d39306 100644 --- a/ui-terminal-curses.c +++ b/ui-terminal-curses.c @@ -2,6 +2,8 @@ #include <stdio.h> #include <curses.h> +#define UI_TERMKEY_FLAGS (TERMKEY_FLAG_UTF8|TERMKEY_FLAG_NOTERMIOS) + #define ui_term_backend_init ui_curses_init #define ui_term_backend_blit ui_curses_blit #define ui_term_backend_clear ui_curses_clear @@ -12,7 +14,7 @@ #define ui_term_backend_new ui_curses_new #define ui_term_backend_resume ui_curses_resume #define ui_term_backend_suspend ui_curses_suspend -#define ui_term_backend_free ui_curses_suspend +#define ui_term_backend_free ui_curses_free #define CELL_COLOR_BLACK COLOR_BLACK #define CELL_COLOR_RED COLOR_RED @@ -281,6 +283,9 @@ static void ui_curses_resume(UiTerm *term) { } static void ui_curses_suspend(UiTerm *term) { if (change_colors == 1) undo_palette(); - endwin(); } +static void ui_curses_free(UiTerm *term) { + ui_curses_suspend(term); + endwin(); +} |
