[arch-commits] Commit in tmux/trunk (3 files)

Jan Steffens heftig at archlinux.org
Tue Sep 15 21:34:50 UTC 2015


    Date: Tuesday, September 15, 2015 @ 23:34:49
  Author: heftig
Revision: 140335

Fix standout coming out as italics on xterm with ncurses 6

Added:
  tmux/trunk/default-TERM-tmux.patch
  tmux/trunk/ncurses6-xterm-standout.patch
Modified:
  tmux/trunk/PKGBUILD

-------------------------------+
 PKGBUILD                      |   11 ++
 default-TERM-tmux.patch       |   25 ++++++
 ncurses6-xterm-standout.patch |  157 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 192 insertions(+), 1 deletion(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-09-15 15:37:04 UTC (rev 140334)
+++ PKGBUILD	2015-09-15 21:34:49 UTC (rev 140335)
@@ -5,7 +5,7 @@
 
 pkgname=tmux
 pkgver=2.0
-pkgrel=2
+pkgrel=3
 pkgdesc='A terminal multiplexer'
 url='http://tmux.github.io/'
 arch=('i686' 'x86_64')
@@ -12,10 +12,19 @@
 license=('BSD')
 depends=('ncurses' 'libevent' 'libutempter')
 source=(https://github.com/tmux/tmux/releases/download/$pkgver/tmux-$pkgver.tar.gz
+	ncurses6-xterm-standout.patch default-TERM-tmux.patch
 	LICENSE)
 md5sums=('9fb6b443392c3978da5d599f1e814eaa'
+         '70347df93ed1922d6718d91491a7d9b4'
+         'a7b0b43c1725d23cc5540f9adfd7ddf4'
          '71601bc37fa44e4395580b321963018e')
 
+prepare() {
+	cd "$srcdir/$pkgname-${pkgver/_/}"
+	patch -Np1 -i ../ncurses6-xterm-standout.patch
+	patch -Np1 -i ../default-TERM-tmux.patch
+}
+
 build() {
 	cd "$srcdir/$pkgname-${pkgver/_/}"
 	./configure --prefix=/usr

Added: default-TERM-tmux.patch
===================================================================
--- default-TERM-tmux.patch	                        (rev 0)
+++ default-TERM-tmux.patch	2015-09-15 21:34:49 UTC (rev 140335)
@@ -0,0 +1,25 @@
+From c6c789f045182a95908d5013af190dfb2111043b Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
+Date: Tue, 15 Sep 2015 23:20:15 +0200
+Subject: [PATCH] Use TERM=tmux by default, since we have it
+
+---
+ options-table.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/options-table.c b/options-table.c
+index c99937d..c25b0fd 100644
+--- a/options-table.c
++++ b/options-table.c
+@@ -62,7 +62,7 @@ const struct options_table_entry server_options_table[] = {
+ 
+ 	{ .name = "default-terminal",
+ 	  .type = OPTIONS_TABLE_STRING,
+-	  .default_str = "screen"
++	  .default_str = "tmux"
+ 	},
+ 
+ 	{ .name = "escape-time",
+-- 
+2.5.2
+

Added: ncurses6-xterm-standout.patch
===================================================================
--- ncurses6-xterm-standout.patch	                        (rev 0)
+++ ncurses6-xterm-standout.patch	2015-09-15 21:34:49 UTC (rev 140335)
@@ -0,0 +1,157 @@
+From 7382ba82c5b366be84ca55c7842426bcf3d1f521 Mon Sep 17 00:00:00 2001
+From: nicm <nicm>
+Date: Wed, 29 Apr 2015 15:59:08 +0000
+Subject: [PATCH] If default-terminal is set to "screen" or "screen-*", emulate
+ screen's historical (incorrect) behaviour for SGR 3 and send smso (standout).
+ Previously, we would send sitm (italics) if the terminal outside had it and
+ smso otherwise. This was acceptably until recently because xterm's terminfo
+ entry lacked sitm, so most users got smso.
+
+People who want italics should set default-terminal to the forthcoming
+"tmux" entry (and be prepared to deal with it being missing on older
+hosts).
+
+As a side-effect this changes default-terminal to be a server rather
+than a session option.
+
+suggested by and ok naddy
+---
+ options-table.c | 10 +++++-----
+ server-fn.c     |  2 +-
+ tmux.1          | 25 +++++++++++++------------
+ tty.c           | 24 ++++++++++++++++++------
+ 4 files changed, 37 insertions(+), 24 deletions(-)
+
+diff --git a/options-table.c b/options-table.c
+index 5e21c69..089a9b8 100644
+--- a/options-table.c
++++ b/options-table.c
+@@ -61,6 +61,11 @@ const struct options_table_entry server_options_table[] = {
+ 	  .default_num = 20
+ 	},
+ 
++	{ .name = "default-terminal",
++	  .type = OPTIONS_TABLE_STRING,
++	  .default_str = "screen"
++	},
++
+ 	{ .name = "escape-time",
+ 	  .type = OPTIONS_TABLE_NUMBER,
+ 	  .minimum = 0,
+@@ -143,11 +148,6 @@ const struct options_table_entry session_options_table[] = {
+ 	  .default_str = _PATH_BSHELL
+ 	},
+ 
+-	{ .name = "default-terminal",
+-	  .type = OPTIONS_TABLE_STRING,
+-	  .default_str = "screen"
+-	},
+-
+ 	{ .name = "destroy-unattached",
+ 	  .type = OPTIONS_TABLE_FLAG,
+ 	  .default_num = 0
+diff --git a/server-fn.c b/server-fn.c
+index 85067a8..0e6e4d4 100644
+--- a/server-fn.c
++++ b/server-fn.c
+@@ -36,7 +36,7 @@ server_fill_environ(struct session *s, struct environ *env)
+ 	long	pid;
+ 
+ 	if (s != NULL) {
+-		term = options_get_string(&s->options, "default-terminal");
++		term = options_get_string(&global_options, "default-terminal");
+ 		environ_set(env, "TERM", term);
+ 
+ 		idx = s->id;
+diff --git a/tmux.1 b/tmux.1
+index 5bf7782..a7f5f3e 100644
+--- a/tmux.1
++++ b/tmux.1
+@@ -2266,6 +2266,19 @@ Available server options are:
+ Set the number of buffers; as new buffers are added to the top of the stack,
+ old ones are removed from the bottom if necessary to maintain this maximum
+ length.
++.It Ic default-terminal Ar terminal
++Set the default terminal for new windows created in this session - the
++default value of the
++.Ev TERM
++environment variable.
++For
++.Nm
++to work correctly, this
++.Em must
++be set to
++.Ql screen ,
++.Ql tmux
++or a derivative of them.
+ .It Ic escape-time Ar time
+ Set the time in milliseconds for which
+ .Nm
+@@ -2405,18 +2418,6 @@ or
+ This option should be configured when
+ .Nm
+ is used as a login shell.
+-.It Ic default-terminal Ar terminal
+-Set the default terminal for new windows created in this session - the
+-default value of the
+-.Ev TERM
+-environment variable.
+-For
+-.Nm
+-to work correctly, this
+-.Em must
+-be set to
+-.Ql screen
+-or a derivative of it.
+ .It Xo Ic destroy-unattached
+ .Op Ic on | off
+ .Xc
+diff --git a/tty.c b/tty.c
+index ee52d03..f6db8e2 100644
+--- a/tty.c
++++ b/tty.c
+@@ -34,6 +34,7 @@
+ void	tty_read_callback(struct bufferevent *, void *);
+ void	tty_error_callback(struct bufferevent *, short, void *);
+ 
++void	tty_set_italics(struct tty *);
+ int	tty_try_256(struct tty *, u_char, const char *);
+ 
+ void	tty_colours(struct tty *, const struct grid_cell *);
+@@ -457,6 +458,21 @@ tty_putn(struct tty *tty, const void *buf, size_t len, u_int width)
+ }
+ 
+ void
++tty_set_italics(struct tty *tty)
++{
++	const char	*s;
++
++	if (tty_term_has(tty->term, TTYC_SITM)) {
++		s = options_get_string(&global_options, "default-terminal");
++		if (strcmp(s, "screen") != 0 && strncmp(s, "screen-", 7) != 0) {
++			tty_putcode(tty, TTYC_SITM);
++			return;
++		}
++	}
++	tty_putcode(tty, TTYC_SMSO);
++}
++
++void
+ tty_set_title(struct tty *tty, const char *title)
+ {
+ 	if (!tty_term_has(tty->term, TTYC_TSL) ||
+@@ -1396,12 +1412,8 @@ tty_attributes(struct tty *tty, const struct grid_cell *gc,
+ 		tty_putcode(tty, TTYC_BOLD);
+ 	if (changed & GRID_ATTR_DIM)
+ 		tty_putcode(tty, TTYC_DIM);
+-	if (changed & GRID_ATTR_ITALICS) {
+-		if (tty_term_has(tty->term, TTYC_SITM))
+-			tty_putcode(tty, TTYC_SITM);
+-		else
+-			tty_putcode(tty, TTYC_SMSO);
+-	}
++	if (changed & GRID_ATTR_ITALICS)
++		tty_set_italics(tty);
+ 	if (changed & GRID_ATTR_UNDERSCORE)
+ 		tty_putcode(tty, TTYC_SMUL);
+ 	if (changed & GRID_ATTR_BLINK)



More information about the arch-commits mailing list