Mercurial > vim
view src/proto/mbyte.pro @ 33083:79b2eb83f2df v9.0.1827
patch 9.0.1827: xxd: no color support
Commit: https://github.com/vim/vim/commit/e2528ae11134cdf35c312754b124aba4963d8054
Author: Aapo Rantalainen <aapo.rantalainen@gmail.com>
Date: Thu Aug 31 17:58:13 2023 +0200
patch 9.0.1827: xxd: no color support
Problem: xxd: no color support
Solution: Add color support using xxd -R
Add some basic color support for xxd
The hex-value and value are both colored with the same color depending
on the hex-value, e.g.:
0x00 = white
0xff = blue
printable = green
non-printable = red
tabs and linebreaks = yellow
Each character needs 11 more bytes to contain color. (Same color in a
row could contain only one overhead but the logic how xxd creates colums
must be then changed.) Size of colored output is increased by factor of
~6. Also grepping the output will break when colors is used.
Flag for color is "-R", because less uses "-R".
Color uses parameters auto,always,never same as less and grep (among
others).
E.g.
xxd -R always $FILE | less -R
Add some screen-tests (that currently on work on linux) to verify the
feature works as expected.
closes: #12131
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Aapo Rantalainen <aapo.rantalainen@gmail.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 31 Aug 2023 18:15:03 +0200 |
parents | f348559ce426 |
children | 95db67c7b754 |
line wrap: on
line source
/* mbyte.c */ int enc_canon_props(char_u *name); char *mb_init(void); int bomb_size(void); void remove_bom(char_u *s); int mb_get_class(char_u *p); int mb_get_class_buf(char_u *p, buf_T *buf); int dbcs_class(unsigned lead, unsigned trail); int latin_char2len(int c); int latin_char2bytes(int c, char_u *buf); int latin_ptr2len(char_u *p); int latin_ptr2len_len(char_u *p, int size); int utf_uint2cells(UINT32_T c); int utf_char2cells(int c); int latin_ptr2cells(char_u *p); int utf_ptr2cells(char_u *p); int dbcs_ptr2cells(char_u *p); int latin_ptr2cells_len(char_u *p, int size); int latin_char2cells(int c); int mb_string2cells(char_u *p, int len); int latin_off2cells(unsigned off, unsigned max_off); int dbcs_off2cells(unsigned off, unsigned max_off); int utf_off2cells(unsigned off, unsigned max_off); int latin_ptr2char(char_u *p); int utf_ptr2char(char_u *p); int mb_ptr2char_adv(char_u **pp); int mb_cptr2char_adv(char_u **pp); int utf_composinglike(char_u *p1, char_u *p2); int utfc_ptr2char(char_u *p, int *pcc); int utfc_ptr2char_len(char_u *p, int *pcc, int maxlen); int utfc_char2bytes(int off, char_u *buf); int utf_ptr2len(char_u *p); int utf_byte2len(int b); int utf_ptr2len_len(char_u *p, int size); int utfc_ptr2len(char_u *p); int utfc_ptr2len_len(char_u *p, int size); int utf_char2len(int c); int utf_char2bytes(int c, char_u *buf); int utf_iscomposing_uint(UINT32_T c); int utf_iscomposing(int c); int utf_printable(int c); int utf_class(int c); int utf_class_buf(int c, buf_T *buf); int utf_ambiguous_width(int c); int utf_fold(int a); int utf_toupper(int a); int utf_islower(int a); int utf_tolower(int a); int utf_isupper(int a); int mb_strnicmp(char_u *s1, char_u *s2, size_t nn); void show_utf8(void); int latin_head_off(char_u *base, char_u *p); int dbcs_screen_head_off(char_u *base, char_u *p); int utf_head_off(char_u *base, char_u *p); int utf_eat_space(int cc); int utf_allow_break_before(int cc); int utf_allow_break(int cc, int ncc); void mb_copy_char(char_u **fp, char_u **tp); int mb_off_next(char_u *base, char_u *p); int mb_tail_off(char_u *base, char_u *p); void utf_find_illegal(void); int utf_valid_string(char_u *s, char_u *end); int dbcs_screen_tail_off(char_u *base, char_u *p); void mb_adjust_cursor(void); void mb_adjustpos(buf_T *buf, pos_T *lp); char_u *mb_prevptr(char_u *line, char_u *p); int mb_charlen(char_u *str); int mb_charlen_len(char_u *str, int len); char_u *mb_unescape(char_u **pp); int mb_lefthalve(int row, int col); int mb_fix_col(int col, int row); char_u *enc_skip(char_u *p); char_u *enc_canonize(char_u *enc); char_u *enc_locale_env(char *locale); char_u *enc_locale(void); int encname2codepage(char_u *name); void *my_iconv_open(char_u *to, char_u *from); int iconv_enabled(int verbose); void iconv_end(void); void f_getimstatus(typval_T *argvars, typval_T *rettv); void f_iconv(typval_T *argvars, typval_T *rettv); int convert_setup(vimconv_T *vcp, char_u *from, char_u *to); int convert_setup_ext(vimconv_T *vcp, char_u *from, int from_unicode_is_utf8, char_u *to, int to_unicode_is_utf8); int convert_input(char_u *ptr, int len, int maxlen); int convert_input_safe(char_u *ptr, int len, int maxlen, char_u **restp, int *restlenp); char_u *string_convert(vimconv_T *vcp, char_u *ptr, int *lenp); char_u *string_convert_ext(vimconv_T *vcp, char_u *ptr, int *lenp, int *unconvlenp); void f_setcellwidths(typval_T *argvars, typval_T *rettv); void f_getcellwidths(typval_T *argvars, typval_T *rettv); void f_charclass(typval_T *argvars, typval_T *rettv); /* vim: set ft=c : */