From c0e3262dd44e24f2433d25539d2b88757c5de368 Mon Sep 17 00:00:00 2001 From: BK Bolisetty Date: Thu, 10 Nov 2016 05:02:02 -0800 Subject: [PATCH 1/3] WIP. Empty window titles cause errors. #183 Added functions for testing empty titles and a config window_title_empty.yaml. --- .../workspacebuilder/window_title_empty.yaml | 12 ++++++++ tests/test_workspacebuilder.py | 30 +++++++++++++++++++ tmuxp/config.py | 5 +++- tmuxp/workspacebuilder.py | 5 ++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/workspacebuilder/window_title_empty.yaml diff --git a/tests/fixtures/workspacebuilder/window_title_empty.yaml b/tests/fixtures/workspacebuilder/window_title_empty.yaml new file mode 100644 index 00000000000..fd840c6e00a --- /dev/null +++ b/tests/fixtures/workspacebuilder/window_title_empty.yaml @@ -0,0 +1,12 @@ +session_name: Window index example +windows: + - window_name: '' + panes: + - echo "This window has an empty title" + - window_name: "" + panes: + - echo "So is this." + window_index: 5 + - window_name: + panes: + - echo "And this one too." diff --git a/tests/test_workspacebuilder.py b/tests/test_workspacebuilder.py index 082f4aefe10..65c25f82d9c 100644 --- a/tests/test_workspacebuilder.py +++ b/tests/test_workspacebuilder.py @@ -667,3 +667,33 @@ def test_before_load_true_if_test_passes_with_args(server): with temp_session(server) as session: builder.build(session=session) + +def test_window_title(session): + yaml_config = loadfixture("workspacebuilder/window_title_empty.yaml") + s = session + sconfig = kaptan.Kaptan(handler='yaml') + sconfig = sconfig.import_config(yaml_config).get() + sconfig = config.expand(sconfig) + + builder = WorkspaceBuilder(sconf=sconfig) + + window_count = len(session._windows) # current window count + assert len(s._windows) == window_count + for w, wconf in builder.iter_create_windows(s): + if w['window_name'] == '': + assert True + else: + print("Wname: ", w['window_name']) + assert False + ''' + for w, wconf in builder.iter_create_windows(s): + for p in builder.iter_create_panes(w, wconf): + p = p + assert len(s._windows) == window_count + assert isinstance(w, Window) + assert w.show_window_option('main-pane-height') == 5 + + assert len(s._windows) == window_count + window_count += 1 + w.select_layout(wconf['layout']) + ''' diff --git a/tmuxp/config.py b/tmuxp/config.py index 20aa9dd7f77..8aed2fb9fde 100644 --- a/tmuxp/config.py +++ b/tmuxp/config.py @@ -190,7 +190,10 @@ def expand(sconf, cwd=None, parent=None): if 'session_name' in sconf: sconf['session_name'] = expandshell(sconf['session_name']) if 'window_name' in sconf: - sconf['window_name'] = expandshell(sconf['window_name']) + if not (sconf['window_name'] == None): + sconf['window_name'] = expandshell(sconf['window_name']) + else: + sconf['shell_command'] = 'tmux rename-session \'\'' if 'environment' in sconf: for key in sconf['environment']: val = sconf['environment'][key] diff --git a/tmuxp/workspacebuilder.py b/tmuxp/workspacebuilder.py index 12bb47018bf..e1f8d97f0a2 100644 --- a/tmuxp/workspacebuilder.py +++ b/tmuxp/workspacebuilder.py @@ -339,6 +339,9 @@ def pane_has_same_path(p): if all(pane_has_same_path(p) for p in w.panes): wconf['start_directory'] = w.panes[0].current_path + if w.name == '': + empty_window_title = True + for p in w.panes: pconf = {'shell_command': []} @@ -371,6 +374,8 @@ def filter_interpretters_and_shells(): pconf = 'pane' wconf['panes'].append(pconf) + if empty_window_title: + pconf['shell_command'].append('tmux rename-session \'\'') sconf['windows'].append(wconf) From 97cdae50eb28ee4d371d9c1801da5c1dc35fe435 Mon Sep 17 00:00:00 2001 From: BK Bolisetty Date: Thu, 10 Nov 2016 05:02:02 -0800 Subject: [PATCH 2/3] WIP. Empty window titles cause errors. #183 Added functions for testing empty titles and a config window_title_empty.yaml. --- .../workspacebuilder/window_title_empty.yaml | 12 ++++++++ tests/test_workspacebuilder.py | 30 +++++++++++++++++++ tmuxp/config.py | 5 +++- tmuxp/workspacebuilder.py | 5 ++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/workspacebuilder/window_title_empty.yaml diff --git a/tests/fixtures/workspacebuilder/window_title_empty.yaml b/tests/fixtures/workspacebuilder/window_title_empty.yaml new file mode 100644 index 00000000000..fd840c6e00a --- /dev/null +++ b/tests/fixtures/workspacebuilder/window_title_empty.yaml @@ -0,0 +1,12 @@ +session_name: Window index example +windows: + - window_name: '' + panes: + - echo "This window has an empty title" + - window_name: "" + panes: + - echo "So is this." + window_index: 5 + - window_name: + panes: + - echo "And this one too." diff --git a/tests/test_workspacebuilder.py b/tests/test_workspacebuilder.py index 4aab73dafe8..d6fb9658291 100644 --- a/tests/test_workspacebuilder.py +++ b/tests/test_workspacebuilder.py @@ -673,3 +673,33 @@ def test_before_load_true_if_test_passes_with_args(server): with temp_session(server) as session: builder.build(session=session) + +def test_window_title(session): + yaml_config = loadfixture("workspacebuilder/window_title_empty.yaml") + s = session + sconfig = kaptan.Kaptan(handler='yaml') + sconfig = sconfig.import_config(yaml_config).get() + sconfig = config.expand(sconfig) + + builder = WorkspaceBuilder(sconf=sconfig) + + window_count = len(session._windows) # current window count + assert len(s._windows) == window_count + for w, wconf in builder.iter_create_windows(s): + if w['window_name'] == '': + assert True + else: + print("Wname: ", w['window_name']) + assert False + ''' + for w, wconf in builder.iter_create_windows(s): + for p in builder.iter_create_panes(w, wconf): + p = p + assert len(s._windows) == window_count + assert isinstance(w, Window) + assert w.show_window_option('main-pane-height') == 5 + + assert len(s._windows) == window_count + window_count += 1 + w.select_layout(wconf['layout']) + ''' diff --git a/tmuxp/config.py b/tmuxp/config.py index bea1df00811..da76469a732 100644 --- a/tmuxp/config.py +++ b/tmuxp/config.py @@ -209,7 +209,10 @@ def expand(sconf, cwd=None, parent=None): if 'session_name' in sconf: sconf['session_name'] = expandshell(sconf['session_name']) if 'window_name' in sconf: - sconf['window_name'] = expandshell(sconf['window_name']) + if not (sconf['window_name'] == None): + sconf['window_name'] = expandshell(sconf['window_name']) + else: + sconf['shell_command'] = 'tmux rename-session \'\'' if 'environment' in sconf: for key in sconf['environment']: val = sconf['environment'][key] diff --git a/tmuxp/workspacebuilder.py b/tmuxp/workspacebuilder.py index 2cb36492609..a4326e32426 100644 --- a/tmuxp/workspacebuilder.py +++ b/tmuxp/workspacebuilder.py @@ -384,6 +384,9 @@ def pane_has_same_path(p): if all(pane_has_same_path(p) for p in w.panes): wconf['start_directory'] = w.panes[0].current_path + if w.name == '': + empty_window_title = True + for p in w.panes: pconf = {'shell_command': []} @@ -410,6 +413,8 @@ def filter_interpretters_and_shells(): pconf = 'pane' wconf['panes'].append(pconf) + if empty_window_title: + pconf['shell_command'].append('tmux rename-session \'\'') sconf['windows'].append(wconf) From 7316fddefa8f6afe768237042c39258f630bec31 Mon Sep 17 00:00:00 2001 From: BK Bolisetty Date: Sun, 16 Aug 2020 16:38:11 -0400 Subject: [PATCH 3/3] Fix equality to None. flake8 --- tmuxp/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmuxp/config.py b/tmuxp/config.py index da76469a732..063fe5ffb7b 100644 --- a/tmuxp/config.py +++ b/tmuxp/config.py @@ -209,7 +209,7 @@ def expand(sconf, cwd=None, parent=None): if 'session_name' in sconf: sconf['session_name'] = expandshell(sconf['session_name']) if 'window_name' in sconf: - if not (sconf['window_name'] == None): + if not (sconf['window_name'] is None): sconf['window_name'] = expandshell(sconf['window_name']) else: sconf['shell_command'] = 'tmux rename-session \'\''