diff --git a/TODO b/TODO index bcb4305f..0da4e49a 100644 --- a/TODO +++ b/TODO @@ -148,90 +148,7 @@ TODO soonish maybe: - Horizontal cursor position is incorrect after resize (bug), issue 1323. -- Multiple status lines: - - 1) Extend formats to include some way to loop over every window - (or pane or session), perhaps something like - #{W:#{window_name} }. It would need to be able to reach - into a window's options in order to allow different windows - to have different format. (DONE) An operator to evaluate an - option value as a format, maybe make it so E: on evaluates - the result as a format again something like, so end up with - something like #{W:#{E:window-status-format} } - - 2) Some way to include alignment information for part of a format. - - 3) Then the entire status line can be drawn with one option, - instead of status-left/status-right. But how to stay - backwards compatible, even slightly? Can probably keep - status-left and right and the default status-format becomes - something like (plus some bits for current window): - - #{L:#{E:status-left} #{M:#{W:{E:window-status-format}}} #{R:#{E:status-right}} - - Where L = left, M = middle, R = right; W = for each window; - E = get option value and evaluate as format. - - 4) Also need a way to return mouse positioning, so a format - like the alignment that stores the offset/size for - Mouse*Status{Left,Right}. - - 5) Likewise, styles. Alignment, mouse, styles can all be done - similarly - format_expand can be given the available width - and then build a list of format_range with type (ALIGN_LEFT, - STYLE, MOUSE_LEFT and so on) which a format_draw function - can use to draw the format, and can be stored to be used by - the mouse positioning check code. - -(DONE) 6) status-left-length and similar will need to be taken into - account. - - 7) Supporting trimming the window list and adding <> might be - tricky, probably a second pass over the format_range list to - trim as appropriate. But it will need to know which element - to trim first, so some way to mark that is needed (maybe a - priority or something in the alignment/length limit). - -(DONE) 8) Formats are going to get very long so perhaps standardize - them a bit so they are all something like #{F/argument:text} - then then could be #{A/foo;B/bar:text} rather than - #{A:foo,#{B:bar,text}} and so on. Need to keep the old style - for compatibility, at least for the most popular formats. So - the status-left part would be something like: - - #{A/left;S/#{status-left-style};M/left;=/#{status-left-length};E:status-left} - - Where A = alignment, S = style, M = mouse, = = length limit, - E = expand again. - - Existing formats are: - - #{l:foo} <-- literal - #{m:foo} <-- match - #{C:foo} <-- search - #{b:foo} <-- basename - #{d:foo} <-- dirname - #{t:foo} <-- time - #{q:foo} <-- quote - #{s/a/b/:foo} <-- sub - #{=123:foo} <-- length - - #{||:foo,bar} <-- or - #{&&:foo,bar} <-- and - #{!=:foo,bar} <-- neq - #{==:foo,bar} <-- eq - #{?foo,bar,baz} <-- if - - So comparisons and ? can stay as they are. - - All other formats can be parsed as #{X/arg1/arg2/arg3:...} - with an optional leading and trailing /. Each argument can - be expanded. - - 9) Then status-format can be an array option specifying - multiple status lines. Perhaps one option for top and one - for bottom. - +- Multiple status lines (DONE but not committed yet). - Store hooks as options, issue 1619. - Support buffer prefixes, issue 1501. - copy-pipe should be synchronous, issue 1517. @@ -242,7 +159,6 @@ TODO soonish maybe: silly really though), reflow performance (can reflow blocks on demand). It would possibly be good if history-limit could be global and collected LRU. -- Array options should be a tree rather than being sparse. - Formats to get the default formats for various things, notably choose-tree. GitHub issue 1634. - Command aliases should be able to override builtin commands in order to add