mirror of
https://github.com/jdhao/nvim-config.git
synced 2025-06-08 14:14:33 +02:00
refactor: load colorschemes randomly
In Emacs, there is `seq-random-elt` which randomly selects an element from a sequence. We mimic it here in Neovim. Ref: https://www.gnu.org/software/emacs/manual/html_node/elisp/Sequence-Functions.html.
This commit is contained in:
parent
b4f58504a7
commit
421111f474
@ -49,6 +49,13 @@ function! utils#RandInt(Low, High) abort
|
|||||||
return v:lua.math.random(a:Low, a:High)
|
return v:lua.math.random(a:Low, a:High)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Selection a random element from a sequence/list
|
||||||
|
function! utils#RandElement(seq) abort
|
||||||
|
let l:idx = utils#RandInt(0, len(a:seq)-1)
|
||||||
|
|
||||||
|
return a:seq[l:idx]
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Custom fold expr, adapted from https://vi.stackexchange.com/a/9094/15292
|
" Custom fold expr, adapted from https://vi.stackexchange.com/a/9094/15292
|
||||||
function! utils#VimFolds(lnum) abort
|
function! utils#VimFolds(lnum) abort
|
||||||
" get content of current line and the line below
|
" get content of current line and the line below
|
||||||
|
|||||||
16
core/ui.vim
16
core/ui.vim
@ -76,14 +76,22 @@ function! s:my_theme_dict.everforest() dict abort
|
|||||||
colorscheme everforest
|
colorscheme everforest
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:candidate_theme = ['gruvbox8', 'deus', 'solarized8', 'onedark',
|
function! s:my_theme_dict.nightfox() dict abort
|
||||||
\ 'edge', 'sonokai', 'gruvbox_material', 'nord', 'doom_one', 'everforest']
|
packadd! nightfox
|
||||||
let s:idx = utils#RandInt(0, len(s:candidate_theme)-1)
|
|
||||||
let s:theme = s:candidate_theme[s:idx]
|
|
||||||
|
|
||||||
|
colorscheme nordfox
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:candidate_theme = ['gruvbox8', 'deus', 'solarized8', 'onedark',
|
||||||
|
\ 'edge', 'sonokai', 'gruvbox_material', 'nord', 'doom_one', 'everforest',
|
||||||
|
\ 'nightfox']
|
||||||
|
|
||||||
|
let s:theme = utils#RandElement(s:candidate_theme)
|
||||||
let s:colorscheme_func = printf('s:my_theme_dict.%s()', s:theme)
|
let s:colorscheme_func = printf('s:my_theme_dict.%s()', s:theme)
|
||||||
|
|
||||||
if has_key(s:my_theme_dict, s:theme)
|
if has_key(s:my_theme_dict, s:theme)
|
||||||
execute 'call ' . s:colorscheme_func
|
execute 'call ' . s:colorscheme_func
|
||||||
|
echomsg "Currently loaded theme:" s:theme
|
||||||
else
|
else
|
||||||
let s:msg = "Invalid colorscheme function: " . s:colorscheme_func
|
let s:msg = "Invalid colorscheme function: " . s:colorscheme_func
|
||||||
call v:lua.vim.notify(s:msg, 'error', {'title': 'nvim-config', 'timeout': 2500})
|
call v:lua.vim.notify(s:msg, 'error', {'title': 'nvim-config', 'timeout': 2500})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user