├── README.md ├── autoload └── vimstreamer.vim ├── plugin └── vimstreamer.vim ├── syntax ├── vimstreamer_4096.vim ├── vimstreamer_plan9.vim └── vimstreamer_websafe.vim ├── vimstreamer.gif └── vimstreamer └── main.go /README.md: -------------------------------------------------------------------------------- 1 | # vim-vimstreamer 2 | 3 | Vim + GStreamer = VimStreamer 4 | 5 | ![VimStreamer](https://raw.githubusercontent.com/mattn/vim-vimstreamer/master/vimstreamer.gif) 6 | 7 | ## Usage 8 | 9 | Open file selector to play video. 10 | ``` 11 | :VimStreamerBrowse 12 | ``` 13 | 14 | Open video file. 15 | ``` 16 | :VimStreamerOpen [filename] 17 | ``` 18 | 19 | Start Gstreamer 20 | ``` 21 | :VimStreamer [gstreamer queries] 22 | ``` 23 | 24 | ## Requirements 25 | 26 | * gstreamer 27 | 28 | ## License 29 | 30 | MIT 31 | 32 | ## Author 33 | 34 | Yasuhiro Matsumoto 35 | -------------------------------------------------------------------------------- /autoload/vimstreamer.vim: -------------------------------------------------------------------------------- 1 | let s:bin = expand(':h:h') . '/vimstreamer/vimstreamer' 2 | if has('win32') 3 | let s:bin = fnamemodify(s:bin, ':p:gs!/!\\!') . '.exe' 4 | endif 5 | 6 | function! s:zoomIn() 7 | let l:fsize = substitute(&guifont, '^.*:h\([^:]*\).*$', '\1', '') 8 | let l:fsize += 1 9 | let l:guifont = substitute(&guifont, ':h\([^:]*\)', ':h' . l:fsize, '') 10 | let &guifont = l:guifont 11 | endfunction 12 | 13 | " guifont size - 1 14 | function! s:zoomOut() 15 | let l:fsize = substitute(&guifont, '^.*:h\([^:]*\).*$', '\1', '') 16 | let l:fsize -= 1 17 | let l:guifont = substitute(&guifont, ':h\([^:]*\)', ':h' . l:fsize, '') 18 | let &guifont = l:guifont 19 | endfunction 20 | 21 | function! vimstreamer#complete(arglead, cmdline, cmdpos) 22 | let ret = [] 23 | let args = split(a:cmdline[:a:cmdpos], '\s', 1)[1:-2] 24 | if len(args) == 0 25 | let mx = '^\S\+:\s\+\zs\S\+\ze:' 26 | for i in split(system('gst-inspect-1.0'), "\n") 27 | if i !~ mx 28 | continue 29 | endif 30 | let src = matchstr(i, mx) 31 | if src !~ 'src$' 32 | continue 33 | endif 34 | call add(ret, src) 35 | endfor 36 | else 37 | let lines = split(system('gst-inspect-1.0 ' . args[0]), "\n") 38 | let pos = index(lines, 'Element Properties:') 39 | if pos >= 0 40 | let lines = lines[pos+1:] 41 | endif 42 | let mx = '^\s\+\zs\S\+\ze\s\+:' 43 | for i in lines 44 | if i !~ mx 45 | continue 46 | endif 47 | call add(ret, matchstr(i, mx)) 48 | endfor 49 | endif 50 | return filter(ret, 'stridx(v:val,a:arglead)==0') 51 | endfunction 52 | 53 | function! vimstreamer#open(f) 54 | let f = 'filesrc location=' . fnameescape(fnamemodify(a:f, ':p:gs!\\!/!')) 55 | call vimstreamer#start(f) 56 | endfunction 57 | 58 | function! vimstreamer#browse() 59 | let f = browse(0, 'play', '.', '') 60 | if empty(f) 61 | return 62 | endif 63 | let f = 'filesrc location=' . fnameescape(fnamemodify(f, ':p:gs!\\!/!')) 64 | call vimstreamer#start(f) 65 | endfunction 66 | 67 | function! vimstreamer#start(...) 68 | if has_key(s:, 'server_job') 69 | echom "Now Runninng..." 70 | return 71 | endif 72 | 73 | if !filereadable(s:bin) 74 | echom "Building server..." 75 | call system(printf('cd "%s" && go get -u -d && go build', fnamemodify(s:bin, ':h'))) 76 | endif 77 | 78 | silent new __VimStreamer__ 79 | only! 80 | setlocal buftype=nofile bufhidden=wipe 81 | let cmodel = get(g:, 'vimstreamer_colormodel', 'websafe') 82 | if index(['plan9', 'websafe', '4096'], cmodel) == -1 83 | let cmodel = '4096' 84 | endif 85 | let &ft='vimstreamer_' . cmodel 86 | let [ 87 | \ s:old_guifont, 88 | \ s:old_linespace, 89 | \ s:old_lazyredraw, 90 | \ s:old_columns, 91 | \ s:old_lines, 92 | \ s:old_renderoptions, 93 | \ _ 94 | \] = [ 95 | \ &guifont, 96 | \ &linespace, 97 | \ &lazyredraw, 98 | \ &columns, 99 | \ &lines, 100 | \ &renderoptions, 101 | \ 0 102 | \] 103 | autocmd BufWipeout __VimStreamer__ call vimstreamer#stop() 104 | 105 | if has('gui_running') 106 | if has('win32') 107 | "set guifont=MS_Gothic:h4 linespace=4 nolazyredraw columns=195 lines=52 renderoptions= 108 | set guifont=Terminal:h4 linespace=4 nolazyredraw columns=195 lines=52 renderoptions= 109 | else 110 | set guifont=Courier\ 10\ Pitch\ 2 linespace=4 lazyredraw columns=195 lines=52 111 | endif 112 | nnoremap + :call zoomIn() 113 | nnoremap - :call zoomOut() 114 | endif 115 | 116 | nnoremap q :bw 117 | 118 | let s:buf = '' 119 | let args = [&shell, &shellcmdflag, join(['gst-launch-1.0']+a:000+[ 120 | \ '!', 'decodebin', 121 | \ '!', 'videoscale', 122 | \ '!', 'video/x-raw,width=320,height=240', 123 | \ '!', 'jpegenc', 124 | \ '!', 'multipartmux', 125 | \ '!', 'tcpserversink', 'host=127.0.0.1', 'port=3000' 126 | \ ], ' ')] 127 | let s:gstreamer_job = job_start(args, { 128 | \ 'out_cb': function('s:err_cb'), 129 | \ 'err_cb': function('s:err_cb') 130 | \}) 131 | let s:server_job = job_start([s:bin, '-w=64', '-h=48', '-c=' . cmodel], { 132 | \ 'out_cb': function('s:out_cb'), 133 | \ 'err_cb': function('s:err_cb') 134 | \}) 135 | let s:timer = timer_start(60, {->execute('redraw', 1)}, {'repeat': -1}) 136 | endfunction 137 | 138 | function! vimstreamer#stop() 139 | if has_key(s:, 'gstreamer_job') 140 | call job_stop(s:gstreamer_job) 141 | unlet s:gstreamer_job 142 | endif 143 | if has_key(s:, 'server_job') 144 | call job_stop(s:server_job) 145 | unlet s:server_job 146 | endif 147 | if has_key(s:, 'timer') 148 | call timer_stop(s:timer) 149 | unlet s:timer 150 | endif 151 | let [ 152 | \ &guifont, 153 | \ &linespace, 154 | \ &lazyredraw, 155 | \ &columns, 156 | \ &lines, 157 | \ &renderoptions, 158 | \ _ 159 | \] = [ 160 | \ s:old_guifont, 161 | \ s:old_linespace, 162 | \ s:old_lazyredraw, 163 | \ s:old_columns, 164 | \ s:old_lines, 165 | \ s:old_renderoptions, 166 | \ 0 167 | \] 168 | endfunction 169 | 170 | function! s:err_cb(ch, msg) 171 | for m in split(a:msg, "\n") 172 | echomsg m 173 | endfor 174 | endfunction 175 | 176 | function! s:out_cb(ch, msg) 177 | let s:buf .= a:msg . "\n" 178 | let pos = stridx(s:buf, "\x0c") 179 | if pos >= 0 180 | let mode = mode() 181 | let oldnr = winnr() 182 | let winnr = bufwinnr('__VimStreamer__') 183 | if winnr == -1 184 | return 185 | endif 186 | if oldnr != winnr 187 | silent! exec winnr.'wincmd w' 188 | endif 189 | let s = split(s:buf[:pos-1], "\n") 190 | silent! call setline(1, s) 191 | let s:buf = s:buf[pos+1:] 192 | if oldnr != winnr 193 | silent! exec oldnr.'wincmd w' 194 | endif 195 | if mode =~# '[sSvV]' 196 | silent! normal gv 197 | endif 198 | if mode !~# '[cC]' 199 | "redraw 200 | "call timer_start(10, {->execute('redraw', 1)}) 201 | endif 202 | endif 203 | endfunction 204 | -------------------------------------------------------------------------------- /plugin/vimstreamer.vim: -------------------------------------------------------------------------------- 1 | if !executable('gst-launch-1.0') 2 | finish 3 | endif 4 | 5 | command! -nargs=* -complete=customlist,vimstreamer#complete VimStreamer call vimstreamer#start() 6 | command! -nargs=0 WebCam call vimstreamer#start('ksvideosrc', 'device-index=0') 7 | if exists("*browse") 8 | command! VimStreamerBrowse call vimstreamer#browse() 9 | endif 10 | command! -nargs=1 -complete=file VimStreamerOpen call vimstreamer#open() 11 | -------------------------------------------------------------------------------- /syntax/vimstreamer_plan9.vim: -------------------------------------------------------------------------------- 1 | for i in range(256) 2 | exe printf('syn match X%02X /#%02X/', i, i) 3 | endfor 4 | 5 | hi X00 ctermfg=0 ctermbg=0 guifg=#000000 guibg=#000000 6 | hi X01 ctermfg=1 ctermbg=1 guifg=#000044 guibg=#000044 7 | hi X02 ctermfg=1 ctermbg=1 guifg=#000088 guibg=#000088 8 | hi X03 ctermfg=9 ctermbg=9 guifg=#0000CC guibg=#0000CC 9 | hi X04 ctermfg=2 ctermbg=2 guifg=#004400 guibg=#004400 10 | hi X05 ctermfg=3 ctermbg=3 guifg=#004444 guibg=#004444 11 | hi X06 ctermfg=3 ctermbg=3 guifg=#004488 guibg=#004488 12 | hi X07 ctermfg=9 ctermbg=9 guifg=#0044CC guibg=#0044CC 13 | hi X08 ctermfg=2 ctermbg=2 guifg=#008800 guibg=#008800 14 | hi X09 ctermfg=3 ctermbg=3 guifg=#008844 guibg=#008844 15 | hi X0A ctermfg=3 ctermbg=3 guifg=#008888 guibg=#008888 16 | hi X0B ctermfg=3 ctermbg=3 guifg=#0088CC guibg=#0088CC 17 | hi X0C ctermfg=10 ctermbg=10 guifg=#00CC00 guibg=#00CC00 18 | hi X0D ctermfg=10 ctermbg=10 guifg=#00CC44 guibg=#00CC44 19 | hi X0E ctermfg=3 ctermbg=3 guifg=#00CC88 guibg=#00CC88 20 | hi X0F ctermfg=11 ctermbg=11 guifg=#00CCCC guibg=#00CCCC 21 | hi X10 ctermfg=11 ctermbg=11 guifg=#00DDDD guibg=#00DDDD 22 | hi X11 ctermfg=0 ctermbg=0 guifg=#111111 guibg=#111111 23 | hi X12 ctermfg=1 ctermbg=1 guifg=#000055 guibg=#000055 24 | hi X13 ctermfg=1 ctermbg=1 guifg=#000099 guibg=#000099 25 | hi X14 ctermfg=9 ctermbg=9 guifg=#0000DD guibg=#0000DD 26 | hi X15 ctermfg=2 ctermbg=2 guifg=#005500 guibg=#005500 27 | hi X16 ctermfg=3 ctermbg=3 guifg=#005555 guibg=#005555 28 | hi X17 ctermfg=3 ctermbg=3 guifg=#004C99 guibg=#004C99 29 | hi X18 ctermfg=9 ctermbg=9 guifg=#0049DD guibg=#0049DD 30 | hi X19 ctermfg=2 ctermbg=2 guifg=#009900 guibg=#009900 31 | hi X1A ctermfg=3 ctermbg=3 guifg=#00994C guibg=#00994C 32 | hi X1B ctermfg=3 ctermbg=3 guifg=#009999 guibg=#009999 33 | hi X1C ctermfg=3 ctermbg=3 guifg=#0093DD guibg=#0093DD 34 | hi X1D ctermfg=10 ctermbg=10 guifg=#00DD00 guibg=#00DD00 35 | hi X1E ctermfg=10 ctermbg=10 guifg=#00DD49 guibg=#00DD49 36 | hi X1F ctermfg=3 ctermbg=3 guifg=#00DD93 guibg=#00DD93 37 | hi X20 ctermfg=11 ctermbg=11 guifg=#00EE9E guibg=#00EE9E 38 | hi X21 ctermfg=11 ctermbg=11 guifg=#00EEEE guibg=#00EEEE 39 | hi X22 ctermfg=0 ctermbg=0 guifg=#222222 guibg=#222222 40 | hi X23 ctermfg=1 ctermbg=1 guifg=#000066 guibg=#000066 41 | hi X24 ctermfg=1 ctermbg=1 guifg=#0000AA guibg=#0000AA 42 | hi X25 ctermfg=9 ctermbg=9 guifg=#0000EE guibg=#0000EE 43 | hi X26 ctermfg=2 ctermbg=2 guifg=#006600 guibg=#006600 44 | hi X27 ctermfg=3 ctermbg=3 guifg=#006666 guibg=#006666 45 | hi X28 ctermfg=3 ctermbg=3 guifg=#0055AA guibg=#0055AA 46 | hi X29 ctermfg=9 ctermbg=9 guifg=#004FEE guibg=#004FEE 47 | hi X2A ctermfg=2 ctermbg=2 guifg=#00AA00 guibg=#00AA00 48 | hi X2B ctermfg=3 ctermbg=3 guifg=#00AA55 guibg=#00AA55 49 | hi X2C ctermfg=3 ctermbg=3 guifg=#00AAAA guibg=#00AAAA 50 | hi X2D ctermfg=11 ctermbg=11 guifg=#009EEE guibg=#009EEE 51 | hi X2E ctermfg=10 ctermbg=10 guifg=#00EE00 guibg=#00EE00 52 | hi X2F ctermfg=10 ctermbg=10 guifg=#00EE4F guibg=#00EE4F 53 | hi X30 ctermfg=10 ctermbg=10 guifg=#00FF55 guibg=#00FF55 54 | hi X31 ctermfg=11 ctermbg=11 guifg=#00FFAA guibg=#00FFAA 55 | hi X32 ctermfg=11 ctermbg=11 guifg=#00FFFF guibg=#00FFFF 56 | hi X33 ctermfg=0 ctermbg=0 guifg=#333333 guibg=#333333 57 | hi X34 ctermfg=1 ctermbg=1 guifg=#000077 guibg=#000077 58 | hi X35 ctermfg=1 ctermbg=1 guifg=#0000BB guibg=#0000BB 59 | hi X36 ctermfg=9 ctermbg=9 guifg=#0000FF guibg=#0000FF 60 | hi X37 ctermfg=2 ctermbg=2 guifg=#007700 guibg=#007700 61 | hi X38 ctermfg=3 ctermbg=3 guifg=#007777 guibg=#007777 62 | hi X39 ctermfg=3 ctermbg=3 guifg=#005DBB guibg=#005DBB 63 | hi X3A ctermfg=9 ctermbg=9 guifg=#0055FF guibg=#0055FF 64 | hi X3B ctermfg=2 ctermbg=2 guifg=#00BB00 guibg=#00BB00 65 | hi X3C ctermfg=3 ctermbg=3 guifg=#00BB5D guibg=#00BB5D 66 | hi X3D ctermfg=3 ctermbg=3 guifg=#00BBBB guibg=#00BBBB 67 | hi X3E ctermfg=11 ctermbg=11 guifg=#00AAFF guibg=#00AAFF 68 | hi X3F ctermfg=10 ctermbg=10 guifg=#00FF00 guibg=#00FF00 69 | hi X40 ctermfg=5 ctermbg=5 guifg=#440044 guibg=#440044 70 | hi X41 ctermfg=5 ctermbg=5 guifg=#440088 guibg=#440088 71 | hi X42 ctermfg=9 ctermbg=9 guifg=#4400CC guibg=#4400CC 72 | hi X43 ctermfg=6 ctermbg=6 guifg=#444400 guibg=#444400 73 | hi X44 ctermfg=8 ctermbg=8 guifg=#444444 guibg=#444444 74 | hi X45 ctermfg=8 ctermbg=8 guifg=#444488 guibg=#444488 75 | hi X46 ctermfg=9 ctermbg=9 guifg=#4444CC guibg=#4444CC 76 | hi X47 ctermfg=6 ctermbg=6 guifg=#448800 guibg=#448800 77 | hi X48 ctermfg=8 ctermbg=8 guifg=#448844 guibg=#448844 78 | hi X49 ctermfg=8 ctermbg=8 guifg=#448888 guibg=#448888 79 | hi X4A ctermfg=8 ctermbg=8 guifg=#4488CC guibg=#4488CC 80 | hi X4B ctermfg=10 ctermbg=10 guifg=#44CC00 guibg=#44CC00 81 | hi X4C ctermfg=10 ctermbg=10 guifg=#44CC44 guibg=#44CC44 82 | hi X4D ctermfg=8 ctermbg=8 guifg=#44CC88 guibg=#44CC88 83 | hi X4E ctermfg=7 ctermbg=7 guifg=#44CCCC guibg=#44CCCC 84 | hi X4F ctermfg=4 ctermbg=4 guifg=#440000 guibg=#440000 85 | hi X50 ctermfg=4 ctermbg=4 guifg=#550000 guibg=#550000 86 | hi X51 ctermfg=5 ctermbg=5 guifg=#550055 guibg=#550055 87 | hi X52 ctermfg=5 ctermbg=5 guifg=#4C0099 guibg=#4C0099 88 | hi X53 ctermfg=9 ctermbg=9 guifg=#4900DD guibg=#4900DD 89 | hi X54 ctermfg=6 ctermbg=6 guifg=#555500 guibg=#555500 90 | hi X55 ctermfg=8 ctermbg=8 guifg=#555555 guibg=#555555 91 | hi X56 ctermfg=8 ctermbg=8 guifg=#4C4C99 guibg=#4C4C99 92 | hi X57 ctermfg=9 ctermbg=9 guifg=#4949DD guibg=#4949DD 93 | hi X58 ctermfg=6 ctermbg=6 guifg=#4C9900 guibg=#4C9900 94 | hi X59 ctermfg=8 ctermbg=8 guifg=#4C994C guibg=#4C994C 95 | hi X5A ctermfg=8 ctermbg=8 guifg=#4C9999 guibg=#4C9999 96 | hi X5B ctermfg=8 ctermbg=8 guifg=#4993DD guibg=#4993DD 97 | hi X5C ctermfg=10 ctermbg=10 guifg=#49DD00 guibg=#49DD00 98 | hi X5D ctermfg=10 ctermbg=10 guifg=#49DD49 guibg=#49DD49 99 | hi X5E ctermfg=8 ctermbg=8 guifg=#49DD93 guibg=#49DD93 100 | hi X5F ctermfg=11 ctermbg=11 guifg=#49DDDD guibg=#49DDDD 101 | hi X60 ctermfg=11 ctermbg=11 guifg=#4FEEEE guibg=#4FEEEE 102 | hi X61 ctermfg=4 ctermbg=4 guifg=#660000 guibg=#660000 103 | hi X62 ctermfg=5 ctermbg=5 guifg=#660066 guibg=#660066 104 | hi X63 ctermfg=5 ctermbg=5 guifg=#5500AA guibg=#5500AA 105 | hi X64 ctermfg=9 ctermbg=9 guifg=#4F00EE guibg=#4F00EE 106 | hi X65 ctermfg=6 ctermbg=6 guifg=#666600 guibg=#666600 107 | hi X66 ctermfg=8 ctermbg=8 guifg=#666666 guibg=#666666 108 | hi X67 ctermfg=8 ctermbg=8 guifg=#5555AA guibg=#5555AA 109 | hi X68 ctermfg=9 ctermbg=9 guifg=#4F4FEE guibg=#4F4FEE 110 | hi X69 ctermfg=6 ctermbg=6 guifg=#55AA00 guibg=#55AA00 111 | hi X6A ctermfg=8 ctermbg=8 guifg=#55AA55 guibg=#55AA55 112 | hi X6B ctermfg=8 ctermbg=8 guifg=#55AAAA guibg=#55AAAA 113 | hi X6C ctermfg=8 ctermbg=8 guifg=#4F9EEE guibg=#4F9EEE 114 | hi X6D ctermfg=10 ctermbg=10 guifg=#4FEE00 guibg=#4FEE00 115 | hi X6E ctermfg=10 ctermbg=10 guifg=#4FEE4F guibg=#4FEE4F 116 | hi X6F ctermfg=8 ctermbg=8 guifg=#4FEE9E guibg=#4FEE9E 117 | hi X70 ctermfg=11 ctermbg=11 guifg=#55FFAA guibg=#55FFAA 118 | hi X71 ctermfg=11 ctermbg=11 guifg=#55FFFF guibg=#55FFFF 119 | hi X72 ctermfg=4 ctermbg=4 guifg=#770000 guibg=#770000 120 | hi X73 ctermfg=5 ctermbg=5 guifg=#770077 guibg=#770077 121 | hi X74 ctermfg=5 ctermbg=5 guifg=#5D00BB guibg=#5D00BB 122 | hi X75 ctermfg=9 ctermbg=9 guifg=#5500FF guibg=#5500FF 123 | hi X76 ctermfg=6 ctermbg=6 guifg=#777700 guibg=#777700 124 | hi X77 ctermfg=8 ctermbg=8 guifg=#777777 guibg=#777777 125 | hi X78 ctermfg=8 ctermbg=8 guifg=#5D5DBB guibg=#5D5DBB 126 | hi X79 ctermfg=9 ctermbg=9 guifg=#5555FF guibg=#5555FF 127 | hi X7A ctermfg=6 ctermbg=6 guifg=#5DBB00 guibg=#5DBB00 128 | hi X7B ctermfg=8 ctermbg=8 guifg=#5DBB5D guibg=#5DBB5D 129 | hi X7C ctermfg=7 ctermbg=7 guifg=#5DBBBB guibg=#5DBBBB 130 | hi X7D ctermfg=11 ctermbg=11 guifg=#55AAFF guibg=#55AAFF 131 | hi X7E ctermfg=10 ctermbg=10 guifg=#55FF00 guibg=#55FF00 132 | hi X7F ctermfg=10 ctermbg=10 guifg=#55FF55 guibg=#55FF55 133 | hi X80 ctermfg=5 ctermbg=5 guifg=#880088 guibg=#880088 134 | hi X81 ctermfg=5 ctermbg=5 guifg=#8800CC guibg=#8800CC 135 | hi X82 ctermfg=6 ctermbg=6 guifg=#884400 guibg=#884400 136 | hi X83 ctermfg=8 ctermbg=8 guifg=#884444 guibg=#884444 137 | hi X84 ctermfg=8 ctermbg=8 guifg=#884488 guibg=#884488 138 | hi X85 ctermfg=8 ctermbg=8 guifg=#8844CC guibg=#8844CC 139 | hi X86 ctermfg=6 ctermbg=6 guifg=#888800 guibg=#888800 140 | hi X87 ctermfg=8 ctermbg=8 guifg=#888844 guibg=#888844 141 | hi X88 ctermfg=8 ctermbg=8 guifg=#888888 guibg=#888888 142 | hi X89 ctermfg=8 ctermbg=8 guifg=#8888CC guibg=#8888CC 143 | hi X8A ctermfg=6 ctermbg=6 guifg=#88CC00 guibg=#88CC00 144 | hi X8B ctermfg=8 ctermbg=8 guifg=#88CC44 guibg=#88CC44 145 | hi X8C ctermfg=8 ctermbg=8 guifg=#88CC88 guibg=#88CC88 146 | hi X8D ctermfg=7 ctermbg=7 guifg=#88CCCC guibg=#88CCCC 147 | hi X8E ctermfg=4 ctermbg=4 guifg=#880000 guibg=#880000 148 | hi X8F ctermfg=5 ctermbg=5 guifg=#880044 guibg=#880044 149 | hi X90 ctermfg=5 ctermbg=5 guifg=#99004C guibg=#99004C 150 | hi X91 ctermfg=5 ctermbg=5 guifg=#990099 guibg=#990099 151 | hi X92 ctermfg=5 ctermbg=5 guifg=#9300DD guibg=#9300DD 152 | hi X93 ctermfg=6 ctermbg=6 guifg=#994C00 guibg=#994C00 153 | hi X94 ctermfg=8 ctermbg=8 guifg=#994C4C guibg=#994C4C 154 | hi X95 ctermfg=8 ctermbg=8 guifg=#994C99 guibg=#994C99 155 | hi X96 ctermfg=8 ctermbg=8 guifg=#9349DD guibg=#9349DD 156 | hi X97 ctermfg=6 ctermbg=6 guifg=#999900 guibg=#999900 157 | hi X98 ctermfg=8 ctermbg=8 guifg=#99994C guibg=#99994C 158 | hi X99 ctermfg=8 ctermbg=8 guifg=#999999 guibg=#999999 159 | hi X9A ctermfg=7 ctermbg=7 guifg=#9393DD guibg=#9393DD 160 | hi X9B ctermfg=6 ctermbg=6 guifg=#93DD00 guibg=#93DD00 161 | hi X9C ctermfg=8 ctermbg=8 guifg=#93DD49 guibg=#93DD49 162 | hi X9D ctermfg=7 ctermbg=7 guifg=#93DD93 guibg=#93DD93 163 | hi X9E ctermfg=7 ctermbg=7 guifg=#93DDDD guibg=#93DDDD 164 | hi X9F ctermfg=4 ctermbg=4 guifg=#990000 guibg=#990000 165 | hi XA0 ctermfg=4 ctermbg=4 guifg=#AA0000 guibg=#AA0000 166 | hi XA1 ctermfg=5 ctermbg=5 guifg=#AA0055 guibg=#AA0055 167 | hi XA2 ctermfg=5 ctermbg=5 guifg=#AA00AA guibg=#AA00AA 168 | hi XA3 ctermfg=13 ctermbg=13 guifg=#9E00EE guibg=#9E00EE 169 | hi XA4 ctermfg=6 ctermbg=6 guifg=#AA5500 guibg=#AA5500 170 | hi XA5 ctermfg=8 ctermbg=8 guifg=#AA5555 guibg=#AA5555 171 | hi XA6 ctermfg=8 ctermbg=8 guifg=#AA55AA guibg=#AA55AA 172 | hi XA7 ctermfg=8 ctermbg=8 guifg=#9E4FEE guibg=#9E4FEE 173 | hi XA8 ctermfg=6 ctermbg=6 guifg=#AAAA00 guibg=#AAAA00 174 | hi XA9 ctermfg=8 ctermbg=8 guifg=#AAAA55 guibg=#AAAA55 175 | hi XAA ctermfg=7 ctermbg=7 guifg=#AAAAAA guibg=#AAAAAA 176 | hi XAB ctermfg=7 ctermbg=7 guifg=#9E9EEE guibg=#9E9EEE 177 | hi XAC ctermfg=14 ctermbg=14 guifg=#9EEE00 guibg=#9EEE00 178 | hi XAD ctermfg=8 ctermbg=8 guifg=#9EEE4F guibg=#9EEE4F 179 | hi XAE ctermfg=7 ctermbg=7 guifg=#9EEE9E guibg=#9EEE9E 180 | hi XAF ctermfg=7 ctermbg=7 guifg=#9EEEEE guibg=#9EEEEE 181 | hi XB0 ctermfg=15 ctermbg=15 guifg=#AAFFFF guibg=#AAFFFF 182 | hi XB1 ctermfg=4 ctermbg=4 guifg=#BB0000 guibg=#BB0000 183 | hi XB2 ctermfg=5 ctermbg=5 guifg=#BB005D guibg=#BB005D 184 | hi XB3 ctermfg=5 ctermbg=5 guifg=#BB00BB guibg=#BB00BB 185 | hi XB4 ctermfg=13 ctermbg=13 guifg=#AA00FF guibg=#AA00FF 186 | hi XB5 ctermfg=6 ctermbg=6 guifg=#BB5D00 guibg=#BB5D00 187 | hi XB6 ctermfg=8 ctermbg=8 guifg=#BB5D5D guibg=#BB5D5D 188 | hi XB7 ctermfg=7 ctermbg=7 guifg=#BB5DBB guibg=#BB5DBB 189 | hi XB8 ctermfg=13 ctermbg=13 guifg=#AA55FF guibg=#AA55FF 190 | hi XB9 ctermfg=6 ctermbg=6 guifg=#BBBB00 guibg=#BBBB00 191 | hi XBA ctermfg=7 ctermbg=7 guifg=#BBBB5D guibg=#BBBB5D 192 | hi XBB ctermfg=7 ctermbg=7 guifg=#BBBBBB guibg=#BBBBBB 193 | hi XBC ctermfg=7 ctermbg=7 guifg=#AAAAFF guibg=#AAAAFF 194 | hi XBD ctermfg=14 ctermbg=14 guifg=#AAFF00 guibg=#AAFF00 195 | hi XBE ctermfg=14 ctermbg=14 guifg=#AAFF55 guibg=#AAFF55 196 | hi XBF ctermfg=7 ctermbg=7 guifg=#AAFFAA guibg=#AAFFAA 197 | hi XC0 ctermfg=13 ctermbg=13 guifg=#CC00CC guibg=#CC00CC 198 | hi XC1 ctermfg=12 ctermbg=12 guifg=#CC4400 guibg=#CC4400 199 | hi XC2 ctermfg=12 ctermbg=12 guifg=#CC4444 guibg=#CC4444 200 | hi XC3 ctermfg=8 ctermbg=8 guifg=#CC4488 guibg=#CC4488 201 | hi XC4 ctermfg=7 ctermbg=7 guifg=#CC44CC guibg=#CC44CC 202 | hi XC5 ctermfg=6 ctermbg=6 guifg=#CC8800 guibg=#CC8800 203 | hi XC6 ctermfg=8 ctermbg=8 guifg=#CC8844 guibg=#CC8844 204 | hi XC7 ctermfg=8 ctermbg=8 guifg=#CC8888 guibg=#CC8888 205 | hi XC8 ctermfg=7 ctermbg=7 guifg=#CC88CC guibg=#CC88CC 206 | hi XC9 ctermfg=14 ctermbg=14 guifg=#CCCC00 guibg=#CCCC00 207 | hi XCA ctermfg=7 ctermbg=7 guifg=#CCCC44 guibg=#CCCC44 208 | hi XCB ctermfg=7 ctermbg=7 guifg=#CCCC88 guibg=#CCCC88 209 | hi XCC ctermfg=7 ctermbg=7 guifg=#CCCCCC guibg=#CCCCCC 210 | hi XCD ctermfg=12 ctermbg=12 guifg=#CC0000 guibg=#CC0000 211 | hi XCE ctermfg=12 ctermbg=12 guifg=#CC0044 guibg=#CC0044 212 | hi XCF ctermfg=5 ctermbg=5 guifg=#CC0088 guibg=#CC0088 213 | hi XD0 ctermfg=5 ctermbg=5 guifg=#DD0093 guibg=#DD0093 214 | hi XD1 ctermfg=13 ctermbg=13 guifg=#DD00DD guibg=#DD00DD 215 | hi XD2 ctermfg=12 ctermbg=12 guifg=#DD4900 guibg=#DD4900 216 | hi XD3 ctermfg=12 ctermbg=12 guifg=#DD4949 guibg=#DD4949 217 | hi XD4 ctermfg=8 ctermbg=8 guifg=#DD4993 guibg=#DD4993 218 | hi XD5 ctermfg=13 ctermbg=13 guifg=#DD49DD guibg=#DD49DD 219 | hi XD6 ctermfg=6 ctermbg=6 guifg=#DD9300 guibg=#DD9300 220 | hi XD7 ctermfg=8 ctermbg=8 guifg=#DD9349 guibg=#DD9349 221 | hi XD8 ctermfg=7 ctermbg=7 guifg=#DD9393 guibg=#DD9393 222 | hi XD9 ctermfg=7 ctermbg=7 guifg=#DD93DD guibg=#DD93DD 223 | hi XDA ctermfg=14 ctermbg=14 guifg=#DDDD00 guibg=#DDDD00 224 | hi XDB ctermfg=14 ctermbg=14 guifg=#DDDD49 guibg=#DDDD49 225 | hi XDC ctermfg=7 ctermbg=7 guifg=#DDDD93 guibg=#DDDD93 226 | hi XDD ctermfg=7 ctermbg=7 guifg=#DDDDDD guibg=#DDDDDD 227 | hi XDE ctermfg=12 ctermbg=12 guifg=#DD0000 guibg=#DD0000 228 | hi XDF ctermfg=12 ctermbg=12 guifg=#DD0049 guibg=#DD0049 229 | hi XE0 ctermfg=12 ctermbg=12 guifg=#EE004F guibg=#EE004F 230 | hi XE1 ctermfg=13 ctermbg=13 guifg=#EE009E guibg=#EE009E 231 | hi XE2 ctermfg=13 ctermbg=13 guifg=#EE00EE guibg=#EE00EE 232 | hi XE3 ctermfg=12 ctermbg=12 guifg=#EE4F00 guibg=#EE4F00 233 | hi XE4 ctermfg=12 ctermbg=12 guifg=#EE4F4F guibg=#EE4F4F 234 | hi XE5 ctermfg=8 ctermbg=8 guifg=#EE4F9E guibg=#EE4F9E 235 | hi XE6 ctermfg=13 ctermbg=13 guifg=#EE4FEE guibg=#EE4FEE 236 | hi XE7 ctermfg=14 ctermbg=14 guifg=#EE9E00 guibg=#EE9E00 237 | hi XE8 ctermfg=8 ctermbg=8 guifg=#EE9E4F guibg=#EE9E4F 238 | hi XE9 ctermfg=7 ctermbg=7 guifg=#EE9E9E guibg=#EE9E9E 239 | hi XEA ctermfg=7 ctermbg=7 guifg=#EE9EEE guibg=#EE9EEE 240 | hi XEB ctermfg=14 ctermbg=14 guifg=#EEEE00 guibg=#EEEE00 241 | hi XEC ctermfg=14 ctermbg=14 guifg=#EEEE4F guibg=#EEEE4F 242 | hi XED ctermfg=7 ctermbg=7 guifg=#EEEE9E guibg=#EEEE9E 243 | hi XEE ctermfg=15 ctermbg=15 guifg=#EEEEEE guibg=#EEEEEE 244 | hi XEF ctermfg=12 ctermbg=12 guifg=#EE0000 guibg=#EE0000 245 | hi XF0 ctermfg=12 ctermbg=12 guifg=#FF0000 guibg=#FF0000 246 | hi XF1 ctermfg=12 ctermbg=12 guifg=#FF0055 guibg=#FF0055 247 | hi XF2 ctermfg=13 ctermbg=13 guifg=#FF00AA guibg=#FF00AA 248 | hi XF3 ctermfg=13 ctermbg=13 guifg=#FF00FF guibg=#FF00FF 249 | hi XF4 ctermfg=12 ctermbg=12 guifg=#FF5500 guibg=#FF5500 250 | hi XF5 ctermfg=12 ctermbg=12 guifg=#FF5555 guibg=#FF5555 251 | hi XF6 ctermfg=13 ctermbg=13 guifg=#FF55AA guibg=#FF55AA 252 | hi XF7 ctermfg=13 ctermbg=13 guifg=#FF55FF guibg=#FF55FF 253 | hi XF8 ctermfg=14 ctermbg=14 guifg=#FFAA00 guibg=#FFAA00 254 | hi XF9 ctermfg=14 ctermbg=14 guifg=#FFAA55 guibg=#FFAA55 255 | hi XFA ctermfg=7 ctermbg=7 guifg=#FFAAAA guibg=#FFAAAA 256 | hi XFB ctermfg=15 ctermbg=15 guifg=#FFAAFF guibg=#FFAAFF 257 | hi XFC ctermfg=14 ctermbg=14 guifg=#FFFF00 guibg=#FFFF00 258 | hi XFD ctermfg=14 ctermbg=14 guifg=#FFFF55 guibg=#FFFF55 259 | hi XFE ctermfg=15 ctermbg=15 guifg=#FFFFAA guibg=#FFFFAA 260 | hi XFF ctermfg=15 ctermbg=15 guifg=#FFFFFF guibg=#FFFFFF 261 | -------------------------------------------------------------------------------- /syntax/vimstreamer_websafe.vim: -------------------------------------------------------------------------------- 1 | for i in range(216) 2 | exe printf('syn match X%02X /#%02X/', i, i) 3 | endfor 4 | 5 | hi X00 ctermfg=0 ctermbg=0 guifg=#000000 guibg=#000000 6 | hi X01 ctermfg=0 ctermbg=0 guifg=#000033 guibg=#000033 7 | hi X02 ctermfg=1 ctermbg=1 guifg=#000066 guibg=#000066 8 | hi X03 ctermfg=1 ctermbg=1 guifg=#000099 guibg=#000099 9 | hi X04 ctermfg=9 ctermbg=9 guifg=#0000CC guibg=#0000CC 10 | hi X05 ctermfg=9 ctermbg=9 guifg=#0000FF guibg=#0000FF 11 | hi X06 ctermfg=0 ctermbg=0 guifg=#003300 guibg=#003300 12 | hi X07 ctermfg=0 ctermbg=0 guifg=#003333 guibg=#003333 13 | hi X08 ctermfg=1 ctermbg=1 guifg=#003366 guibg=#003366 14 | hi X09 ctermfg=1 ctermbg=1 guifg=#003399 guibg=#003399 15 | hi X0A ctermfg=9 ctermbg=9 guifg=#0033CC guibg=#0033CC 16 | hi X0B ctermfg=9 ctermbg=9 guifg=#0033FF guibg=#0033FF 17 | hi X0C ctermfg=2 ctermbg=2 guifg=#006600 guibg=#006600 18 | hi X0D ctermfg=2 ctermbg=2 guifg=#006633 guibg=#006633 19 | hi X0E ctermfg=3 ctermbg=3 guifg=#006666 guibg=#006666 20 | hi X0F ctermfg=3 ctermbg=3 guifg=#006699 guibg=#006699 21 | hi X10 ctermfg=3 ctermbg=3 guifg=#0066CC guibg=#0066CC 22 | hi X11 ctermfg=9 ctermbg=9 guifg=#0066FF guibg=#0066FF 23 | hi X12 ctermfg=2 ctermbg=2 guifg=#009900 guibg=#009900 24 | hi X13 ctermfg=2 ctermbg=2 guifg=#009933 guibg=#009933 25 | hi X14 ctermfg=3 ctermbg=3 guifg=#009966 guibg=#009966 26 | hi X15 ctermfg=3 ctermbg=3 guifg=#009999 guibg=#009999 27 | hi X16 ctermfg=3 ctermbg=3 guifg=#0099CC guibg=#0099CC 28 | hi X17 ctermfg=11 ctermbg=11 guifg=#0099FF guibg=#0099FF 29 | hi X18 ctermfg=10 ctermbg=10 guifg=#00CC00 guibg=#00CC00 30 | hi X19 ctermfg=10 ctermbg=10 guifg=#00CC33 guibg=#00CC33 31 | hi X1A ctermfg=3 ctermbg=3 guifg=#00CC66 guibg=#00CC66 32 | hi X1B ctermfg=3 ctermbg=3 guifg=#00CC99 guibg=#00CC99 33 | hi X1C ctermfg=11 ctermbg=11 guifg=#00CCCC guibg=#00CCCC 34 | hi X1D ctermfg=11 ctermbg=11 guifg=#00CCFF guibg=#00CCFF 35 | hi X1E ctermfg=10 ctermbg=10 guifg=#00FF00 guibg=#00FF00 36 | hi X1F ctermfg=10 ctermbg=10 guifg=#00FF33 guibg=#00FF33 37 | hi X20 ctermfg=10 ctermbg=10 guifg=#00FF66 guibg=#00FF66 38 | hi X21 ctermfg=11 ctermbg=11 guifg=#00FF99 guibg=#00FF99 39 | hi X22 ctermfg=11 ctermbg=11 guifg=#00FFCC guibg=#00FFCC 40 | hi X23 ctermfg=11 ctermbg=11 guifg=#00FFFF guibg=#00FFFF 41 | hi X24 ctermfg=0 ctermbg=0 guifg=#330000 guibg=#330000 42 | hi X25 ctermfg=0 ctermbg=0 guifg=#330033 guibg=#330033 43 | hi X26 ctermfg=1 ctermbg=1 guifg=#330066 guibg=#330066 44 | hi X27 ctermfg=1 ctermbg=1 guifg=#330099 guibg=#330099 45 | hi X28 ctermfg=9 ctermbg=9 guifg=#3300CC guibg=#3300CC 46 | hi X29 ctermfg=9 ctermbg=9 guifg=#3300FF guibg=#3300FF 47 | hi X2A ctermfg=0 ctermbg=0 guifg=#333300 guibg=#333300 48 | hi X2B ctermfg=0 ctermbg=0 guifg=#333333 guibg=#333333 49 | hi X2C ctermfg=1 ctermbg=1 guifg=#333366 guibg=#333366 50 | hi X2D ctermfg=1 ctermbg=1 guifg=#333399 guibg=#333399 51 | hi X2E ctermfg=9 ctermbg=9 guifg=#3333CC guibg=#3333CC 52 | hi X2F ctermfg=9 ctermbg=9 guifg=#3333FF guibg=#3333FF 53 | hi X30 ctermfg=2 ctermbg=2 guifg=#336600 guibg=#336600 54 | hi X31 ctermfg=2 ctermbg=2 guifg=#336633 guibg=#336633 55 | hi X32 ctermfg=3 ctermbg=3 guifg=#336666 guibg=#336666 56 | hi X33 ctermfg=3 ctermbg=3 guifg=#336699 guibg=#336699 57 | hi X34 ctermfg=3 ctermbg=3 guifg=#3366CC guibg=#3366CC 58 | hi X35 ctermfg=9 ctermbg=9 guifg=#3366FF guibg=#3366FF 59 | hi X36 ctermfg=2 ctermbg=2 guifg=#339900 guibg=#339900 60 | hi X37 ctermfg=2 ctermbg=2 guifg=#339933 guibg=#339933 61 | hi X38 ctermfg=3 ctermbg=3 guifg=#339966 guibg=#339966 62 | hi X39 ctermfg=3 ctermbg=3 guifg=#339999 guibg=#339999 63 | hi X3A ctermfg=3 ctermbg=3 guifg=#3399CC guibg=#3399CC 64 | hi X3B ctermfg=11 ctermbg=11 guifg=#3399FF guibg=#3399FF 65 | hi X3C ctermfg=10 ctermbg=10 guifg=#33CC00 guibg=#33CC00 66 | hi X3D ctermfg=10 ctermbg=10 guifg=#33CC33 guibg=#33CC33 67 | hi X3E ctermfg=3 ctermbg=3 guifg=#33CC66 guibg=#33CC66 68 | hi X3F ctermfg=3 ctermbg=3 guifg=#33CC99 guibg=#33CC99 69 | hi X40 ctermfg=11 ctermbg=11 guifg=#33CCCC guibg=#33CCCC 70 | hi X41 ctermfg=11 ctermbg=11 guifg=#33CCFF guibg=#33CCFF 71 | hi X42 ctermfg=10 ctermbg=10 guifg=#33FF00 guibg=#33FF00 72 | hi X43 ctermfg=10 ctermbg=10 guifg=#33FF33 guibg=#33FF33 73 | hi X44 ctermfg=10 ctermbg=10 guifg=#33FF66 guibg=#33FF66 74 | hi X45 ctermfg=11 ctermbg=11 guifg=#33FF99 guibg=#33FF99 75 | hi X46 ctermfg=11 ctermbg=11 guifg=#33FFCC guibg=#33FFCC 76 | hi X47 ctermfg=11 ctermbg=11 guifg=#33FFFF guibg=#33FFFF 77 | hi X48 ctermfg=4 ctermbg=4 guifg=#660000 guibg=#660000 78 | hi X49 ctermfg=4 ctermbg=4 guifg=#660033 guibg=#660033 79 | hi X4A ctermfg=5 ctermbg=5 guifg=#660066 guibg=#660066 80 | hi X4B ctermfg=5 ctermbg=5 guifg=#660099 guibg=#660099 81 | hi X4C ctermfg=5 ctermbg=5 guifg=#6600CC guibg=#6600CC 82 | hi X4D ctermfg=9 ctermbg=9 guifg=#6600FF guibg=#6600FF 83 | hi X4E ctermfg=4 ctermbg=4 guifg=#663300 guibg=#663300 84 | hi X4F ctermfg=4 ctermbg=4 guifg=#663333 guibg=#663333 85 | hi X50 ctermfg=5 ctermbg=5 guifg=#663366 guibg=#663366 86 | hi X51 ctermfg=5 ctermbg=5 guifg=#663399 guibg=#663399 87 | hi X52 ctermfg=5 ctermbg=5 guifg=#6633CC guibg=#6633CC 88 | hi X53 ctermfg=9 ctermbg=9 guifg=#6633FF guibg=#6633FF 89 | hi X54 ctermfg=6 ctermbg=6 guifg=#666600 guibg=#666600 90 | hi X55 ctermfg=6 ctermbg=6 guifg=#666633 guibg=#666633 91 | hi X56 ctermfg=8 ctermbg=8 guifg=#666666 guibg=#666666 92 | hi X57 ctermfg=8 ctermbg=8 guifg=#666699 guibg=#666699 93 | hi X58 ctermfg=8 ctermbg=8 guifg=#6666CC guibg=#6666CC 94 | hi X59 ctermfg=8 ctermbg=8 guifg=#6666FF guibg=#6666FF 95 | hi X5A ctermfg=6 ctermbg=6 guifg=#669900 guibg=#669900 96 | hi X5B ctermfg=6 ctermbg=6 guifg=#669933 guibg=#669933 97 | hi X5C ctermfg=8 ctermbg=8 guifg=#669966 guibg=#669966 98 | hi X5D ctermfg=8 ctermbg=8 guifg=#669999 guibg=#669999 99 | hi X5E ctermfg=8 ctermbg=8 guifg=#6699CC guibg=#6699CC 100 | hi X5F ctermfg=8 ctermbg=8 guifg=#6699FF guibg=#6699FF 101 | hi X60 ctermfg=6 ctermbg=6 guifg=#66CC00 guibg=#66CC00 102 | hi X61 ctermfg=6 ctermbg=6 guifg=#66CC33 guibg=#66CC33 103 | hi X62 ctermfg=8 ctermbg=8 guifg=#66CC66 guibg=#66CC66 104 | hi X63 ctermfg=8 ctermbg=8 guifg=#66CC99 guibg=#66CC99 105 | hi X64 ctermfg=7 ctermbg=7 guifg=#66CCCC guibg=#66CCCC 106 | hi X65 ctermfg=11 ctermbg=11 guifg=#66CCFF guibg=#66CCFF 107 | hi X66 ctermfg=10 ctermbg=10 guifg=#66FF00 guibg=#66FF00 108 | hi X67 ctermfg=10 ctermbg=10 guifg=#66FF33 guibg=#66FF33 109 | hi X68 ctermfg=8 ctermbg=8 guifg=#66FF66 guibg=#66FF66 110 | hi X69 ctermfg=8 ctermbg=8 guifg=#66FF99 guibg=#66FF99 111 | hi X6A ctermfg=11 ctermbg=11 guifg=#66FFCC guibg=#66FFCC 112 | hi X6B ctermfg=11 ctermbg=11 guifg=#66FFFF guibg=#66FFFF 113 | hi X6C ctermfg=4 ctermbg=4 guifg=#990000 guibg=#990000 114 | hi X6D ctermfg=4 ctermbg=4 guifg=#990033 guibg=#990033 115 | hi X6E ctermfg=5 ctermbg=5 guifg=#990066 guibg=#990066 116 | hi X6F ctermfg=5 ctermbg=5 guifg=#990099 guibg=#990099 117 | hi X70 ctermfg=5 ctermbg=5 guifg=#9900CC guibg=#9900CC 118 | hi X71 ctermfg=13 ctermbg=13 guifg=#9900FF guibg=#9900FF 119 | hi X72 ctermfg=4 ctermbg=4 guifg=#993300 guibg=#993300 120 | hi X73 ctermfg=4 ctermbg=4 guifg=#993333 guibg=#993333 121 | hi X74 ctermfg=5 ctermbg=5 guifg=#993366 guibg=#993366 122 | hi X75 ctermfg=5 ctermbg=5 guifg=#993399 guibg=#993399 123 | hi X76 ctermfg=5 ctermbg=5 guifg=#9933CC guibg=#9933CC 124 | hi X77 ctermfg=13 ctermbg=13 guifg=#9933FF guibg=#9933FF 125 | hi X78 ctermfg=6 ctermbg=6 guifg=#996600 guibg=#996600 126 | hi X79 ctermfg=6 ctermbg=6 guifg=#996633 guibg=#996633 127 | hi X7A ctermfg=8 ctermbg=8 guifg=#996666 guibg=#996666 128 | hi X7B ctermfg=8 ctermbg=8 guifg=#996699 guibg=#996699 129 | hi X7C ctermfg=8 ctermbg=8 guifg=#9966CC guibg=#9966CC 130 | hi X7D ctermfg=8 ctermbg=8 guifg=#9966FF guibg=#9966FF 131 | hi X7E ctermfg=6 ctermbg=6 guifg=#999900 guibg=#999900 132 | hi X7F ctermfg=6 ctermbg=6 guifg=#999933 guibg=#999933 133 | hi X80 ctermfg=8 ctermbg=8 guifg=#999966 guibg=#999966 134 | hi X81 ctermfg=8 ctermbg=8 guifg=#999999 guibg=#999999 135 | hi X82 ctermfg=7 ctermbg=7 guifg=#9999CC guibg=#9999CC 136 | hi X83 ctermfg=7 ctermbg=7 guifg=#9999FF guibg=#9999FF 137 | hi X84 ctermfg=6 ctermbg=6 guifg=#99CC00 guibg=#99CC00 138 | hi X85 ctermfg=6 ctermbg=6 guifg=#99CC33 guibg=#99CC33 139 | hi X86 ctermfg=8 ctermbg=8 guifg=#99CC66 guibg=#99CC66 140 | hi X87 ctermfg=7 ctermbg=7 guifg=#99CC99 guibg=#99CC99 141 | hi X88 ctermfg=7 ctermbg=7 guifg=#99CCCC guibg=#99CCCC 142 | hi X89 ctermfg=7 ctermbg=7 guifg=#99CCFF guibg=#99CCFF 143 | hi X8A ctermfg=14 ctermbg=14 guifg=#99FF00 guibg=#99FF00 144 | hi X8B ctermfg=14 ctermbg=14 guifg=#99FF33 guibg=#99FF33 145 | hi X8C ctermfg=8 ctermbg=8 guifg=#99FF66 guibg=#99FF66 146 | hi X8D ctermfg=7 ctermbg=7 guifg=#99FF99 guibg=#99FF99 147 | hi X8E ctermfg=7 ctermbg=7 guifg=#99FFCC guibg=#99FFCC 148 | hi X8F ctermfg=15 ctermbg=15 guifg=#99FFFF guibg=#99FFFF 149 | hi X90 ctermfg=12 ctermbg=12 guifg=#CC0000 guibg=#CC0000 150 | hi X91 ctermfg=12 ctermbg=12 guifg=#CC0033 guibg=#CC0033 151 | hi X92 ctermfg=5 ctermbg=5 guifg=#CC0066 guibg=#CC0066 152 | hi X93 ctermfg=5 ctermbg=5 guifg=#CC0099 guibg=#CC0099 153 | hi X94 ctermfg=13 ctermbg=13 guifg=#CC00CC guibg=#CC00CC 154 | hi X95 ctermfg=13 ctermbg=13 guifg=#CC00FF guibg=#CC00FF 155 | hi X96 ctermfg=12 ctermbg=12 guifg=#CC3300 guibg=#CC3300 156 | hi X97 ctermfg=12 ctermbg=12 guifg=#CC3333 guibg=#CC3333 157 | hi X98 ctermfg=5 ctermbg=5 guifg=#CC3366 guibg=#CC3366 158 | hi X99 ctermfg=5 ctermbg=5 guifg=#CC3399 guibg=#CC3399 159 | hi X9A ctermfg=13 ctermbg=13 guifg=#CC33CC guibg=#CC33CC 160 | hi X9B ctermfg=13 ctermbg=13 guifg=#CC33FF guibg=#CC33FF 161 | hi X9C ctermfg=6 ctermbg=6 guifg=#CC6600 guibg=#CC6600 162 | hi X9D ctermfg=6 ctermbg=6 guifg=#CC6633 guibg=#CC6633 163 | hi X9E ctermfg=8 ctermbg=8 guifg=#CC6666 guibg=#CC6666 164 | hi X9F ctermfg=8 ctermbg=8 guifg=#CC6699 guibg=#CC6699 165 | hi XA0 ctermfg=7 ctermbg=7 guifg=#CC66CC guibg=#CC66CC 166 | hi XA1 ctermfg=13 ctermbg=13 guifg=#CC66FF guibg=#CC66FF 167 | hi XA2 ctermfg=6 ctermbg=6 guifg=#CC9900 guibg=#CC9900 168 | hi XA3 ctermfg=6 ctermbg=6 guifg=#CC9933 guibg=#CC9933 169 | hi XA4 ctermfg=8 ctermbg=8 guifg=#CC9966 guibg=#CC9966 170 | hi XA5 ctermfg=7 ctermbg=7 guifg=#CC9999 guibg=#CC9999 171 | hi XA6 ctermfg=7 ctermbg=7 guifg=#CC99CC guibg=#CC99CC 172 | hi XA7 ctermfg=7 ctermbg=7 guifg=#CC99FF guibg=#CC99FF 173 | hi XA8 ctermfg=14 ctermbg=14 guifg=#CCCC00 guibg=#CCCC00 174 | hi XA9 ctermfg=14 ctermbg=14 guifg=#CCCC33 guibg=#CCCC33 175 | hi XAA ctermfg=7 ctermbg=7 guifg=#CCCC66 guibg=#CCCC66 176 | hi XAB ctermfg=7 ctermbg=7 guifg=#CCCC99 guibg=#CCCC99 177 | hi XAC ctermfg=7 ctermbg=7 guifg=#CCCCCC guibg=#CCCCCC 178 | hi XAD ctermfg=7 ctermbg=7 guifg=#CCCCFF guibg=#CCCCFF 179 | hi XAE ctermfg=14 ctermbg=14 guifg=#CCFF00 guibg=#CCFF00 180 | hi XAF ctermfg=14 ctermbg=14 guifg=#CCFF33 guibg=#CCFF33 181 | hi XB0 ctermfg=14 ctermbg=14 guifg=#CCFF66 guibg=#CCFF66 182 | hi XB1 ctermfg=7 ctermbg=7 guifg=#CCFF99 guibg=#CCFF99 183 | hi XB2 ctermfg=7 ctermbg=7 guifg=#CCFFCC guibg=#CCFFCC 184 | hi XB3 ctermfg=15 ctermbg=15 guifg=#CCFFFF guibg=#CCFFFF 185 | hi XB4 ctermfg=12 ctermbg=12 guifg=#FF0000 guibg=#FF0000 186 | hi XB5 ctermfg=12 ctermbg=12 guifg=#FF0033 guibg=#FF0033 187 | hi XB6 ctermfg=12 ctermbg=12 guifg=#FF0066 guibg=#FF0066 188 | hi XB7 ctermfg=13 ctermbg=13 guifg=#FF0099 guibg=#FF0099 189 | hi XB8 ctermfg=13 ctermbg=13 guifg=#FF00CC guibg=#FF00CC 190 | hi XB9 ctermfg=13 ctermbg=13 guifg=#FF00FF guibg=#FF00FF 191 | hi XBA ctermfg=12 ctermbg=12 guifg=#FF3300 guibg=#FF3300 192 | hi XBB ctermfg=12 ctermbg=12 guifg=#FF3333 guibg=#FF3333 193 | hi XBC ctermfg=12 ctermbg=12 guifg=#FF3366 guibg=#FF3366 194 | hi XBD ctermfg=13 ctermbg=13 guifg=#FF3399 guibg=#FF3399 195 | hi XBE ctermfg=13 ctermbg=13 guifg=#FF33CC guibg=#FF33CC 196 | hi XBF ctermfg=13 ctermbg=13 guifg=#FF33FF guibg=#FF33FF 197 | hi XC0 ctermfg=12 ctermbg=12 guifg=#FF6600 guibg=#FF6600 198 | hi XC1 ctermfg=12 ctermbg=12 guifg=#FF6633 guibg=#FF6633 199 | hi XC2 ctermfg=8 ctermbg=8 guifg=#FF6666 guibg=#FF6666 200 | hi XC3 ctermfg=8 ctermbg=8 guifg=#FF6699 guibg=#FF6699 201 | hi XC4 ctermfg=13 ctermbg=13 guifg=#FF66CC guibg=#FF66CC 202 | hi XC5 ctermfg=13 ctermbg=13 guifg=#FF66FF guibg=#FF66FF 203 | hi XC6 ctermfg=14 ctermbg=14 guifg=#FF9900 guibg=#FF9900 204 | hi XC7 ctermfg=14 ctermbg=14 guifg=#FF9933 guibg=#FF9933 205 | hi XC8 ctermfg=8 ctermbg=8 guifg=#FF9966 guibg=#FF9966 206 | hi XC9 ctermfg=7 ctermbg=7 guifg=#FF9999 guibg=#FF9999 207 | hi XCA ctermfg=7 ctermbg=7 guifg=#FF99CC guibg=#FF99CC 208 | hi XCB ctermfg=15 ctermbg=15 guifg=#FF99FF guibg=#FF99FF 209 | hi XCC ctermfg=14 ctermbg=14 guifg=#FFCC00 guibg=#FFCC00 210 | hi XCD ctermfg=14 ctermbg=14 guifg=#FFCC33 guibg=#FFCC33 211 | hi XCE ctermfg=14 ctermbg=14 guifg=#FFCC66 guibg=#FFCC66 212 | hi XCF ctermfg=7 ctermbg=7 guifg=#FFCC99 guibg=#FFCC99 213 | hi XD0 ctermfg=7 ctermbg=7 guifg=#FFCCCC guibg=#FFCCCC 214 | hi XD1 ctermfg=15 ctermbg=15 guifg=#FFCCFF guibg=#FFCCFF 215 | hi XD2 ctermfg=14 ctermbg=14 guifg=#FFFF00 guibg=#FFFF00 216 | hi XD3 ctermfg=14 ctermbg=14 guifg=#FFFF33 guibg=#FFFF33 217 | hi XD4 ctermfg=14 ctermbg=14 guifg=#FFFF66 guibg=#FFFF66 218 | hi XD5 ctermfg=15 ctermbg=15 guifg=#FFFF99 guibg=#FFFF99 219 | hi XD6 ctermfg=15 ctermbg=15 guifg=#FFFFCC guibg=#FFFFCC 220 | hi XD7 ctermfg=15 ctermbg=15 guifg=#FFFFFF guibg=#FFFFFF 221 | 222 | -------------------------------------------------------------------------------- /vimstreamer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattn/vim-vimstreamer/2ad537238939a1f83df34e04085aaa53978d6f60/vimstreamer.gif -------------------------------------------------------------------------------- /vimstreamer/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "flag" 5 | "fmt" 6 | "image" 7 | "image/color/palette" 8 | "image/draw" 9 | "net" 10 | "os" 11 | "time" 12 | 13 | "github.com/mattn/go-mjpeg" 14 | "github.com/nfnt/resize" 15 | ) 16 | 17 | var ( 18 | addr = flag.String("addr", "127.0.0.1:3000", "server address") 19 | width = flag.Uint("w", 32, "width") 20 | height = flag.Uint("h", 24, "height") 21 | delay = flag.Int64("d", 0, "delay") 22 | cmodel = flag.String("c", "plan9", "color model") 23 | ) 24 | 25 | func main() { 26 | flag.Parse() 27 | 28 | var err error 29 | var conn net.Conn 30 | for retry := 0; retry < 3; retry++ { 31 | conn, err = net.Dial("tcp", *addr) 32 | if err == nil { 33 | break 34 | } 35 | time.Sleep(time.Second) 36 | } 37 | if err != nil { 38 | fmt.Fprintln(os.Stderr, err) 39 | os.Exit(1) 40 | } 41 | dec := mjpeg.NewDecoder(conn, "ThisRandomString") 42 | 43 | q := make(chan image.Image, 2) 44 | go func() { 45 | var img image.Image 46 | var err error 47 | for { 48 | img, err = dec.Decode() 49 | if err != nil { 50 | break 51 | } 52 | 53 | now := time.Now().Unix() 54 | if len(q) == 0 { 55 | if *delay < 1 || now%*delay == 0 { 56 | q <- img 57 | } 58 | } 59 | } 60 | close(q) 61 | }() 62 | 63 | bounds := image.Rect(0, 0, int(*width), int(*height)) 64 | var paletted *image.Paletted 65 | switch *cmodel { 66 | case "websafe": 67 | paletted = image.NewPaletted(bounds, palette.WebSafe) 68 | case "plan9": 69 | paletted = image.NewPaletted(bounds, palette.Plan9) 70 | } 71 | for { 72 | img, ok := <-q 73 | if !ok { 74 | break 75 | } 76 | img = resize.Resize(*width, *height, img, resize.Bicubic) 77 | switch *cmodel { 78 | case "websafe", "plan9": 79 | draw.Draw(paletted, bounds, img, image.Pt(0, 0), draw.Src) 80 | dx, dy := bounds.Dx(), bounds.Dy() 81 | for y := 0; y < dy; y++ { 82 | for x := 0; x < dx; x++ { 83 | fmt.Printf("#%02X", paletted.ColorIndexAt(x, y)) 84 | } 85 | fmt.Println() 86 | } 87 | default: 88 | nrgba := image.NewNRGBA(bounds) 89 | draw.Draw(nrgba, bounds, img, image.Pt(0, 0), draw.Src) 90 | dx, dy := bounds.Dx(), bounds.Dy() 91 | for y := 0; y < dy; y++ { 92 | for x := 0; x < dx; x++ { 93 | r, g, b, _ := nrgba.At(x, y).RGBA() 94 | sr, sg, sb := byte(r)/16, byte(g)/16, byte(b)/16 95 | fmt.Printf("#%X%X%X", sr, sg, sb) 96 | } 97 | fmt.Println() 98 | } 99 | } 100 | fmt.Println("\x0c") 101 | os.Stdout.Sync() 102 | } 103 | } 104 | --------------------------------------------------------------------------------