ctx-tui 2.0.4

Manage repo-scoped work contexts: fresh checkouts wrapped in terminal multiplexer sessions
Documentation
�

"�j�����SSKrSSKrSSKJr SSKJr SSKJr SSKJ	r	J
r
JrJr SSK
JrJr SSKJr S\S	\4S
jrS\S	\4SjrS
\	S	\
4SjrS
\	S\S\S	\\\\
44SjrS\S\S\	S	S4Sjr"SS\5rg)�N)�Mapping)�Path)�Context)�Node�Pane�SplitDirection�resolve_layout)�Multiplexer�MultiplexerError)�	via_shell�ctx�returnc�|�URSUR3nURSS5RSS5$)Nz--�.�-�:)�repo�name�replace)r
�raws  �O/Users/michael/dev/contexts/ctx/rewrite-it-in-rust/src/ctx/multiplexers/tmux.py�
_session_namers8��
�X�X�J�b����
�
#�C��;�;�s�C� �(�(��c�2�2��argsc�j�[R"S/UQSSSS9nURR5$)N�tmuxT)�check�capture_output�text)�
subprocess�run�stdout�strip)r�results  r�_tmuxr%s0��
�^�^�V�O�d�O�4��SW�
X�F��=�=��� � r�nodec�|�[U[5(d&URSn[U[5(dM&U$)z.The leaf a split hands its original region to.r)�
isinstancer�panes)r&s r�_first_paner*s0����t�$�$��z�z�!�}����t�$�$��Kr�pane_id�cwdc
���[U[5(aX4/$UR=[R:Xa SnO[R
:XaSnU/nURSSHZnSWSUSS[U5S	S
S/	n[U5RnUbURU5 UR[U65 M\ /n[URUSS
9H upYUR[XYU55 M" U$)zLSubdivide pane_id according to the layout, returning (pane_id, pane) leaves.z-hz-v�Nzsplit-window�-t������-c�-P�-F�
#{pane_id}T)�strict)r(r�	directionr�ROW�COLUMNr)�strr*�command�appendr%�zip�extend�_build)
r&r+r,�flag�regions�childrr:�leaves�regions
          rr>r>s����$������ � �
�.�.�
�^�
�
��D�
�
"�
"��D��i�G����A�B�����d�G�B�K��s�3�x��t�Ua�b���e�$�,�,�����K�K�� ����u�d�|�$� �&(�F��T�Z�Z���>�
���
�
�f�U�C�0�1�?��Mr�session�layoutc	��SSSUS[U5SSS/	n[U5RnUbURU5 [	U6n[X%U5n[SU5USS5n[	SS
U5 g![RaGn[R"SS	S
SU3/SS
9 SUR=(d S;a[S5UeeSnAff=f)Nznew-sessionz-dz-sr1r2r3r4r�kill-sessionr/�=T�rzcommand too long�z)a pane command exceeds tmux's ~16KB limitc3�P# �UHupUR(dMUv� M g7f�N)�focus)�.0r+�panes   r�	<genexpr>�"_create_session.<locals>.<genexpr>Ds���F��
��4�:�:�G�G��s�&�	&rzselect-pane)r9r*r:r;r%r>r �CalledProcessErrorr!�stderrr�next)	rDr,rErr:�firstrB�exc�focuseds	         r�_create_sessionrX4s���
�4��w��c�#�h��d�L�Y�D��&�!�)�)�G������G����t�����s�+���F��F��q�	�RS��U�G�	�-��w�'��
�(�(���������'��m�D�UY�Z��#�*�*�"2��3�"�#N�O�UX�X�
��	�s�A:�:C�AC�Cc��\rSrSrS\SS4SjrS\4SjrS\S\4Sjr	S\S\4S	jr
SS\S
\\\4S-SS4Sjjr
SS\S
\\\4S-SS4SjjrS\SS4S
jrSrg)�TmuxMultiplexer�HrErNc��XlgrL��_layout)�selfrEs  r�__init__�TmuxMultiplexer.__init__Is���rc�R�[[RRS55$)N�TMUX)�bool�os�environ�get)r_s r�can_open_in_place�!TmuxMultiplexer.can_open_in_placeLs���B�J�J�N�N�6�*�+�+rr
c	�j�[R"SSSS[U53/SS9nURS:H$)Nrzhas-sessionr/rHTrIr)r r!r�
returncode)r_r
r$s   r�exists�TmuxMultiplexer.existsPs?�����
�]�D�A�m�C�.@�-A�*B�C�TX�
��� � �A�%�%rc�~�[RRS5(dg[SSS5[	U5:H$)NrcFzdisplay-messagez-pz#S)rerfrgr%r�r_r
s  r�
is_current�TmuxMultiplexer.is_currentVs2���z�z�~�~�f�%�%���&��d�3�}�S�7I�I�Ir�valuesc��URU5(d@[[URU55n[	[U5URU5 ggrL)rlrr	r^rXr�path)r_r
rrrEs    r�create�TmuxMultiplexer.create[s@���{�{�3����~�d�l�l�F�C�D�F��M�#�.����&�A� rc���[U5nURX5 [RR	S5(a[SSSU35 g[R"SSSSSU3/5 g)Nrcz
switch-clientr/rHrzattach-session)rrurerfrgr%�execvp)r_r
rrrDs    r�open�TmuxMultiplexer.open`s[����$�����C� �
�:�:�>�>�&�!�!��/�4�1�W�I��7��I�I�f�v�'7���7�)�}�M�Nrc�6�[SSS[U535 g)NrGr/rH)r%rros  r�kill�TmuxMultiplexer.killhs��
�n�d�a�
�c�(:�';�$<�=rr]rL)�__name__�
__module__�__qualname__�__firstlineno__rr`rdrhrrlrprr9ruryr|�__static_attributes__�rrrZrZHs����t����,�4�,�&�'�&�d�&�J�g�J�$�J�
B�'�B�7�3��8�+<�t�+C�B�t�B�
O��O���c��):�T�)A�O�T�O�>��>�D�>rrZ)rer �collections.abcr�pathlibr�ctx.contextsr�
ctx.layoutrrrr	�ctx.multiplexerr
r�ctx.shellrunrr9rr%r*�list�tupler>rXrZr�rr�<module>r�s���	��#�� �A�A�9�"�3�w�3�3�3�!��!��!�
�d��t�������$��4��c�4�i�8H�3I��,(�S�(�t�(�T�(�d�(�(!>�k�!>r