aboutsummaryrefslogtreecommitdiff
path: root/screen-write.c
Commit message (Collapse)AuthorAge
* Style and spacing nits.nicm2017-05-31
|
* Rewrite of choose mode, both to simplify and tidy the code and to addnicm2017-05-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | some modern features. Now the common code is in mode-tree.c, which provides an API used by the three modes now separated into window-{buffer,client,tree}.c. Buffer mode shows buffers, client mode clients and tree mode a tree of sessions, windows and panes. Each mode has a common set of key bindings plus a few that are specific to the mode. Other changes are: - each mode has a preview pane: for buffers this is the buffer content (very useful), for others it is a preview of the pane; - items may be sorted in different ways ('O' key); - multiple items may be tagged and an operation applied to all of them (for example, to delete multiple buffers at once); - in tree mode a command may be run on the selected item (session, window, pane) or on tagged items (key ':'); - displayed items may be filtered in tree mode by using a format (this is used to implement find-window) (key 'f'); - the custom format (-F) for the display is no longer available; - shortcut keys change from 0-9, a-z, A-Z which was always a bit weird with keys used for other uses to 0-9, M-a to M-z. Now that the code is simpler, other improvements will come later. Primary key bindings for each mode are documented under the commands in the man page (choose-buffer, choose-client, choose-tree). Parts written by Thomas Adam.
* Need to store bg for ECH.nicm2017-05-12
|
* Need to clear tty context before using it.nicm2017-05-12
|
* Scrolling needs to use background colour.nicm2017-05-12
|
* ECH needs to use background colour.nicm2017-05-12
|
* Clear to start of screen needs to use background colour.nicm2017-05-11
|
* Fix UTF-8 combining characters in column 0, based on a diff from Keithnicm2017-04-29
| | | | Winstein.
* Make full width panes try to play more nicely with terminal copy andnicm2017-04-25
| | | | | paste by avoiding explicit line wraps if we think the terminal will wrap anyway.
* Can't collect UTF-8 characters of more than one byte at the moment.nicm2017-04-22
|
* Need to flush before writing out cells we are not collecting, also addnicm2017-03-07
| | | | some extra logging.
* When redrawing a combined UTF-8 characters in its existing position,nicm2017-03-06
| | | | | need to save and restore the cursor so that the next character goes into the right place.
* Scrolling at least needs to be flushed before sending EL to the terminalnicm2017-02-21
| | | | (but it is simpler to flush everything, so do that instead).
* Handle insert cells when cursor at edge of screen correctly, and do anicm2017-02-16
| | | | full flush before insert.
* Combining characters need a full flush.nicm2017-02-09
|
* When an ordinary (not collected) cell is received, we need to flush anynicm2017-02-09
| | | | delayed scrolling before drawing it.
* Add support for scroll up escape sequence (CSI S) and use it whennicm2017-02-08
| | | | possible instead of sending individual line feeds.
* Collect sequences of printable ASCII characters and process themnicm2017-02-08
| | | | | | | | | | | | | | | together instead of handling them one by one. This is significantly faster. Sequences are terminated when we reach the end of the line, fill the internal buffer, or a different character is seen by the input parser (an escape sequence, or UTF-8). Rather than writing collected sequences out immediately, hold them until it is necessary (another screen modification, or we consume all available data). This means we can discard changes that would have no effect (for example, lines that would just be scrolled off the screen or cleared). This reduces the total amount of data we write out to the terminal - not important for fast terminals, but a big help with slow (like xterm).
* Some other tidying bits.nicm2017-02-08
|
* Trying to avoid the occasional newline by saving the last cell on screennicm2017-02-08
| | | | | is not actually helping us much and just adds complexity, so don't bother.
* Add BCE for clear to start of screen, which was somehow missed.nicm2017-02-06
|
* Only redraw the modified character when adding combining characters, notnicm2017-02-06
| | | | the whole line.
* Fix setting the palette of aixterm colours (90-97).nicm2017-01-12
|
* Highlight all occurrences of search string after searching in copy mode.nicm2017-01-05
|
* Spacing nits.nicm2016-12-09
|
* Zero dirty count after flushing.nicm2016-10-18
|
* Add support for BCE (background colour erase). This makes various escapenicm2016-10-13
| | | | | | | | | | | | sequences (notable EL and ED but also IL, DL, ICH, DCH) create blank cells using the current background colour rather than the default colour. On modern systems BCE doesn't really have many benefits, but most other terminals now support it, some (lazy) applications rely on it, and it is not hard to include now that we have pane background colours anyway. Mostly written by Sean Haugh.
* Fix a couple of problems with insert mode: flush dirty cells before wenicm2016-10-12
| | | | | modify the screen, not after; and use grid_view_insert_cells to make space not grid_move_cells.
* Redraw selection in tty_draw_line, so it appears when redrawing wholenicm2016-10-12
| | | | pane. Reported by Theo Buehler.
* screen_write_copy tried to be clever and clear the line if it reachednicm2016-10-05
| | | | | | | the end of the source, but it was wrong and causes problems that are only showing up now we are more aggressive about skipping redundant screen updates. Remove the optimization entirely as more trouble than it is worth to fix (and it'll have to go when BCE is done anyway).
* Wrap some long lines in screen-write.c.nicm2016-10-05
|
* Check padding when writing any character with width > 1, in case theynicm2016-09-29
| | | | | overlap after the first character (for example with cells xy and ab, y is replacing a).
* Remember the number of lines scrolled into the history (versus clearednicm2016-09-02
| | | | | | into the history) and when resizing only use scrolled lines and not cleared lines (which are probably not intended to reappear). From Chaoren Lin.
* Don't update cells in each block of data read from a pane immediately,nicm2016-07-15
| | | | | | instead track them as change (dirty) and update them once at the end, saves much time if repeatedly writing the same cell. Also fix comparison of cells being equal in a few places (memcmp is not enough).
* Cache selected state so that cells going from selected to unselected are notnicm2016-06-06
| | | | skipped, reported by Omar Sandoval.
* Do not draw character to screen if it has not changed, and do not savenicm2016-05-30
| | | | | last character if it won't be used. This (and last few commits) prompted by a report from Hubert depesz Lubaczewski.
* Padding cell is always the same so use a static.nicm2016-05-27
|
* Break the save-last-cell code into a separate function (so it can benicm2016-05-27
| | | | called conditionally later).
* Make the grid_cell passed into screen_write_* const.nicm2016-04-29
|
* Clear RGB flags during selection.nicm2016-01-31
|
* I no longer use my SourceForge address so replace it.nicm2016-01-19
|
* Style nits and line wrapping of function declarations.nicm2015-12-11
|
* Partly revert previous, it is harmless to keep support for UTF-8 mousenicm2015-11-23
| | | | mode inside tmux, just no longer support it for tmux itself.
* Remove support for the UTF-8 mouse extension. This was a briefly used,nicm2015-11-23
| | | | | | | | poor idea that was fairly quickly replaced by SGR mouse input (which is now widespread). It is impossible to tell the difference between UTF-8 and non-UTF-8 mouse input; since the mouse-utf8 option was removed tmux has not handled it correctly in any case; and it is ridiculous to have three different forms of mouse input.
* Use __unused rather than rolling our own.nicm2015-11-18
|
* All these return values from utf8_* are confusing, use an enum.nicm2015-11-14
|
* Be more strict about invalid UTF-8.nicm2015-11-14
|
* Long overdue change to the way we store cells in the grid: now, insteadnicm2015-11-13
| | | | | | | | | | | | | | | of storing a full grid_cell with UTF-8 data and everything, store a new type grid_cell_entry. This can either be the cell itself (for ASCII cells), or an offset into an extended array (per line) for UTF-8 data. This avoid a large (8 byte) overhead on non-UTF-8 cells (by far the majority for most users) without the complexity of the shadow array we had before. Grid memory without any UTF-8 is about half. The disadvantage that cells can no longer be modified in place and need to be copied out of the grid and back but it turned out to be lot less complicated than I expected.
* Rename overly-long utf8data to ud throughout.nicm2015-11-12
|
* Nuke the utf8 and status-utf8 options and make tmux only a UTF-8nicm2015-11-12
| | | | | terminal. We still support non-UTF-8 terminals outside tmux, but inside it is always UTF-8 (as when the utf8 and status-utf8 options were on).