TODO 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. - command bits and pieces:
  2. * allow multiple targets: fnmatch for -t/-c, for example detach all
  3. clients with -t*
  4. * add -c for new-session like new-window
  5. * ' and " should be parsed the same (eg "\e" vs '\e') in config
  6. and command prompt
  7. * last-pane across sessions
  8. * list-keys should quote output so that bindings can just be used in
  9. config file as-is
  10. - make command sequences more usable
  11. * don't require space after ;
  12. * options for error handling: && and ||?
  13. - options bits and pieces:
  14. * set-remain-on-exit is a complete hack
  15. * way to set socket path from config file
  16. - format improvements:
  17. * option to quote format (#{q:session_name})
  18. * formats need conditions for >0 (for #P)
  19. * some way to pad # stuff with spaces
  20. * formats to show if a window is linked into multiple sessions, into
  21. multiple attached sessions, and is the active window in multiple
  22. attached sessions?
  23. - choose mode improvements:
  24. * choose-pane command (augment choose-tree to do this?)
  25. * choose-mode and copy-mode are very similar, make choose-mode a subset?
  26. * flag to choose-* for sort order
  27. * choose mode would be better per client than per window?
  28. * two choices (first one then second, for swap-pane and join-pane)
  29. * choose modes should ditch the key bindings and just have fixed keys, and
  30. be more customized to their purpose (d to delete a buffer for choose-buffer,
  31. a preview of buffer contents, etc)
  32. - improve monitor-*:
  33. * straighten out rules for multiple clients
  34. * think about what happens across sessions
  35. * monitor changes within a region
  36. * perhaps monitor /all/ panes in the window not just one
  37. - improve mouse support:
  38. * bind commands to mouse in different areas?
  39. * commands executed when clicking on a pattern (URL)
  40. - hooks!
  41. - warts on current naming:
  42. * display-time but message-fg/bg/attr
  43. * list-* vs show-*
  44. * split-window -> split-pane?
  45. - better UTF-8 support:
  46. * message display
  47. * prompt input
  48. * searching in copy mode
  49. - copy/paste improvements:
  50. * incremental searching
  51. * paste w/o trailing whitespace
  52. * command to toggle selection not to move it in copy-mode
  53. * regex searching
  54. * copy-pipe should have -x as well
  55. * copy mode key bindings should just be a standard key table, using
  56. something like "copy-mode start-selection"; it could use
  57. command-prompt for search, goto, etc:
  58. bind -Temacs command-prompt -p'Search Up: ' 'copy-mode search-up %%'
  59. it'd need a separate lookup, because modes are per-pane, perhaps a
  60. table() cb to give the table name ("vi" or "emacs"). anything in the
  61. table fires the command, anything not in the table is injected as a
  62. key
  63. * searching in copy mode should unwrap lines, so if you seach for "foobar"
  64. then it should be found even if it is now "foo\nbar" (if the WRAP flag
  65. is set on the line)
  66. * {} to go to next/previous blank line in copy mode
  67. - layout stuff
  68. * way to tag a layout as a number/name
  69. * maybe keep last layout + size around and if size reverts just put it
  70. back
  71. * revamp layouts: they are too complicated, should be more closely
  72. integrated, should support hints, layout sets should just be a
  73. special case of custom layouts, and we should support panes that are
  74. not attached to a cell at all. this could be the time to introduce
  75. panelink to replace layout_cell
  76. * way to set hints/limits about pane size for resizing
  77. * panning over window (window larger than visible)
  78. * a mode where one application can cross two panes (ie x|y, width =
  79. COLUMNS/2 but height = ROWS * 2)
  80. * general key to space cells out evenly (horiz or vert) within their
  81. parent cell (could replace even-vert/even-horiz layouts)
  82. * separate active panes for different clients
  83. - terminfo bits
  84. * use a better termcap internally instead of screen, perhaps xterm
  85. * use screen-256color when started on 256 colour terminal?
  86. - code cleanup
  87. * instead of separate window and session options, just one master
  88. options list with each option having a type (window or session), then
  89. options on window, on session, and global. for window options we look
  90. window->session->global, and for session we look session->global
  91. * the way pane, window, session destroy is handled is too complicated
  92. and the distinction between session.c, window.c and server-fn.c
  93. functions is not clear. could we just have kill_pane(),
  94. kill_window(), unlink_window(), kill_session() that fix up all data
  95. structures (flagging sessions as dead) and return a value to say
  96. whether clients need to be checked for dead sessions? sort of like
  97. session_detach now but more so. or some other scheme to make it
  98. simpler and clearer? also would be nice to remove/rename server-fn.c
  99. * more readable way to work out the various things commands need to
  100. know about the client, notably:
  101. - is this the config file? (cmdq->c == NULL)
  102. - is this a command client? (cmdq->c != NULL &&
  103. cmdq->c->session == NULL)
  104. - is this a control client?
  105. - can i do stdin or stdout to this client?
  106. or even guarantee that cmdq->c != NULL and provide a better way to
  107. tell when in the config file - then we use cmdq->c if we need a
  108. client w/o a session else cmd_current_client
  109. * optimize pane redraws, 20120318184853.GK10965@yelena.nicm.ath.cx
  110. - miscellaneous
  111. * way to keep a job running just read its last line of output for #()
  112. * link panes into multiple windows
  113. * live update: server started with -U connects to server, requests
  114. sessions and windows, receives file descriptors
  115. * there are inconsistencies in what we get from old shell and what
  116. comes from config for new sessions and windows. likewise, panes and
  117. jobs and run-shell and lock command all start with slightly different
  118. environments
  119. * multiline status line? separate command prompt and status line?
  120. * customizable command aliases
  121. * automatic pane logging
  122. * BCE? We are halfway there (output side is done for pane backgrounds),
  123. just need to change how screen/grid handles erase