|  | - command bits and pieces: | 
|  | * allow multiple targets: fnmatch for -t/-c, for example detach all | 
|  | clients with -t* | 
|  | * add -c for new-session like new-window | 
|  | * ' and " should be parsed the same (eg "\e" vs '\e') in config | 
|  | and command prompt | 
|  | * last-pane across sessions | 
|  | * list-keys should quote output so that bindings can just be used in | 
|  | config file as-is | 
|  |  | 
|  | - 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 (#{q:session_name}) | 
|  | * formats need conditions for >0 (for #P) | 
|  | * some way to pad # stuff with spaces | 
|  | * 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) | 
|  | * choose modes should ditch the key bindings and just have fixed keys, and | 
|  | be more customized to their purpose (d to delete a buffer for choose-buffer, | 
|  | a preview of buffer contents, etc) | 
|  |  | 
|  | - 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? | 
|  | * commands executed when clicking on a pattern (URL) | 
|  |  | 
|  | - hooks! | 
|  |  | 
|  | - warts on current naming: | 
|  | * display-time but message-fg/bg/attr | 
|  | * list-* vs show-* | 
|  | * split-window -> split-pane? | 
|  |  | 
|  | - better UTF-8 support: | 
|  | * message display | 
|  | * prompt input | 
|  | * searching in copy mode | 
|  |  | 
|  | - copy/paste improvements: | 
|  | * incremental searching | 
|  | * paste w/o trailing whitespace | 
|  | * command to toggle selection not to move it in copy-mode | 
|  | * regex searching | 
|  | * copy-pipe should have -x as well | 
|  |  | 
|  | - 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) | 
|  | * a mode where one application can cross two panes (ie x|y, width = | 
|  | COLUMNS/2 but height = ROWS * 2) | 
|  | * general key to space cells out evenly (horiz or vert) within their | 
|  | parent cell (could replace even-vert/even-horiz layouts) | 
|  | * separate active panes for different clients | 
|  |  | 
|  | - terminfo bits | 
|  | * use a better termcap internally instead of screen, perhaps xterm | 
|  | * use screen-256color when started on 256 colour terminal? | 
|  |  | 
|  | - 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. likewise, panes and | 
|  | jobs and run-shell and lock command all start with slightly different | 
|  | environments | 
|  | * multiline status line? | 
|  | * customizable command aliases | 
|  | * automatic pane logging | 
|  | * BCE? We are halfway there (output side is done for pane backgrounds), | 
|  | just need to change how screen/grid handles erase | 
|  | * copy mode key bindings should just be a standard key table, using | 
|  | something like "copy-mode start-selection"; it could use | 
|  | command-prompt for search, goto, etc: | 
|  |  | 
|  | bind -Temacs command-prompt -p'Search Up: ' 'copy-mode search-up %%' | 
|  |  | 
|  | it'd need a separate lookup, because modes are per-pane, perhaps a | 
|  | table() cb to give the table name ("vi" or "emacs"). anything in the | 
|  | table fires the command, anything not in the table is injected as a | 
|  | key |