Skip to content

Commit b231346

Browse files
authored
compat: Extract format separator to a constant + environmental variable (#343)
On top of #298, make the libtmux separator configurable. At this time it is `TMUX_SEPERATOR` but it may change before release. Credit: @jagguli
2 parents 5458b98 + 9411cc1 commit b231346

File tree

4 files changed

+26
-12
lines changed

4 files changed

+26
-12
lines changed

libtmux/formats.py

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
For reference: https://github.com/tmux/tmux/blob/master/format.c
77
88
"""
9+
import os
10+
11+
FORMAT_SEPERATOR = os.environ.get("TMUX_SEPERATOR", "|")
912

1013
SESSION_FORMATS = [
1114
'session_name',

libtmux/server.py

+17-8
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def _list_sessions(self):
142142
sformats = formats.SESSION_FORMATS
143143
tmux_formats = ['#{%s}' % f for f in sformats]
144144

145-
tmux_args = ('-F%s' % '$@$'.join(tmux_formats),) # output
145+
tmux_args = ('-F%s' % formats.FORMAT_SEPERATOR.join(tmux_formats),) # output
146146

147147
proc = self.cmd('list-sessions', *tmux_args)
148148

@@ -154,7 +154,10 @@ def _list_sessions(self):
154154
sessions = proc.stdout
155155

156156
# combine format keys with values returned from ``tmux list-sessions``
157-
sessions = [dict(zip(sformats, session.split('$@$'))) for session in sessions]
157+
sessions = [
158+
dict(zip(sformats, session.split(formats.FORMAT_SEPERATOR)))
159+
for session in sessions
160+
]
158161

159162
# clear up empty dict
160163
sessions = [
@@ -208,7 +211,7 @@ def _list_windows(self):
208211
proc = self.cmd(
209212
'list-windows', # ``tmux list-windows``
210213
'-a',
211-
'-F%s' % '$@$'.join(tmux_formats), # output
214+
'-F%s' % formats.FORMAT_SEPERATOR.join(tmux_formats), # output
212215
)
213216

214217
if proc.stderr:
@@ -219,7 +222,10 @@ def _list_windows(self):
219222
wformats = ['session_name', 'session_id'] + formats.WINDOW_FORMATS
220223

221224
# combine format keys with values returned from ``tmux list-windows``
222-
windows = [dict(zip(wformats, window.split('$@$'))) for window in windows]
225+
windows = [
226+
dict(zip(wformats, window.split(formats.FORMAT_SEPERATOR)))
227+
for window in windows
228+
]
223229

224230
# clear up empty dict
225231
windows = [dict((k, v) for k, v in window.items() if v) for window in windows]
@@ -268,7 +274,7 @@ def _list_panes(self):
268274
'window_id',
269275
'window_name',
270276
] + formats.PANE_FORMATS
271-
tmux_formats = ['#{%s}$@$' % f for f in pformats]
277+
tmux_formats = [('#{%%s}%s' % formats.FORMAT_SEPERATOR) % f for f in pformats]
272278

273279
proc = self.cmd('list-panes', '-a', '-F%s' % ''.join(tmux_formats)) # output
274280

@@ -286,7 +292,10 @@ def _list_panes(self):
286292
] + formats.PANE_FORMATS
287293

288294
# combine format keys with values returned from ``tmux list-panes``
289-
panes = [dict(zip(pformats, window.split('$@$'))) for window in panes]
295+
panes = [
296+
dict(zip(pformats, window.split(formats.FORMAT_SEPERATOR)))
297+
for window in panes
298+
]
290299

291300
# clear up empty dict
292301
panes = [
@@ -527,7 +536,7 @@ def new_session(
527536
tmux_args = (
528537
'-s%s' % session_name,
529538
'-P',
530-
'-F%s' % '$@$'.join(tmux_formats), # output
539+
'-F%s' % formats.FORMAT_SEPERATOR.join(tmux_formats), # output
531540
)
532541

533542
if not attach:
@@ -558,7 +567,7 @@ def new_session(
558567
os.environ['TMUX'] = env
559568

560569
# combine format keys with values returned from ``tmux list-windows``
561-
session = dict(zip(sformats, session.split('$@$')))
570+
session = dict(zip(sformats, session.split(formats.FORMAT_SEPERATOR)))
562571

563572
# clear up empty dict
564573
session = dict((k, v) for k, v in session.items() if v)

libtmux/session.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,9 @@ def new_window(
217217
start_directory = os.path.expanduser(start_directory)
218218
window_args += ('-c%s' % start_directory,)
219219

220-
window_args += ('-F"%s"' % '$@$'.join(tmux_formats),) # output
220+
window_args += (
221+
'-F"%s"' % formats.FORMAT_SEPERATOR.join(tmux_formats),
222+
) # output
221223
if window_name:
222224
window_args += ('-n%s' % window_name,)
223225

@@ -237,7 +239,7 @@ def new_window(
237239

238240
window = proc.stdout[0]
239241

240-
window = dict(zip(wformats, window.split('$@$')))
242+
window = dict(zip(wformats, window.split(formats.FORMAT_SEPERATOR)))
241243

242244
# clear up empty dict
243245
window = dict((k, v) for k, v in window.items() if v)

libtmux/window.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ def split_window(
434434
'window_index',
435435
'window_id',
436436
] + formats.PANE_FORMATS
437-
tmux_formats = ['#{%s}$@$' % f for f in pformats]
437+
tmux_formats = [(f'#{{{f}}}{formats.FORMAT_SEPERATOR}') for f in pformats]
438438

439439
# '-t%s' % self.attached_pane.get('pane_id'),
440440
# 2013-10-18 LOOK AT THIS, rm'd it..
@@ -478,7 +478,7 @@ def split_window(
478478
else:
479479
pane = pane.stdout[0]
480480

481-
pane = dict(zip(pformats, pane.split('$@$')))
481+
pane = dict(zip(pformats, pane.split(formats.FORMAT_SEPERATOR)))
482482

483483
# clear up empty dict
484484
pane = dict((k, v) for k, v in pane.items() if v)

0 commit comments

Comments
 (0)