Mercurial > vim
view src/proto/misc1.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 | 0503955dcd34 |
children | 370543108ba1 |
line wrap: on
line source
/* misc1.c */ int get_leader_len(char_u *line, char_u **flags, int backward, int include_space); int get_last_leader_offset(char_u *line, char_u **flags); int plines(linenr_T lnum); int plines_win(win_T *wp, linenr_T lnum, int limit_winheight); int plines_nofill(linenr_T lnum); int plines_win_nofill(win_T *wp, linenr_T lnum, int limit_winheight); int plines_win_nofold(win_T *wp, linenr_T lnum); int plines_win_col(win_T *wp, linenr_T lnum, long column); int plines_m_win(win_T *wp, linenr_T first, linenr_T last, int limit_winheight); int gchar_pos(pos_T *pos); int gchar_cursor(void); void pchar_cursor(int c); char_u *skip_to_option_part(char_u *p); void check_status(buf_T *buf); int ask_yesno(char_u *str, int direct); void get_mode(char_u *buf); void f_mode(typval_T *argvars, typval_T *rettv); void f_state(typval_T *argvars, typval_T *rettv); int get_keystroke(void); int get_number(int colon, int *mouse_used); int prompt_for_number(int *mouse_used); void msgmore(long n); void beep_flush(void); void vim_beep(unsigned val); void init_homedir(void); void free_homedir(void); void free_users(void); void init_vimdir(void); char_u *expand_env_save(char_u *src); char_u *expand_env_save_opt(char_u *src, int one); void expand_env(char_u *src, char_u *dst, int dstlen); void expand_env_esc(char_u *srcp, char_u *dst, int dstlen, int esc, int one, char_u *startstr); char_u *vim_getenv(char_u *name, int *mustfree); void vim_unsetenv(char_u *var); void vim_unsetenv_ext(char_u *var); void vim_setenv_ext(char_u *name, char_u *val); void vim_setenv(char_u *name, char_u *val); char_u *get_env_name(expand_T *xp, int idx); char_u *get_users(expand_T *xp, int idx); int match_user(char_u *name); void preserve_exit(void); void line_breakcheck(void); void fast_breakcheck(void); void veryfast_breakcheck(void); char_u *get_cmd_output(char_u *cmd, char_u *infile, int flags, int *ret_len); void f_system(typval_T *argvars, typval_T *rettv); void f_systemlist(typval_T *argvars, typval_T *rettv); int goto_im(void); char_u *get_isolated_shell_name(void); int path_is_url(char_u *p); int path_with_url(char_u *fname); dict_T *get_v_event(save_v_event_T *sve); void restore_v_event(dict_T *v_event, save_v_event_T *sve); void may_trigger_modechanged(void); /* vim: set ft=c : */