Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
594
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VIM 1.82 KB | None | 0 0
  1. """ A color scheme picker
  2. let g:Color_scheme_picker_open     = 0
  3. let g:Color_scheme_picker_selected = ''
  4.  
  5. fu! Color_scheme_picker()
  6.     if g:Color_scheme_picker_open == 1
  7.         echo 'Color_scheme_picker is alread open!'
  8.         return
  9.     endif
  10.  
  11.     let g:Color_scheme_picker_open     = 1
  12.     let g:Color_scheme_picker_selected = trim(execute('color'))
  13.  
  14.     let l:colors = getcompletion('', 'color')
  15.     silent 12 new color_scheme_picker
  16.     setlocal nobuflisted buftype=nofile bufhidden=wipe noswapfile
  17.     put =l:colors
  18.     norm ggdd
  19. endfu
  20.  
  21. fu! Close_Color_scheme_picker()
  22.     let g:Color_scheme_picker_open = 0
  23.     execute 'color ' . g:Color_scheme_picker_selected
  24.     redraw!
  25.     echo 'Selected color scheme "' . g:Color_scheme_picker_selected . '".'
  26. endfu
  27.  
  28. fu! Maybe_update_color()
  29.     let l:current_color = trim(execute('color'))
  30.     let l:selected      = getline('.')
  31.  
  32.     if l:selected != l:current_color
  33.         let l:changed = 0
  34.  
  35.         try
  36.             execute 'color ' . l:selected
  37.             let l:changed = 1
  38.         catch /.*/
  39.             execute 'color ' . g:Color_scheme_picker_selected
  40.         finally
  41.             redraw!
  42.             if l:changed == 1
  43.                 echo 'Color scheme "' . l:selected . '"'
  44.             else
  45.                 echom 'No such color scheme "' . l:selected . '" -- showing "' . g:Color_scheme_picker_selected . '"'
  46.             endif
  47.         endtry
  48.     endif
  49. endfu
  50.  
  51. fu! Select_Color_scheme()
  52.     let g:Color_scheme_picker_selected = trim(execute('color'))
  53.     exe 'q'
  54. endfu
  55.  
  56. au BufWipeout  color_scheme_picker call Close_Color_scheme_picker()
  57. au CursorMoved color_scheme_picker call Maybe_update_color()
  58. au BufEnter    color_scheme_picker nnoremap <buffer> <silent> <cr> :call Select_Color_scheme()<cr>
  59. command! ColorSchemePicker call Color_scheme_picker()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement