Skip to content

Commit 7822063

Browse files
author
Bruno Sutic
committed
Big refactor for smooth window creation
1 parent 47f0a84 commit 7822063

File tree

2 files changed

+15
-43
lines changed

2 files changed

+15
-43
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
- describe various options in the readme
66
- fix sidebar right resizing
77
- improve sidebar right handling
8+
- big refactor for smooth window creation
89

910
### v0.5.0, Sep 04, 2014
1011
- key bindings work from the sidebar now too

scripts/toggle.sh

Lines changed: 14 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,8 @@ sidebar_pane_args() {
3636

3737
register_sidebar() {
3838
local sidebar_id="$1"
39-
local pane_id="$2"
40-
set_tmux_option "${REGISTERED_SIDEBAR_PREFIX}-${sidebar_id}" "$pane_id"
41-
}
42-
43-
register_sidebar_for_current_pane() {
44-
set_tmux_option "${REGISTERED_PANE_PREFIX}-${PANE_ID}" "$1,$ARGS"
39+
set_tmux_option "${REGISTERED_SIDEBAR_PREFIX}-${sidebar_id}" "$PANE_ID"
40+
set_tmux_option "${REGISTERED_PANE_PREFIX}-${PANE_ID}" "${sidebar_id},${ARGS}"
4541
}
4642

4743
registration_not_for_the_same_command() {
@@ -99,10 +95,6 @@ kill_sidebar() {
9995
PANE_WIDTH="$new_current_pane_width"
10096
}
10197

102-
orientation_option() {
103-
echo "-h"
104-
}
105-
10698
sidebar_left() {
10799
[[ $POSITION =~ "left" ]]
108100
}
@@ -129,44 +121,23 @@ desired_sidebar_size() {
129121
fi
130122
}
131123

132-
resize_sidebar_left() {
133-
local "$sidebar_id"
134-
local desired_size="$(desired_sidebar_size)"
135-
if [ -n $desired_size ]; then
136-
tmux resize-pane -x "$((desired_size - 1))"
137-
# this is done just to refresh the main pane. See github issue #14.
138-
tmux resize-pane -t "$sidebar_id" "-R" 1
139-
fi
140-
}
141-
142124
split_sidebar_left() {
143-
tmux split-window "$(orientation_option)" -c "$PANE_CURRENT_PATH" -P -F "#{pane_id},#{pane_width}" "$COMMAND"
144-
}
145-
146-
create_sidebar_left() {
147-
local sidebar_info=$(split_sidebar_left)
148-
local sidebar_id=$(echo "$sidebar_info" | cut -d',' -f1)
149-
register_sidebar "$sidebar_id" "$PANE_ID"
150-
register_sidebar_for_current_pane "$sidebar_id"
151-
tmux swap-pane -U
152-
resize_sidebar_left "$sidebar_id"
153-
154-
if no_focus; then
155-
tmux last-pane
156-
fi
125+
local sidebar_size=$(desired_sidebar_size)
126+
local inverted_size=$((PANE_WIDTH - $sidebar_size - 1))
127+
local sidebar_id="$(tmux new-window -c "$PANE_CURRENT_PATH" -P -F "#{pane_id}" "$COMMAND")"
128+
tmux join-pane -hb -l "$inverted_size" -t "$PANE_ID" -s "$sidebar_id"
129+
echo "$sidebar_id"
157130
}
158131

159132
split_sidebar_right() {
160133
local sidebar_size=$(desired_sidebar_size)
161-
tmux split-window "$(orientation_option)" -l "$sidebar_size" -c "$PANE_CURRENT_PATH" -P -F "#{pane_id},#{pane_width}" "$COMMAND"
134+
tmux split-window -h -l "$sidebar_size" -c "$PANE_CURRENT_PATH" -P -F "#{pane_id}" "$COMMAND"
162135
}
163136

164-
create_sidebar_right() {
165-
local sidebar_info=$(split_sidebar_right)
166-
local sidebar_id=$(echo "$sidebar_info" | cut -d',' -f1)
167-
register_sidebar "$sidebar_id" "$PANE_ID"
168-
register_sidebar_for_current_pane "$sidebar_id"
169-
137+
create_sidebar() {
138+
local position="$1" # left / right
139+
local sidebar_id="$(split_sidebar_${position})"
140+
register_sidebar "$sidebar_id"
170141
if no_focus; then
171142
tmux last-pane
172143
fi
@@ -205,9 +176,9 @@ toggle_sidebar() {
205176
else
206177
exit_if_pane_too_narrow
207178
if sidebar_left; then
208-
create_sidebar_left
179+
create_sidebar "left"
209180
else
210-
create_sidebar_right
181+
create_sidebar "right"
211182
fi
212183
fi
213184
}

0 commit comments

Comments
 (0)