mirror of
https://github.com/tmux/tmux.git
synced 2025-09-06 03:18:17 +00:00
Merge branch 'obsd-master'
This commit is contained in:
@@ -405,7 +405,7 @@ const struct options_table_entry options_table[] = {
|
|||||||
.choices = options_table_popup_border_lines_list,
|
.choices = options_table_popup_border_lines_list,
|
||||||
.default_num = BOX_LINES_SINGLE,
|
.default_num = BOX_LINES_SINGLE,
|
||||||
.text = "Type of characters used to draw menu border lines. Some of "
|
.text = "Type of characters used to draw menu border lines. Some of "
|
||||||
"these are only supported on terminals with UTF-8 support."
|
"these are only supported on terminals with UTF-8 support."
|
||||||
},
|
},
|
||||||
|
|
||||||
{ .name = "message-limit",
|
{ .name = "message-limit",
|
||||||
@@ -425,7 +425,7 @@ const struct options_table_entry options_table[] = {
|
|||||||
.default_num = 0,
|
.default_num = 0,
|
||||||
.unit = "milliseconds",
|
.unit = "milliseconds",
|
||||||
.text = "The timeout for the prefix key if no subsequent key is "
|
.text = "The timeout for the prefix key if no subsequent key is "
|
||||||
"pressed. Zero means disabled."
|
"pressed. Zero means disabled."
|
||||||
},
|
},
|
||||||
|
|
||||||
{ .name = "prompt-history-limit",
|
{ .name = "prompt-history-limit",
|
||||||
@@ -462,7 +462,7 @@ const struct options_table_entry options_table[] = {
|
|||||||
.flags = OPTIONS_TABLE_IS_ARRAY,
|
.flags = OPTIONS_TABLE_IS_ARRAY,
|
||||||
.default_str = "xterm*:clipboard:ccolour:cstyle:focus:title,"
|
.default_str = "xterm*:clipboard:ccolour:cstyle:focus:title,"
|
||||||
"screen*:title,"
|
"screen*:title,"
|
||||||
"rxvt*:ignorefkeys",
|
"rxvt*:ignorefkeys",
|
||||||
.separator = ",",
|
.separator = ",",
|
||||||
.text = "List of terminal features, used if they cannot be "
|
.text = "List of terminal features, used if they cannot be "
|
||||||
"automatically detected."
|
"automatically detected."
|
||||||
@@ -479,6 +479,14 @@ const struct options_table_entry options_table[] = {
|
|||||||
"'User0', 'User1' and so on."
|
"'User0', 'User1' and so on."
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ .name = "variation-selector-always-wide",
|
||||||
|
.type = OPTIONS_TABLE_FLAG,
|
||||||
|
.scope = OPTIONS_TABLE_SERVER,
|
||||||
|
.default_num = 1,
|
||||||
|
.text = "If the Unicode VS16 codepoint should always be treated as a "
|
||||||
|
"wide character."
|
||||||
|
},
|
||||||
|
|
||||||
/* Session options. */
|
/* Session options. */
|
||||||
{ .name = "activity-action",
|
{ .name = "activity-action",
|
||||||
.type = OPTIONS_TABLE_CHOICE,
|
.type = OPTIONS_TABLE_CHOICE,
|
||||||
@@ -611,8 +619,8 @@ const struct options_table_entry options_table[] = {
|
|||||||
.default_num = 0,
|
.default_num = 0,
|
||||||
.unit = "milliseconds",
|
.unit = "milliseconds",
|
||||||
.text = "Time to wait for a key binding to repeat the first time the "
|
.text = "Time to wait for a key binding to repeat the first time the "
|
||||||
"key is pressed, if it is bound with the '-r' flag. "
|
"key is pressed, if it is bound with the '-r' flag. "
|
||||||
"Subsequent presses use the 'repeat-time' option."
|
"Subsequent presses use the 'repeat-time' option."
|
||||||
},
|
},
|
||||||
|
|
||||||
{ .name = "key-table",
|
{ .name = "key-table",
|
||||||
@@ -1033,11 +1041,11 @@ const struct options_table_entry options_table[] = {
|
|||||||
.type = OPTIONS_TABLE_STRING,
|
.type = OPTIONS_TABLE_STRING,
|
||||||
.scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,
|
.scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,
|
||||||
.default_str = "#[align=right]"
|
.default_str = "#[align=right]"
|
||||||
"#{t/p:top_line_time}#{?#{e|>:#{top_line_time},0}, ,}"
|
"#{t/p:top_line_time}#{?#{e|>:#{top_line_time},0}, ,}"
|
||||||
"[#{scroll_position}/#{history_size}]"
|
"[#{scroll_position}/#{history_size}]"
|
||||||
"#{?search_timed_out, (timed out),"
|
"#{?search_timed_out, (timed out),"
|
||||||
"#{?search_count, (#{search_count}"
|
"#{?search_count, (#{search_count}"
|
||||||
"#{?search_count_partial,+,} results),}}",
|
"#{?search_count_partial,+,} results),}}",
|
||||||
.text = "Format of the position indicator in copy mode."
|
.text = "Format of the position indicator in copy mode."
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1234,7 +1242,7 @@ const struct options_table_entry options_table[] = {
|
|||||||
.text = "Pane scrollbar position."
|
.text = "Pane scrollbar position."
|
||||||
},
|
},
|
||||||
|
|
||||||
{ .name = "popup-style",
|
{ .name = "popup-style",
|
||||||
.type = OPTIONS_TABLE_STRING,
|
.type = OPTIONS_TABLE_STRING,
|
||||||
.scope = OPTIONS_TABLE_WINDOW,
|
.scope = OPTIONS_TABLE_WINDOW,
|
||||||
.default_str = "default",
|
.default_str = "default",
|
||||||
@@ -1275,12 +1283,12 @@ const struct options_table_entry options_table[] = {
|
|||||||
.scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,
|
.scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,
|
||||||
.default_str = "Pane is dead ("
|
.default_str = "Pane is dead ("
|
||||||
"#{?#{!=:#{pane_dead_status},},"
|
"#{?#{!=:#{pane_dead_status},},"
|
||||||
"status #{pane_dead_status},}"
|
"status #{pane_dead_status},}"
|
||||||
"#{?#{!=:#{pane_dead_signal},},"
|
"#{?#{!=:#{pane_dead_signal},},"
|
||||||
"signal #{pane_dead_signal},}, "
|
"signal #{pane_dead_signal},}, "
|
||||||
"#{t:pane_dead_time})",
|
"#{t:pane_dead_time})",
|
||||||
.text = "Message shown after the program in a pane has exited, if "
|
.text = "Message shown after the program in a pane has exited, if "
|
||||||
"remain-on-exit is enabled."
|
"remain-on-exit is enabled."
|
||||||
},
|
},
|
||||||
|
|
||||||
{ .name = "scroll-on-clear",
|
{ .name = "scroll-on-clear",
|
||||||
|
@@ -2105,9 +2105,11 @@ screen_write_combine(struct screen_write_ctx *ctx, const struct grid_cell *gc)
|
|||||||
*/
|
*/
|
||||||
if (utf8_is_zwj(ud))
|
if (utf8_is_zwj(ud))
|
||||||
zero_width = 1;
|
zero_width = 1;
|
||||||
else if (utf8_is_vs(ud))
|
else if (utf8_is_vs(ud)) {
|
||||||
zero_width = force_wide = 1;
|
zero_width = 1;
|
||||||
else if (ud->width == 0)
|
if (options_get_number(global_options, "variation-selector-always-wide"))
|
||||||
|
force_wide = 1;
|
||||||
|
} else if (ud->width == 0)
|
||||||
zero_width = 1;
|
zero_width = 1;
|
||||||
|
|
||||||
/* Cannot combine empty character or at left. */
|
/* Cannot combine empty character or at left. */
|
||||||
|
5
tmux.1
5
tmux.1
@@ -4394,6 +4394,11 @@ For example:
|
|||||||
set -s user-keys[0] "\ee[5;30012\[ti]"
|
set -s user-keys[0] "\ee[5;30012\[ti]"
|
||||||
bind User0 resize-pane -L 3
|
bind User0 resize-pane -L 3
|
||||||
.Ed
|
.Ed
|
||||||
|
.It Xo Ic variation-selector-always-wide
|
||||||
|
.Op Ic on | off
|
||||||
|
.Xc
|
||||||
|
Always treat Unicode variation selector 16 as marking a wide character.
|
||||||
|
This is a feature of some terminals as part of their Unicode 14 support.
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
Available session options are:
|
Available session options are:
|
||||||
|
42
tty.c
42
tty.c
@@ -2882,15 +2882,23 @@ tty_check_fg(struct tty *tty, struct colour_palette *palette,
|
|||||||
/* Is this a 256-colour colour? */
|
/* Is this a 256-colour colour? */
|
||||||
if (gc->fg & COLOUR_FLAG_256) {
|
if (gc->fg & COLOUR_FLAG_256) {
|
||||||
/* And not a 256 colour mode? */
|
/* And not a 256 colour mode? */
|
||||||
if (colours < 256) {
|
if (colours >= 256)
|
||||||
gc->fg = colour_256to16(gc->fg);
|
return;
|
||||||
if (gc->fg & 8) {
|
gc->fg = colour_256to16(gc->fg);
|
||||||
gc->fg &= 7;
|
if (~gc->fg & 8)
|
||||||
if (colours >= 16)
|
return;
|
||||||
gc->fg += 90;
|
gc->fg &= 7;
|
||||||
else if (gc->fg == 0 && gc->bg == 0)
|
if (colours >= 16)
|
||||||
gc->fg = 7;
|
gc->fg += 90;
|
||||||
}
|
else {
|
||||||
|
/*
|
||||||
|
* Mapping to black-on-black or white-on-white is not
|
||||||
|
* much use, so change the foreground.
|
||||||
|
*/
|
||||||
|
if (gc->fg == 0 && gc->bg == 0)
|
||||||
|
gc->fg = 7;
|
||||||
|
else if (gc->fg == 7 && gc->bg == 7)
|
||||||
|
gc->fg = 0;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2938,14 +2946,14 @@ tty_check_bg(struct tty *tty, struct colour_palette *palette,
|
|||||||
* palette. Bold background doesn't exist portably, so just
|
* palette. Bold background doesn't exist portably, so just
|
||||||
* discard the bold bit if set.
|
* discard the bold bit if set.
|
||||||
*/
|
*/
|
||||||
if (colours < 256) {
|
if (colours >= 256)
|
||||||
gc->bg = colour_256to16(gc->bg);
|
return;
|
||||||
if (gc->bg & 8) {
|
gc->bg = colour_256to16(gc->bg);
|
||||||
gc->bg &= 7;
|
if (~gc->bg & 8)
|
||||||
if (colours >= 16)
|
return;
|
||||||
gc->bg += 90;
|
gc->bg &= 7;
|
||||||
}
|
if (colours >= 16)
|
||||||
}
|
gc->bg += 90;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user