mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Update TODO.
This commit is contained in:
		
							
								
								
									
										86
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user