This is responsible for reassigning new index numbers to the winlinks in a
given session.
---
trunk/tmux.h | 1 +
trunk/window.c | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/trunk/tmux.h b/trunk/tmux.h
index b118f49..3881bd2 100644
--- a/trunk/tmux.h
+++ b/trunk/tmux.h
@@ -1924,6 +1924,7 @@ int window_pane_visible(struct window_pane
*);
char *window_pane_search(
struct window_pane *, const char *, u_int *);
char *window_printable_flags(struct session *, struct winlink *);
+int window_renumber_windows(struct session *);
struct window_pane *window_pane_find_up(struct window_pane *);
struct window_pane *window_pane_find_down(struct window_pane *);
diff --git a/trunk/window.c b/trunk/window.c
index 4b5f901..600794a 100644
--- a/trunk/window.c
+++ b/trunk/window.c
@@ -1087,3 +1087,30 @@ window_pane_find_right(struct window_pane *wp)
}
return (NULL);
}
+
+/* Renumber the windows across winlinks attached to a specific session. */
+int
+window_renumber_windows(struct session *s)
+{
+ struct winlink *wl;
+ int new_idx;
+
+ if (s == NULL)
+ return (-1);
+
+ /* Start renumbering from the base-index if it's set. */
+ new_idx = options_get_number(&s->options, "base-index");
+
+ /* Go through the winlinks and assign new indexes. */
+ RB_FOREACH(wl, winlinks, &s->windows) {
+ /* This clashes with a window already with that id, so skip
+ * it.
+ */
+ if (wl->idx == new_idx) {
+ new_idx++;
+ continue;
+ }
+ wl->idx = new_idx++;
+ }
+ return (0);
+}
--
1.7.5.4
------------------------------------------------------------------------------
BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts.
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
tmux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users