Hi Nicholas, Thanks, that seems to work with both list-windows and list-sessions - although I'm not sure how best to access or use it. Is there some less clunky way for me to access such a session variable directly for "this" session only rather than 'list-windows | uniq' or similar?
Another approach to use it with the 'choose-window' command in a way that it would affect the sort order, if that's even possible. Perhaps a "window_stack_position" format would be more appropriate in that case. Regards, Scott -----Original Message----- From: Nicholas Marriott [mailto:[email protected]] Sent: Wednesday, 26 April 2017 17:43 To: Scott ROCHFORD <[email protected]> Cc: tmux-users <[email protected]> Subject: Re: Way to access tmux internal window stack? We could add a session_stack format, something like this: Index: format.c =================================================================== RCS file: /cvs/src/usr.bin/tmux/format.c,v retrieving revision 1.130 diff -u -p -r1.130 format.c --- format.c 21 Apr 2017 14:01:19 -0000 1.130 +++ format.c 26 Apr 2017 07:42:05 -0000 @@ -48,6 +48,8 @@ static void format_cb_host_short(struct static void format_cb_pid(struct format_tree *, struct format_entry *); static void format_cb_session_alerts(struct format_tree *, struct format_entry *); +static void format_cb_session_stack(struct format_tree *, + struct format_entry *); static void format_cb_window_layout(struct format_tree *, struct format_entry *); static void format_cb_window_visible_layout(struct format_tree *, @@ -382,7 +384,7 @@ format_cb_session_alerts(struct format_t { struct session *s = ft->s; struct winlink *wl; - char alerts[256], tmp[16]; + char alerts[1024], tmp[16]; if (s == NULL) return; @@ -406,6 +408,28 @@ format_cb_session_alerts(struct format_t fe->value = xstrdup(alerts); } +/* Callback for session_stack. */ +static void +format_cb_session_stack(struct format_tree *ft, struct format_entry *fe) +{ + struct session *s = ft->s; + struct winlink *wl; + char result[1024], tmp[16]; + + if (s == NULL) + return; + + xsnprintf(result, sizeof result, "%u", s->curw->idx); + TAILQ_FOREACH(wl, &s->lastw, sentry) { + xsnprintf(tmp, sizeof tmp, "%u", wl->idx); + + if (*result != '\0') + strlcat(result, ",", sizeof result); + strlcat(result, tmp, sizeof result); + } + fe->value = xstrdup(result); +} + /* Callback for window_layout. */ static void format_cb_window_layout(struct format_tree *ft, struct format_entry *fe) @@ -1156,6 +1180,7 @@ format_defaults_session(struct format_tr format_add(ft, "session_many_attached", "%d", s->attached > 1); format_add_cb(ft, "session_alerts", format_cb_session_alerts); + format_add_cb(ft, "session_stack", format_cb_session_stack); } /* Set default format keys for a client. */ On Wed, Apr 26, 2017 at 07:33:57AM +0000, Scott ROCHFORD wrote: > I have a LOT of windows open. Often I want to toggle quickly between two > of them... but sometimes three, or more. So I thought I'd write my own > key bindings to go to the last but one, or the last but two... (a l`a > alt-tab,tab,tab in Windows) but without a way to access the MRU window > list I don't know how to do so. Can you think of something tricky? > > > > Regards, > > > > Scott > > > > P.S. apologies for duplicate emails Nicholas, forgot to CC the list. > > > > From: Nicholas Marriott [mailto:[email protected]] > Sent: Wednesday, 26 April 2017 16:37 > To: Scott ROCHFORD <[email protected]> > Cc: tmux-users <[email protected]> > Subject: Re: Way to access tmux internal window stack? > > > > Hi > > There is no way to access it at the moment. What do you need to access it > for? > > > > > > > > > > > > On 26 Apr 2017 7:19 am, "Scott ROCHFORD" <[email protected]> > wrote: > > Hi, > > > > tmux appears to maintain an internal window stack (similar Windows MRU > alt-tab stack) in most-recently-used order. > > > > You can toggle between the top two windows on the stack using the > 'last-window' command (default key binding prefix-l), however I can't > find a way to access anything lower in the stack until you close those > top windows. Is there some way you can list the windows in internal > stack order? Do I need to make a feature request for a stack-order > option to the 'list-windows' and 'select-window' commands perhaps? > > > > Regards, > > Scott > > -- > You received this message because you are subscribed to the Google > Groups "tmux-users" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > To post to this group, send email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > > -- You received this message because you are subscribed to the Google Groups "tmux-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
