|  | - command bits and pieces: | 
|  | * use "--" to mark start of command w/ neww etc to avoid quoting | 
|  | * why doesn't command-prompt work if made read-only? | 
|  | * allow multiple targets: fnmatch for -t/-c, for example detach all | 
|  | clients with -t* | 
|  | * add -c for new-session like new-window | 
|  | * attach should take a pane and select it as well as attaching | 
|  | * ' and " should be parsed the same (eg "\e" vs '\e') in config | 
|  | and command prompt | 
|  | * last-pane across sessions | 
|  | * exact match operator for targets (or break the substring match | 
|  | and require eg x* instead of just x) | 
|  |  | 
|  | - make command sequences more usable | 
|  | * don't require space after ; | 
|  | * options for error handling: && and ||? | 
|  |  | 
|  | - options bits and pieces: | 
|  | * set-remain-on-exit is a complete hack | 
|  | * way to set socket path from config file | 
|  |  | 
|  | - format improvements: | 
|  | * option to quote format (#{session_name:quoted}) | 
|  | * formats need conditions for >0 (for #P) | 
|  | * some way to pad # stuff with spaces, #!2T maybe | 
|  | * status stuff is redundant with formats | 
|  | * last window update time and format for it | 
|  | * formats to show if a window is linked into multiple sessions, into | 
|  | multiple attached sessions, and is the active window in multiple | 
|  | attached sessions? | 
|  |  | 
|  | - choose mode improvements: | 
|  | * choose-pane command (augment choose-tree to do this?) | 
|  | * choose-mode and copy-mode are very similar, make choose-mode a subset? | 
|  | * flag to choose-* for sort order | 
|  | * choose mode would be better per client than per window | 
|  | * two choices (first one then second, for swap-pane and join-pane) | 
|  |  | 
|  | - improve monitor-*: | 
|  | * straighten out rules for multiple clients | 
|  | * think about what happens across sessions | 
|  | * monitor changes within a region | 
|  | * perhaps monitor /all/ panes in the window not just one | 
|  |  | 
|  | - improve mouse support: | 
|  | * bind commands to mouse in different areas? | 
|  | * more fine-grained options | 
|  | * commands executed when clicking on a pattern (URL) | 
|  | * send arrow key sequences for mouse scroll wheel in alternate screen | 
|  | * mouse-select-pane will screw up with !MODE_MOUSE_STANDARD (it sets | 
|  | the flag on w/o checking the others before calling tty_update_mode) | 
|  |  | 
|  | - hooks! | 
|  |  | 
|  | - warts on current naming: | 
|  | * display-time but message-fg/bg/attr | 
|  | * list-* vs show-* | 
|  | * split-window -> split-pane?? | 
|  |  | 
|  | - better UTF-8 support: | 
|  | * #22T can split in the middle of UTF-8 characters! | 
|  | * window names and titles | 
|  | * message display | 
|  | * prompt input | 
|  | * multibyte key input | 
|  | * buffer_sample and the choose-* could show UTF-8 properly | 
|  |  | 
|  | - copy/paste improvements: | 
|  | * incremental searching | 
|  | * append to buffer | 
|  | * paste w/o trailing whitespace | 
|  | * named buffers and allow gaps in the stack | 
|  | * command to toggle selection not to move it in copy-mode | 
|  |  | 
|  | - layout stuff | 
|  | * way to tag a layout as a number/name | 
|  | * maybe keep last layout + size around and if size reverts just put it | 
|  | back | 
|  | * revamp layouts: they are too complicated, should be more closely | 
|  | integrated, should support hints, layout sets should just be a | 
|  | special case of custom layouts, and we should support panes that are | 
|  | not attached to a cell at all. this could be the time to introduce | 
|  | panelink to replace layout_cell | 
|  | * way to set hints/limits about pane size for resizing | 
|  | * panning over window (window larger than visible) | 
|  |  | 
|  | - terminfo bits | 
|  | * use a better termcap internally instead of screen, perhaps xterm | 
|  | * use screen-256color when started on 256 colour terminal? | 
|  | * need a tmux terminfo entry to document the extensions we are using in | 
|  | upstream terminfo | 
|  | * support title stack, both internally and externally (restore on | 
|  | detach) http://docs.freebsd.org/cgi/getmsg.cgi?fetch=1149299+0+archive/2010/freebsd-questions/20100207.freebsd-questions | 
|  |  | 
|  | - code cleanup | 
|  | * instead of separate window and session options, just one master | 
|  | options list with each option having a type (window or session), then | 
|  | options on window, on session, and global. for window options we look | 
|  | window->session->global, and for session we look session->global | 
|  | * the way pane, window, session destroy is handled is too complicated | 
|  | and the distinction between session.c, window.c and server-fn.c | 
|  | functions is not clear. could we just have kill_pane(), | 
|  | kill_window(), unlink_window(), kill_session() that fix up all data | 
|  | structures (flagging sessions as dead) and return a value to say | 
|  | whether clients need to be checked for dead sessions? sort of like | 
|  | session_detach now but more so. or some other scheme to make it | 
|  | simpler and clearer? also would be nice to remove/rename server-fn.c | 
|  | * more readable way to work out the various things commands need to | 
|  | know about the client, notably: | 
|  | - is this the config file? (cmdq->c == NULL) | 
|  | - is this a command client? (cmdq->c != NULL && | 
|  | cmdq->c->session == NULL) | 
|  | - is this a control client? | 
|  | - can i do stdin or stdout to this client? | 
|  | or even guarantee that cmdq->c != NULL and provide a better way to | 
|  | tell when in the config file - then we use cmdq->c if we need a | 
|  | client w/o a session else cmd_current_client | 
|  | * optimize pane redraws, 20120318184853.GK10965@yelena.nicm.ath.cx | 
|  |  | 
|  | - miscellaneous | 
|  | * way to keep a job running just read its last line of output for #() | 
|  | link panes into multiple windows | 
|  | * live update: server started with -U connects to server, requests | 
|  | sessions and windows, receives file descriptors | 
|  | * there are inconsistencies in what we get from old shell and what | 
|  | comes from config for new sessions and windows | 
|  | * multiline status line? | 
|  | * bind commands to key sequences -- make it so ALL keys go through a | 
|  | table, first an implicit table in which C-b is the only default | 
|  | binding to a command that says "next key from $othertable" and so | 
|  | on. means -n can go away as well | 
|  |  | 
|  |  |