Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9b43832

Browse filesBrowse files
authored
Merge #9601 from justinmk/tui-italic
2 parents 5e44a59 + 1083c62 commit 9b43832
Copy full SHA for 9b43832

File tree

Expand file treeCollapse file tree

1 file changed

+13
-19
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+13
-19
lines changed

‎src/nvim/tui/tui.c

Copy file name to clipboardExpand all lines: src/nvim/tui/tui.c
+13-19Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -238,15 +238,17 @@ static void terminfo_start(UI *ui)
238238
const char *vte_version_env = os_getenv("VTE_VERSION");
239239
long vtev = vte_version_env ? strtol(vte_version_env, NULL, 10) : 0;
240240
bool iterm_env = termprg && strstr(termprg, "iTerm.app");
241+
bool nsterm = (termprg && strstr(termprg, "Apple_Terminal"))
242+
|| terminfo_is_term_family(term, "nsterm");
241243
bool konsole = terminfo_is_term_family(term, "konsole")
242244
|| os_getenv("KONSOLE_PROFILE_NAME")
243245
|| os_getenv("KONSOLE_DBUS_SESSION");
244246
const char *konsolev_env = os_getenv("KONSOLE_VERSION");
245247
long konsolev = konsolev_env ? strtol(konsolev_env, NULL, 10)
246248
: (konsole ? 1 : 0);
247249

248-
patch_terminfo_bugs(data, term, colorterm, vtev, konsolev, iterm_env);
249-
augment_terminfo(data, term, colorterm, vtev, konsolev, iterm_env);
250+
patch_terminfo_bugs(data, term, colorterm, vtev, konsolev, iterm_env, nsterm);
251+
augment_terminfo(data, term, colorterm, vtev, konsolev, iterm_env, nsterm);
250252
data->can_change_scroll_region =
251253
!!unibi_get_str(data->ut, unibi_change_scroll_region);
252254
data->can_set_lr_margin =
@@ -1487,7 +1489,7 @@ static int unibi_find_ext_bool(unibi_term *ut, const char *name)
14871489
/// and several terminal emulators falsely announce incorrect terminal types.
14881490
static void patch_terminfo_bugs(TUIData *data, const char *term,
14891491
const char *colorterm, long vte_version,
1490-
long konsolev, bool iterm_env)
1492+
long konsolev, bool iterm_env, bool nsterm)
14911493
{
14921494
unibi_term *ut = data->ut;
14931495
const char *xterm_version = os_getenv("XTERM_VERSION");
@@ -1496,7 +1498,7 @@ static void patch_terminfo_bugs(TUIData *data, const char *term,
14961498
#endif
14971499
bool xterm = terminfo_is_term_family(term, "xterm")
14981500
// Treat Terminal.app as generic xterm-like, for now.
1499-
|| terminfo_is_term_family(term, "nsterm");
1501+
|| nsterm;
15001502
bool kitty = terminfo_is_term_family(term, "xterm-kitty");
15011503
bool linuxvt = terminfo_is_term_family(term, "linux");
15021504
bool bsdvt = terminfo_is_bsd_console(term);
@@ -1515,7 +1517,6 @@ static void patch_terminfo_bugs(TUIData *data, const char *term,
15151517
bool alacritty = terminfo_is_term_family(term, "alacritty");
15161518
// None of the following work over SSH; see :help TERM .
15171519
bool iterm_pretending_xterm = xterm && iterm_env;
1518-
bool konsole_pretending_xterm = xterm && konsolev;
15191520
bool gnome_pretending_xterm = xterm && colorterm
15201521
&& strstr(colorterm, "gnome-terminal");
15211522
bool mate_pretending_xterm = xterm && colorterm
@@ -1569,27 +1570,19 @@ static void patch_terminfo_bugs(TUIData *data, const char *term,
15691570
// claim to be xterm. Or they would mimic xterm properly enough to be
15701571
// treatable as xterm.
15711572

1572-
// 2017-04 terminfo.src lacks these. genuine Xterm has them, as have
1573-
// the false claimants.
1573+
// 2017-04 terminfo.src lacks these. Xterm-likes have them.
15741574
unibi_set_if_empty(ut, unibi_to_status_line, "\x1b]0;");
15751575
unibi_set_if_empty(ut, unibi_from_status_line, "\x07");
15761576
unibi_set_if_empty(ut, unibi_set_tb_margin, "\x1b[%i%p1%d;%p2%dr");
1577+
unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m");
1578+
unibi_set_if_empty(ut, unibi_exit_italics_mode, "\x1b[23m");
15771579

15781580
if (true_xterm) {
15791581
// 2017-04 terminfo.src lacks these. genuine Xterm has them.
15801582
unibi_set_if_empty(ut, unibi_set_lr_margin, "\x1b[%i%p1%d;%p2%ds");
15811583
unibi_set_if_empty(ut, unibi_set_left_margin_parm, "\x1b[%i%p1%ds");
15821584
unibi_set_if_empty(ut, unibi_set_right_margin_parm, "\x1b[%i;%p2%ds");
15831585
}
1584-
if (true_xterm
1585-
|| iterm_pretending_xterm
1586-
|| gnome_pretending_xterm
1587-
|| konsole_pretending_xterm) {
1588-
// Apple's outdated copy of terminfo.src for MacOS lacks these.
1589-
// genuine Xterm and three false claimants have them.
1590-
unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m");
1591-
unibi_set_if_empty(ut, unibi_exit_italics_mode, "\x1b[23m");
1592-
}
15931586
} else if (rxvt) {
15941587
// 2017-04 terminfo.src lacks these. Unicode rxvt has them.
15951588
unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m");
@@ -1606,11 +1599,12 @@ static void patch_terminfo_bugs(TUIData *data, const char *term,
16061599
} else if (tmux) {
16071600
unibi_set_if_empty(ut, unibi_to_status_line, "\x1b_");
16081601
unibi_set_if_empty(ut, unibi_from_status_line, "\x1b\\");
1602+
unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m");
1603+
unibi_set_if_empty(ut, unibi_exit_italics_mode, "\x1b[23m");
16091604
} else if (terminfo_is_term_family(term, "interix")) {
16101605
// 2017-04 terminfo.src lacks this.
16111606
unibi_set_if_empty(ut, unibi_carriage_return, "\x0d");
16121607
} else if (linuxvt) {
1613-
// Apple's outdated copy of terminfo.src for MacOS lacks these.
16141608
unibi_set_if_empty(ut, unibi_parm_up_cursor, "\x1b[%p1%dA");
16151609
unibi_set_if_empty(ut, unibi_parm_down_cursor, "\x1b[%p1%dB");
16161610
unibi_set_if_empty(ut, unibi_parm_right_cursor, "\x1b[%p1%dC");
@@ -1775,12 +1769,12 @@ static void patch_terminfo_bugs(TUIData *data, const char *term,
17751769
/// capabilities.
17761770
static void augment_terminfo(TUIData *data, const char *term,
17771771
const char *colorterm, long vte_version,
1778-
long konsolev, bool iterm_env)
1772+
long konsolev, bool iterm_env, bool nsterm)
17791773
{
17801774
unibi_term *ut = data->ut;
17811775
bool xterm = terminfo_is_term_family(term, "xterm")
17821776
// Treat Terminal.app as generic xterm-like, for now.
1783-
|| terminfo_is_term_family(term, "nsterm");
1777+
|| nsterm;
17841778
bool bsdvt = terminfo_is_bsd_console(term);
17851779
bool dtterm = terminfo_is_term_family(term, "dtterm");
17861780
bool rxvt = terminfo_is_term_family(term, "rxvt");

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.