summaryrefslogtreecommitdiffstats
path: root/utf8.c
AgeCommit message (Collapse)Author
2019-05-23Environment variables can start with { also.nicm
2019-05-23Break the argument escaping code into a separate function and use it tonicm
escape key bindings in list-keys. Also escape ~ and ; and $ properly.
2019-03-18Extend the #[] style syntax and use that together with previous formatnicm
changes to allow the status line to be entirely configured with a single option. Now that it is possible to configure their content, enable the existing code that lets the status line be multiple lines in height. The status option can now take a value of 2, 3, 4 or 5 (as well as the previous on or off) to configure more than one line. The new status-format array option configures the format of each line, the default just references the existing status-* options, although some of the more obscure status options may be eliminated in time. Additions to the #[] syntax are: "align" to specify alignment (left, centre, right), "list" for the window list and "range" to configure ranges of text for the mouse bindings. The "align" keyword can also be used to specify alignment of entries in tree mode and the pane status lines.
2017-06-04Remove unused variable.nicm
2017-06-04Be more strict about escape sequences that rename windows or set titles:nicm
ignore any that not valid UTF-8 outright, and for good measure pass the result through our UTF-8-aware vis(3).
2017-05-31Style and spacing nits.nicm
2017-03-17Fix a couple of argument types.nicm
2017-01-18Plain stravis() because it will mangle UTF-8 characters, so addnicm
utf8_stravis() which calls our existing utf8_strvis() and use it instead
2016-10-11Support UTF-8 entry into the command prompt.nicm
2016-05-27Most of the utf8_data is fixed so simplify utf8_set to use a memcpy.nicm
2016-04-29OpenBSD wcwidth() is sensible and complete so if it returns -1 it meansnicm
that a character is not printable, so return to ignoring such characters.
2016-04-27Loads of platforms appear to have old or broken Unicode character typenicm
information and are missing widths for relatively common Unicode characters (so mbtowc() works, but wcwidth() fails). So if wcwidth() returns -1, assume a width of 1 instead of ignoring the character.
2016-04-26Log wcwidth() and mbtowc() failure to make it easier to debug a Unicodenicm
codepoint not appearing.
2016-03-02Handle wcwidth() and mbtowc() failures in better style and dropnicm
characters where we can't find the width (wcwidth() fails) on input, the same as we drop invalid UTF-8. Suggested by schwarze@.
2016-03-01Use system wcwidth() instead of carrying around UTF-8 width tables.nicm
2016-01-31Whoops, need this for the previous reverse trim commit too.nicm
2016-01-19I no longer use my SourceForge address so replace it.nicm
2015-11-20Memory leaks and an uninitialized part of utf8_data, from Patrick Palka.nicm
2015-11-14The private use area at U+E000 to U+F8FF is not very useful if it isnicm
width 0, make it width 1 instead.
2015-11-14All these return values from utf8_* are confusing, use an enum.nicm
2015-11-14Rename a variable in utf8_combine for consistency and use 0xfffd fornicm
unknown Unicode.
2015-11-14Be more strict about invalid UTF-8.nicm
2015-11-13Long overdue change to the way we store cells in the grid: now, insteadnicm
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.
2015-11-12Rename overly-long utf8data to ud throughout.nicm
2015-11-12Add utf8_padcstr and use it to align columns in list-keys.nicm
2015-11-12Tidy utf8.c a little: build table on first use, and make utf8_width takenicm
a u_int rather than splitting and then combining again in utf8_split.
2015-11-12If we know the terminal outside tmux is not UTF-8, replace UTF-8 innicm
error messages and whatnot with underscores the same as we do when we draw UTF-8 characters as part of the screen.
2015-11-12Support UTF-8 key bindings by expanding the key type from int tonicm
uint64_t and converting UTF-8 to Unicode on input and the reverse on output. (This allows key bindings, there are still omissions - the largest being that the various prompts do not accept UTF-8.)
2015-11-05Update the internal wcwidth(3) table of tmux(1) to match the dataschwarze
in /usr/src/share/locale/ctype/en_US.UTF-8.src, with one single exception: Keep U+00AD SOFT HYPHEN at width 1 rather than moving it to width 0, a tradition already observed in the old https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c . While here, manually rebalance the btree for optimal lookup speed. OK nicm@
2015-04-20Style nit - unnecessary brackets.nicm
2014-10-08Add xreallocarray and remove nmemb argument from xrealloc.nicm
2014-04-17Add some UTF-8 utility functions and use them to prevent the width limitnicm
on formats from splitting UTF-8 characters improperly.
2014-04-17Some more long lines.nicm
2014-04-02Support UTF-8 with choose-buffer, from Kosuke ASAMI. Also makenicm
buffer_sample bigger to let it trim at window right edge.
2014-03-31In four byte UTF-8 sequences, only three bits of the first byte shouldnicm
be used. Fix from Koga Osamu.
2013-04-12Remove some Korean characters from the zero-width list that apparentlyNicholas Marriott
shouldn't be there, from Jeong Mok Cho.
2011-01-03Support for UTF-8 mouse input (\033[1005h). This was added in xterm 262Nicholas Marriott
and supports larger terminals than the older way. If the new mouse-utf8 option is on, UTF-8 mouse input is enabled for all UTF-8 terminals. The option defaults to on if LANG etc are set in the same manner as the utf8 option. With help and based on code from hsim at gmx.li.
2009-10-20%zu not %u, doh.Nicholas Marriott
2009-10-20Try to reduce the UTF-8 mess.Nicholas Marriott
Get rid of passing around u_char[4]s and define a struct utf8_data which has character data, size (sequence length) and width. Move UTF-8 character collection into two functions utf8_open/utf8_append in utf8.c which fill in this struct and use these functions from input.c and the various functions in screen-write.c. Space for rather more data than is necessary for one UTF-8 sequence is in the utf8_data struct because screen_write_copy is still nasty and needs to reinject the character (after combining) into screen_write_cell.
2009-06-25Miscellaneous unused functions, including one which was basically aNicholas Marriott
duplicate. Found by lint.
2009-06-24Constify utf8_width() function argument.Nicholas Marriott
2009-06-01Import tmux, a terminal multiplexor allowing (among other things) a singleNicholas Marriott
terminal to be switched between several different windows and programs displayed on one terminal be detached from one terminal and moved to another. ok deraadt pirofti