From 130dc36849daffad83b15e4c3a8f3c4b65d85d48 Mon Sep 17 00:00:00 2001 From: Chung Tran Date: Sun, 25 Sep 2022 21:22:34 -0400 Subject: [PATCH 1/4] Allow empty window name. --- src/libtmux/session.py | 3 +++ tests/test_window.py | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/libtmux/session.py b/src/libtmux/session.py index f996286de..b5e7a12ba 100644 --- a/src/libtmux/session.py +++ b/src/libtmux/session.py @@ -253,6 +253,9 @@ def new_window( if window_name: window_args += ("-n%s" % window_name,) + if window_name == '': + window_args += ('-n', '') + window_args += ( # empty string for window_index will use the first one available "-t%s:%s" diff --git a/tests/test_window.py b/tests/test_window.py index 401716ee5..daf674314 100644 --- a/tests/test_window.py +++ b/tests/test_window.py @@ -290,3 +290,11 @@ def test_select_layout_accepts_no_arg(server: Server, session: Session) -> None: window = session.new_window(window_name="test_window") window.select_layout() + + +def test_empty_window_name(session: Session) -> None: + session.set_option("automatic-rename", "off") + window = session.new_window(window_name="''", attach=True) + + assert window == session.attached_window + assert window.get("window_name") == "''" From 50164f54fd678c90fd8c82cf1cc01c0ece8fb6a4 Mon Sep 17 00:00:00 2001 From: Chung Tran Date: Mon, 26 Sep 2022 22:09:43 -0400 Subject: [PATCH 2/4] Refactoring. --- src/libtmux/session.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libtmux/session.py b/src/libtmux/session.py index b5e7a12ba..f74c6e2a3 100644 --- a/src/libtmux/session.py +++ b/src/libtmux/session.py @@ -250,11 +250,8 @@ def new_window( window_args += ( '-F"%s"' % formats.FORMAT_SEPARATOR.join(tmux_formats), ) # output - if window_name: - window_args += ("-n%s" % window_name,) - - if window_name == '': - window_args += ('-n', '') + if window_name is not None and isinstance(window_name, str): + window_args += ("-n", window_name) window_args += ( # empty string for window_index will use the first one available From c825acfcd2315db9fa0eb531671b0dc10ae27c8c Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 2 Oct 2022 13:06:28 -0500 Subject: [PATCH 3/4] test(empty_window): Assert empty window name passed --- tests/test_window.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tests/test_window.py b/tests/test_window.py index daf674314..4c10c9c2a 100644 --- a/tests/test_window.py +++ b/tests/test_window.py @@ -5,7 +5,7 @@ import pytest from libtmux import exc -from libtmux.common import has_gte_version +from libtmux.common import has_gte_version, has_lt_version from libtmux.pane import Pane from libtmux.server import Server from libtmux.session import Session @@ -292,9 +292,21 @@ def test_select_layout_accepts_no_arg(server: Server, session: Session) -> None: window.select_layout() +@pytest.mark.skipif( + has_lt_version("3.2"), reason="needs filter introduced in tmux >= 3.2" +) def test_empty_window_name(session: Session) -> None: session.set_option("automatic-rename", "off") window = session.new_window(window_name="''", attach=True) assert window == session.attached_window assert window.get("window_name") == "''" + + cmd = session.cmd( + "list-windows", + "-F", + "#{window_name}", + "-f", + "#{==:#{session_name}," + session.name + "}", + ) + assert "''" in cmd.stdout From 7fdb3f3e45d0c25e0b87f58b727e3d36e8ef86b4 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 2 Oct 2022 13:15:24 -0500 Subject: [PATCH 4/4] docs(CHANGES): Note improvement to handling of empty window --- CHANGES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index f69037089..74f0a433b 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,10 @@ $ pip install --user --upgrade --pre libtmux - _Insert changes/features/fixes for next release here_ +### Bug fixes + +- `Session.new_window()`: Improve support for `window_name: ''` downstream in tmuxp (#444, credit: @trankchung) + ## libtmux 0.15.7 (2022-09-23) - Move `.coveragerc` -> `pyproject.toml` (#443)