├── README.md ├── autoload └── sonots.vim ├── data └── sonots.xpm └── plugin └── sonots.vim /README.md: -------------------------------------------------------------------------------- 1 | # vim-sonots 2 | 3 | そのっつ 4 | 5 | ![](http://go-gyazo.appspot.com/83f73c849024294e.png) 6 | 7 | ## Usage 8 | 9 | ``` 10 | :Sonots 11 | ``` 12 | 13 | ## Requirements 14 | 15 | vim7.4 or later 16 | 17 | ## Installation 18 | 19 | put this plugin into your bundle directory 20 | 21 | ## License 22 | 23 | Sonots Public License 24 | 25 | ## Author 26 | 27 | Yasuhiro Matsumoto (a.k.a mattn) 28 | -------------------------------------------------------------------------------- /autoload/sonots.vim: -------------------------------------------------------------------------------- 1 | let s:data_dir = expand(':h:h') . '/data' 2 | 3 | function! s:gui2cui(rgb) 4 | if a:rgb == 'NONE' 5 | return 'NONE' 6 | endif 7 | let rgb = map(matchlist(a:rgb, '#\(..\)\(..\)\(..\)')[1:3], '0 + ("0x".v:val)') 8 | let rgb = [rgb[0] > 127 ? 4 : 0, rgb[1] > 127 ? 2 : 0, rgb[2] > 127 ? 1 : 0] 9 | return rgb[0] + rgb[1] + rgb[2] 10 | endfunction 11 | 12 | function! sonots#render() 13 | let rgbfile = $VIMRUNTIME . '/rgb.txt' 14 | let coltable = {} 15 | if filereadable(rgbfile) 16 | for _ in map(filter(readfile(rgbfile), 'v:val !~ "^!"'), 'matchlist(v:val, "^\\s*\\(\\d\\+\\)\\s\\+\\(\\d\\+\\)\\s\\+\\(\\d\\+\\)\\s\\+\\(.*\\)")[1:4]') 17 | let coltable[tolower(_[3])] = printf("#%02x%02x%02x", _[0], _[1], _[2]) 18 | endfor 19 | endif 20 | let coltable['None'] = 'NONE' 21 | 22 | let lines = readfile(s:data_dir . '/sonots.xpm') 23 | let pos1 = index(lines, '/* columns rows colors chars-per-pixel */') 24 | let pos2 = index(lines, '/* pixels */') 25 | let colors = [] 26 | for line in lines[pos1+2:pos2-1] 27 | let s = split(line[1:-3], ' c ') 28 | if s[1] !~ '^#' 29 | let s[1] = coltable[s[1]] 30 | endif 31 | if s[1] == 'NONE' 32 | call add(colors, printf('syntax match sonotsNONE /%s/', join(map(split(s[0], '\zs'), 'printf("[\\x%02x]",char2nr(v:val))'), ''))) 33 | highlight sonotsNONE guifg=bg guibg=NONE ctermfg=NONE ctermbg=NONE 34 | else 35 | call add(colors, printf('syntax match sonots%s /%s/ contains=sonotsNONE', s[1][1:], join(map(split(s[0], '\zs'), 'printf("[\\x%02x]",char2nr(v:val))'), ''))) 36 | exe printf("highlight sonots%s guifg='%s' guibg='%s' ctermfg=%d ctermbg=%d", s[1][1:], s[1], s[1], s:gui2cui(s[1]), s:gui2cui(s[1])) 37 | endif 38 | endfor 39 | let image = { 40 | \ "colors" : colors, 41 | \ "data" : map(lines[pos2+1 :], 'matchstr(v:val, ''^"\zs.\+\ze",\?$'')') 42 | \} 43 | 44 | silent edit `='==SONOTS=='` 45 | silent normal! gg0 46 | silent only! 47 | setlocal buftype=nowrite 48 | setlocal noswapfile 49 | setlocal bufhidden=wipe 50 | setlocal buftype=nofile 51 | setlocal nonumber 52 | setlocal nolist 53 | setlocal nowrap 54 | setlocal nocursorline 55 | setlocal nocursorcolumn 56 | silent! syntax clear 57 | for c in image.colors 58 | exe c 59 | endfor 60 | call setline(1, image.data) 61 | redraw 62 | endfunction 63 | 64 | " vim:set et: 65 | -------------------------------------------------------------------------------- /data/sonots.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char *sonots[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "40 40 247 2 ", 5 | " c #020205", 6 | ". c #0A0505", 7 | "X c #02040B", 8 | "o c #0C0809", 9 | "O c #160A07", 10 | "+ c #140C0A", 11 | "@ c #1D110A", 12 | "# c #090B14", 13 | "$ c #040D1C", 14 | "% c #140D14", 15 | "& c #0A101B", 16 | "* c #191519", 17 | "= c #210705", 18 | "- c #27180E", 19 | "; c #3A1A0A", 20 | ": c #281915", 21 | "> c #37171A", 22 | ", c #2C2118", 23 | "< c #392618", 24 | "1 c #000E23", 25 | "2 c #051529", 26 | "3 c #1A1B22", 27 | "4 c #031C34", 28 | "5 c #001B39", 29 | "6 c #381924", 30 | "7 c #05223A", 31 | "8 c #192230", 32 | "9 c #282529", 33 | "0 c #34302F", 34 | "q c #272938", 35 | "w c #431D14", 36 | "e c #482B0A", 37 | "r c #432D1B", 38 | "t c #4B331E", 39 | "y c #6E3A07", 40 | "u c #481D23", 41 | "i c #681B28", 42 | "p c #4E2E2E", 43 | "a c #533724", 44 | "s c #463C38", 45 | "d c #6D302F", 46 | "f c #793737", 47 | "g c #6E4100", 48 | "h c #764800", 49 | "j c #7B4B00", 50 | "k c #5C4127", 51 | "l c #4C433D", 52 | "z c #574738", 53 | "x c #6E4F34", 54 | "c c #6B5239", 55 | "v c #0C1E44", 56 | "b c #012646", 57 | "n c #162E47", 58 | "m c #012B53", 59 | "M c #05355C", 60 | "N c #183650", 61 | "B c #263649", 62 | "V c #323849", 63 | "C c #253D58", 64 | "Z c #043C68", 65 | "A c #713C4A", 66 | "S c #37434F", 67 | "D c #174A6D", 68 | "F c #334F6E", 69 | "G c #4C4D50", 70 | "H c #79474A", 71 | "J c #675645", 72 | "K c #785D43", 73 | "L c #506457", 74 | "P c #766752", 75 | "I c #535B6C", 76 | "U c #714D69", 77 | "Y c #576377", 78 | "T c #726E69", 79 | "R c #903737", 80 | "E c #864D01", 81 | "W c #8C5301", 82 | "Q c #885306", 83 | "! c #8E530F", 84 | "~ c #945803", 85 | "^ c #955C19", 86 | "/ c #A55600", 87 | "( c #B35C00", 88 | ") c #A34617", 89 | "_ c #9C630B", 90 | "` c #9D6217", 91 | "' c #B96402", 92 | "] c #A66B19", 93 | "[ c #B06F19", 94 | "{ c #BB751E", 95 | "} c #8D4E36", 96 | "| c #8B483C", 97 | " . c #A94D26", 98 | ".. c #AB4C37", 99 | "X. c #B75836", 100 | "o. c #956734", 101 | "O. c #AD6E23", 102 | "+. c #A46A28", 103 | "@. c #AE7328", 104 | "#. c #B57529", 105 | "$. c #BC792A", 106 | "%. c #A46F32", 107 | "&. c #AC7434", 108 | "*. c #B57A35", 109 | "=. c #BE7D34", 110 | "-. c #BB7D3B", 111 | ";. c #C37111", 112 | ":. c #C55F3D", 113 | ">. c #C37C28", 114 | ",. c #C17F35", 115 | "<. c #863744", 116 | "1. c #854548", 117 | "2. c #994847", 118 | "3. c #97534F", 119 | "4. c #A44946", 120 | "5. c #B8594A", 121 | "6. c #AA5153", 122 | "7. c #BA5959", 123 | "8. c #876847", 124 | "9. c #9B754B", 125 | "0. c #937057", 126 | "q. c #BB6558", 127 | "w. c #AA7150", 128 | "e. c #AF5067", 129 | "r. c #957372", 130 | "t. c #B3666A", 131 | "y. c #B36F6E", 132 | "u. c #C55C55", 133 | "i. c #C76757", 134 | "p. c #D27255", 135 | "a. c #D2725B", 136 | "s. c #E37F4C", 137 | "d. c #CF5C6E", 138 | "f. c #CB6467", 139 | "g. c #CA786D", 140 | "h. c #D5716D", 141 | "j. c #E56C66", 142 | "k. c #E57979", 143 | "l. c #BA813C", 144 | "z. c #C38239", 145 | "x. c #D78E3B", 146 | "c. c #DA923C", 147 | "v. c #BD8848", 148 | "b. c #A28057", 149 | "n. c #B58A58", 150 | "m. c #948973", 151 | "M. c #A28774", 152 | "N. c #C68947", 153 | "B. c #D79246", 154 | "V. c #DB9443", 155 | "C. c #D4924A", 156 | "Z. c #C48E52", 157 | "A. c #CB9355", 158 | "S. c #C4955A", 159 | "D. c #C5955C", 160 | "F. c #C9955C", 161 | "G. c #D39759", 162 | "H. c #E19747", 163 | "J. c #C79763", 164 | "K. c #C69A62", 165 | "L. c #CB9A65", 166 | "P. c #CC9D6A", 167 | "I. c #D49C64", 168 | "U. c #D29E6B", 169 | "Y. c #D48A72", 170 | "T. c #EA8B6C", 171 | "R. c #E58478", 172 | "E. c #EB9677", 173 | "W. c #F59B7B", 174 | "Q. c #C2A169", 175 | "!. c #CEA16D", 176 | "~. c #D3A16E", 177 | "^. c #C2A875", 178 | "/. c #D5A373", 179 | "(. c #D6A676", 180 | "). c #F8A37E", 181 | "_. c #156A9F", 182 | "`. c #296999", 183 | "'. c #316692", 184 | "]. c #2573A6", 185 | "[. c #675F84", 186 | "{. c #717290", 187 | "}. c #926787", 188 | "|. c #B16F88", 189 | " X c #AF6BA0", 190 | ".X c #D1798F", 191 | "XX c #C27EA1", 192 | "oX c #1A85BE", 193 | "OX c #2085BC", 194 | "+X c #6D95A2", 195 | "@X c #6898B4", 196 | "#X c #1F8FC5", 197 | "$X c #4FA3C6", 198 | "%X c #948F91", 199 | "&X c #B68D8F", 200 | "*X c #BAB390", 201 | "=X c #908BAE", 202 | "-X c #B18FAD", 203 | ";X c #B796BA", 204 | ":X c #ADA7A9", 205 | ">X c #CD8E8B", 206 | ",X c #CC8799", 207 | ".B.C.P b 4 8 n V G s J 0.8.c a @ , l K b.o.k k b.K.S.Q.S.S.S.v.v.v.", 261 | "P.U.U.Z.*.@.,.C.0.D 7 4 7 B I G 0 s z p : - @ % < x 8.8.a r a 9.Q.Q.S.S.S.S.S.v.", 262 | "U.P.~.Z.#.@.$.w.D M 4 4 3 G I V q 9 * % + > a : @ < t k k r ; t m.*X2XQ.Q.S.S.S.", 263 | "P.!.~.F.$.@.w.I Z b 7 3 q F F n 8 % % > u 0.~.w.; O @ - t t < ; L bXbXtX2XQ.S.Q.", 264 | "U./.Y.F.*.#.P Z M b 4 4 n C m v & % 6 d R Y.7X o . o + 0 SXSXnXbX2XK.", 270 | "I././.U.z.%.M 2 5 2 $ 1 $ o u A H A H 6.h.R.f.2.3.q.y.0.p 3 % o + , bXSXbXtX2XL.", 271 | "I.!./.U.z.&.B $ 1 1 $ 1 # 6 U }.<.A 3.3.y.&X3...| H 6.q.f : % . O - %XyX*X2X^.L.", 272 | "I././.P.N.&.S $ 1 1 X v n A XU p p A 6.H M.H 4.d d 3...| 6 + O - 9.!.!.Q.!.Q.", 273 | "L././.U.v.#.l $ 1 X X V [.U X}.e.e.6.6.>XVX>Xq.5.7.f.a.y.8.6 . - 9.!.P.K.K.P.", 274 | "I./.(.U.N.#.z 1 & . O {.gX=X}.}.e.e.t.|.BXDXBX4Xg.i.h.Y.4XE.d . - w.~.Q.P.P.P.", 275 | "I./.(./.x.$.c & & o XvXvX;X.Xt.d.k.eXVXVXVXiXwX1X1X6XwX6Xx O . : n.!.P.L.P.P.", 276 | "G./././.z.z.x 3 # X 2 =XAXvXzX.X.Xk..,.N.N.Z.F.", 281 | "V.~././.A.$.{ z.,.z & I ZXvXvXxXkXXX|.<.i i i R u.Y.E.5XW.E.t ; / ( ( ' ;.;.;.>.", 282 | "C.~.(./.A.$.{ ;.x.w.q B fXvXxXzXeX.XXX Xe.e.e.u.5.5.T.E.W.q.; h / ( ( ( ( ' ' ' ", 283 | "C.~./.(.C.>.>.z.x.C.G v {.vXxXxX0X0X0XXXd.d.j.a.p.p.g.T.Y.x e W / E / / ( ( ( ( ", 284 | "B.~././.A.z.{ ;.B.C.T b S gXvXzX0X0XkX.Xf.X.u.p.p.y.m.r.r.0.! E E E E W W ~ / / ", 285 | "C.~.~.(.G.>.$.;.x.V.T b C dXgXfXxXlXjXqX|.5.:.s.g.{.Y T M.M.b.^ Q ! Q ! Q Q W ~ ", 286 | "B.~./.(.G.z.{ >.c.G.T m C dXhXfXfXfXxX9Xy.X.X.H.%X`.C s l l J x ^ ^ ^ ^ ^ ^ ! ! ", 287 | "H.I./.(.G.>.>.v.M.J S m C dXhXdXsX;X-Xy.u.X. .X.I Z 8 9 0 a z x %.+.+.^ ` ^ ^ ^ ", 288 | "V.I.~.(.G.v.+X$XD X $ 4 D dXfXpX;X;X|.q. . .) .G b 2 3 0 s 0 o.l.l.&.l.&.@.+.+.", 289 | "V.I.3X*XrX$XOXOXM X X V dXlX;X-XpX-Xe...) ) #.t.n m N T m.8.w.A.l.z.l.l.l.l.*.", 290 | "!.:X@X#XoX].`.'.C G fXlX0X8X;X-Xt.5.....q.T.0._.].T *X:XP 3X3Xl.z.[ ' { l.", 291 | "NXaX].]._.`.'.F C X V sXjX8X8X8X&Xt.6.X.5.i.E.E.@X].%XVXVX*X&XNXuX2XA.l._ ' ", 292 | "NXNX+X'.'.'.F F S # X X 0 :X8X8X,X,X,Xg.q.5.5.g.E.).%XhXDXVXwXBXBXVXVXVXBXuX^.z." 293 | }; 294 | -------------------------------------------------------------------------------- /plugin/sonots.vim: -------------------------------------------------------------------------------- 1 | command! Sonots call sonots#render() 2 | --------------------------------------------------------------------------------