structure change. Colorscheme picker. etc.
This commit is contained in:
@@ -10,12 +10,14 @@
|
||||
let after_directory = g:mydotfiles_directory . 'config/vi-plugs/coc-theme/after/'
|
||||
|
||||
" detect vim type(vim or nvim)
|
||||
let g:vim_v = 0
|
||||
if has('nvim')
|
||||
let g:vim_type = 'nvim'
|
||||
let g:vim_version = matchstr(execute('version'), 'NVIM v\zs[^\n]*')
|
||||
else
|
||||
let g:vim_type = 'vim'
|
||||
let g:vim_version = matchstr(execute('version'), 'Vi IMproved \zs[^\n]*')
|
||||
let g:vim_v = v:version
|
||||
endif
|
||||
|
||||
" detect operating system (Windows/Linux/Darwin)
|
||||
@@ -100,12 +102,12 @@
|
||||
"
|
||||
" set tabpagemax=15 " Only show 15 tabs
|
||||
" set showmode " Display the current mode
|
||||
" set cursorline " Highlight current line
|
||||
set nocursorline " Highlight current line
|
||||
|
||||
" get rid of current line highlight, instead just highlight the number column
|
||||
augroup CLClear
|
||||
autocmd! ColorScheme * hi clear CursorLine
|
||||
augroup END
|
||||
" augroup CLClear
|
||||
" autocmd! ColorScheme * hi clear CursorLine
|
||||
" augroup END
|
||||
|
||||
set cmdheight=1 " get rid of the extra useless line at the bottom(if not working, probably a plugin is changing the value)
|
||||
|
||||
@@ -141,8 +143,12 @@
|
||||
set shiftwidth=4 " Use indents of 4 spaces
|
||||
set tabstop=4 " An indentation every four columns
|
||||
set softtabstop=4 " Let backspace delete indent
|
||||
autocmd FileType javascript,typescript set tabstop=2 shiftwidth=2 softtabstop=2
|
||||
autocmd FileType c,cpp,python,java set tabstop=4 shiftwidth=4 softtabstop=4
|
||||
augroup FileFormat
|
||||
autocmd!
|
||||
autocmd FileType javascript,typescript,lua setlocal tabstop=2 shiftwidth=2 softtabstop=2
|
||||
" autocmd FileType c,cpp,python,java setlocal tabstop=4 shiftwidth=4 softtabstop=4
|
||||
augroup END
|
||||
|
||||
set nojoinspaces " Prevents inserting two spaces after punctuation on a join (J)
|
||||
set splitright " Puts new vsplit windows to the right of the current
|
||||
set splitbelow " Puts new split windows to the bottom of the current
|
||||
|
||||
+261
-265
@@ -3,54 +3,64 @@
|
||||
" OPTIONS
|
||||
" PLUGIN_INSTALL
|
||||
" UTILITIES
|
||||
" PLUGIN_CONFIGURATION
|
||||
" THEME_CONFIGURATION
|
||||
" PLUGIN_CONFIGURATION " THEME_CONFIGURATION
|
||||
" KEY_MAPS
|
||||
" OTHER_CONFIGS
|
||||
|
||||
let g:debug_mode = v:false
|
||||
let g:high_performence = v:false " set true will also disable animation
|
||||
let g:autocomplte_enable = v:true
|
||||
let g:copilot_enable = v:false
|
||||
|
||||
let g:high_performence = v:false
|
||||
" only used by neovim
|
||||
let g:classic_vim_ui = v:false
|
||||
let g:animation_enable = v:true
|
||||
|
||||
let g:swap_dict = [
|
||||
\ ['false', '0', 'dark' ],
|
||||
\ ['true' , '1', 'light']]
|
||||
" convinient function to swap between two options
|
||||
nmap <leader><leader>t :call SwapWord()<CR>
|
||||
|
||||
" PLUGIN_INSTALL
|
||||
" {
|
||||
" Plugin environment
|
||||
let g:mydotfiles_directory = expand('~/.dotfiles/')
|
||||
let s:plugin_dir = expand('~/.vim/plugged/')
|
||||
|
||||
let g:config_file_path = g:vim_dir . ".config.vim"
|
||||
call plug#begin(s:plugin_dir)
|
||||
|
||||
" https://github.com/junegunn/vim-plug/wiki/tips
|
||||
function! Cond(cond, ...)
|
||||
let opts = get(a:000, 0, {})
|
||||
return a:cond ? opts : extend(opts, { 'on': [], 'for': [] })
|
||||
endfunction
|
||||
let g:animation_enable = g:high_performence ? v:false : g:animation_enable
|
||||
|
||||
"""""""""""""""""""""""
|
||||
"""" THEME_PLUGINS """"
|
||||
"""""""""""""""""""""""
|
||||
|
||||
Plug 'sainnhe/everforest', Cond(g:vim_type == 'vim')
|
||||
Plug 'NLKNguyen/papercolor-theme'
|
||||
Plug 'sainnhe/everforest'
|
||||
if !g:high_performence
|
||||
Plug 'jacoborus/tender.vim'
|
||||
Plug 'cocopon/iceberg.vim'
|
||||
Plug 'catppuccin/nvim', Cond( has('nvim-0.8.2') \|\| g:vim_v >= 900 , { 'as': 'catppuccin' })
|
||||
Plug 'NLKNguyen/papercolor-theme'
|
||||
Plug 'EdenEast/nightfox.nvim', Cond(has('nvim-0.5'))
|
||||
Plug 'projekt0n/github-nvim-theme', Cond(has('nvim-0.5'), { 'tag': 'v0.0.7' })
|
||||
Plug 'folke/tokyonight.nvim', Cond(g:vim_type == 'nvim', { 'branch': 'main' })
|
||||
endif
|
||||
|
||||
" Neovim only
|
||||
Plug 'EdenEast/nightfox.nvim', Cond(g:vim_type == 'nvim' && g:vim_version >= 0.5)
|
||||
Plug 'projekt0n/github-nvim-theme', Cond(g:vim_type == 'nvim' && g:vim_version >= 0.5, { 'tag': 'v0.0.7' })
|
||||
|
||||
"""""""""""""""""""""""
|
||||
"""""""" END """"""""""
|
||||
"""""""""""""""""""""""
|
||||
Plug 'lervag/vimtex'
|
||||
Plug 'github/copilot.vim', Cond(( g:vim_type == 'nvim' \|\| g:vim_v >= 900 )
|
||||
\ && g:copilot_enable && executable('node'))
|
||||
|
||||
|
||||
Plug 'gelguy/wilder.nvim', Cond(g:vim_type == 'vim' \|\| g:classic_vim_ui)
|
||||
Plug 'gelguy/wilder.nvim', Cond((g:vim_type == 'vim' \|\| g:classic_vim_ui) && !g:high_performence)
|
||||
" To use Python remote plugin features in Vim for wilder, can be skipped
|
||||
" Plug 'roxma/nvim-yarp', Cond(g:vim_type == 'vim')
|
||||
" Plug 'roxma/vim-hug-neovim-rpc', Cond(g:vim_type == 'vim')
|
||||
|
||||
Plug 'dstein64/vim-startuptime'
|
||||
Plug 'simeji/winresizer'
|
||||
Plug 'dstein64/vim-startuptime', Cond(!g:high_performence)
|
||||
Plug 'simeji/winresizer', Cond(!g:high_performence)
|
||||
Plug 'rust-lang/rust.vim', { 'for': ['rust'] }
|
||||
|
||||
Plug 'machakann/vim-sandwich'
|
||||
@@ -58,29 +68,27 @@ let g:animation_enable = v:true
|
||||
|
||||
Plug 'jiangmiao/auto-pairs'
|
||||
" Plug 'mg979/vim-visual-multi'
|
||||
Plug 'RRethy/vim-illuminate'
|
||||
Plug 'RRethy/vim-illuminate', Cond(!g:high_performence)
|
||||
"Plug 'easymotion/vim-easymotion'
|
||||
Plug 'mhinz/vim-startify'
|
||||
Plug 'ludovicchabant/vim-gutentags', Cond(!exists('g:vscode'), { 'for': ['c', 'cpp'] })
|
||||
Plug 'ludovicchabant/vim-gutentags'
|
||||
|
||||
Plug 'christoomey/vim-tmux-navigator'
|
||||
Plug 'airblade/vim-rooter'
|
||||
Plug 'roxma/vim-tmux-clipboard', Cond(executable('tmux'))
|
||||
Plug 'liuchengxu/vista.vim'
|
||||
Plug 'liuchengxu/vista.vim', Cond(!g:high_performence)
|
||||
|
||||
"""""""""""""""""""""""
|
||||
"" ESSENTIAL_PLUGINS ""
|
||||
"""""""""""""""""""""""
|
||||
|
||||
" Comment stuff out
|
||||
Plug 'tpope/vim-commentary'
|
||||
Plug 'vim-scripts/restore_view.vim'
|
||||
|
||||
" vim only plugins
|
||||
Plug 'scrooloose/nerdtree', Cond(g:vim_type == 'vim' \|\| g:vim_version < 0.8, { 'on' : ['NERDTreeToggle', 'NERDTreeFind'] })
|
||||
Plug 'scrooloose/nerdtree', Cond(g:vim_type == 'vim' \|\| g:vim_v < 800, { 'on' : ['NERDTreeToggle', 'NERDTreeFind'] })
|
||||
Plug 'tiagofumo/vim-nerdtree-syntax-highlight', Cond(g:vim_type == 'vim' && !g:high_performence)
|
||||
|
||||
Plug 'neoclide/coc.nvim', Cond(!exists('g:vscode') && executable('node'), {'branch': 'release'})
|
||||
Plug 'neoclide/coc.nvim', Cond(g:autocomplte_enable && executable('node'), {'branch': 'release'})
|
||||
|
||||
" only work with vim
|
||||
if g:vim_type == 'vim'
|
||||
@@ -103,22 +111,22 @@ let g:animation_enable = v:true
|
||||
if g:vim_version >= 0.5
|
||||
Plug 'xiyaowong/nvim-transparent'
|
||||
Plug 'lukas-reineke/indent-blankline.nvim', Cond(!g:animation_enable)
|
||||
Plug 'echasnovski/mini.indentscope'
|
||||
Plug 'echasnovski/mini.animate'
|
||||
Plug 'echasnovski/mini.indentscope', Cond(g:animation_enable)
|
||||
Plug 'echasnovski/mini.animate', Cond(g:animation_enable)
|
||||
|
||||
Plug 'nvim-lualine/lualine.nvim'
|
||||
Plug 'karb94/neoscroll.nvim'
|
||||
Plug 'petertriho/nvim-scrollbar'
|
||||
Plug 'folke/which-key.nvim'
|
||||
Plug 'karb94/neoscroll.nvim', Cond(g:animation_enable)
|
||||
Plug 'petertriho/nvim-scrollbar', Cond(g:animation_enable)
|
||||
Plug 'folke/which-key.nvim', Cond(!g:high_performence)
|
||||
endif
|
||||
if g:vim_version >= 0.7
|
||||
Plug 'nvim-treesitter/nvim-treesitter', Cond(!exists('g:vscode') && executable('make'), {'do': ':TSUpdate'})
|
||||
Plug 'nvim-treesitter/nvim-treesitter', Cond(executable('make'), {'do': ':TSUpdate'})
|
||||
|
||||
" for telescope
|
||||
Plug 'nvim-lua/plenary.nvim'
|
||||
Plug 'nvim-telescope/telescope.nvim', Cond(g:vim_type == 'nvim', { 'tag': '0.1.x' })
|
||||
Plug 'nvim-telescope/telescope.nvim', Cond(g:vim_type == 'nvim', { 'branch': '0.1.x' })
|
||||
" c plugin for telescope to make it faster
|
||||
Plug 'nvim-telescope/telescope-fzf-native.nvim', Cond(!exists('g:vscode') && executable('make'), { 'do': 'make' })
|
||||
Plug 'nvim-telescope/telescope-fzf-native.nvim', Cond(executable('make'), { 'do': 'make' })
|
||||
|
||||
" comment out this plugin if the machine doesn't have required
|
||||
" font install
|
||||
@@ -128,19 +136,24 @@ let g:animation_enable = v:true
|
||||
if g:vim_version >= 0.8
|
||||
Plug 'nvim-tree/nvim-tree.lua'
|
||||
|
||||
Plug 'rcarriga/nvim-notify'
|
||||
Plug 'folke/noice.nvim'
|
||||
Plug 'MunifTanjim/nui.nvim'
|
||||
Plug 'rcarriga/nvim-notify', Cond(!g:high_performence && g:animation_enable)
|
||||
Plug 'folke/noice.nvim', Cond(!g:high_performence && g:animation_enable)
|
||||
Plug 'MunifTanjim/nui.nvim', Cond(!g:high_performence && g:animation_enable)
|
||||
endif
|
||||
endif
|
||||
|
||||
call plug#end()
|
||||
|
||||
" Automatically install missing plugins at startup
|
||||
autocmd VimEnter *
|
||||
\ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
|
||||
\| PlugInstall --sync | q
|
||||
\| endif
|
||||
augroup InitConfig
|
||||
autocmd VimLeave * call SaveConfig()
|
||||
|
||||
" Automatically install missing plugins at startup
|
||||
autocmd VimEnter *
|
||||
\ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
|
||||
\| PlugInstall --sync | q
|
||||
\| endif
|
||||
augroup end
|
||||
|
||||
" }
|
||||
|
||||
" UTILITIES
|
||||
@@ -149,7 +162,8 @@ let g:animation_enable = v:true
|
||||
" special filetypes probably defined by plugins that we don't want other
|
||||
" plugins to mess around with them
|
||||
|
||||
let g:special_fts = ['help', 'nerdtree']
|
||||
" import ultilities functions
|
||||
execute('source ' . g:mydotfiles_directory . '/utils.vim')
|
||||
|
||||
function! HasPlug(plug_name, ...)
|
||||
let plug_dir_name = get(a:, 1, a:plug_name) " optional argument for the name of plug's folder
|
||||
@@ -165,19 +179,60 @@ function! HasPlug(plug_name, ...)
|
||||
return v:false
|
||||
endfunction
|
||||
|
||||
function! SaveConfig()
|
||||
let p = ReadVariable(g:config_file_path)
|
||||
if type(p) != type({})
|
||||
let p = {}
|
||||
endif
|
||||
|
||||
let config = has_key(p, g:vim_type) && type(p[g:vim_type]) == 4
|
||||
\ ? p[g:vim_type] : {}
|
||||
let config = Merge(config, g:my_config)
|
||||
|
||||
" vim and nvim may have diferenrt available plugins
|
||||
let p[g:vim_type] = config
|
||||
call SaveVariable(p, g:config_file_path)
|
||||
endfunction
|
||||
|
||||
function! LoadConfig()
|
||||
let result = ReadVariable(g:config_file_path)
|
||||
" if it is dictionary
|
||||
if type(result) == 4
|
||||
if has_key(result, g:vim_type)
|
||||
let config = result[g:vim_type]
|
||||
if type(config) == 4 | return config | endif
|
||||
endif
|
||||
endif
|
||||
return {}
|
||||
endfunction
|
||||
|
||||
" }
|
||||
|
||||
" PLUGIN_CONFIGURATION
|
||||
" {
|
||||
|
||||
if HasPlug('Copilot.vim')
|
||||
" imap <expr> <C-n> <Plug>(copilot-next)
|
||||
" imap <expr> <C-p> <Plug>(copilot-prev)
|
||||
endif
|
||||
|
||||
if HasPlug('vimtex')
|
||||
if g:os == 'Darwin'
|
||||
let g:vimtex_view_method = 'skim'
|
||||
endif
|
||||
nmap <leader>lv <plug>(vimtex-view)
|
||||
nmap <leader>lc :VimtexCompile<CR>
|
||||
let g:vimtex_quickfix_open_on_warning = 0
|
||||
endif
|
||||
if HasPlug('minimap.vim')
|
||||
nnoremap <silent> <leader>mm :MinimapToggle<CR>
|
||||
let g:minimap_highlight_search = 1
|
||||
let g:minimap_git_colors = 1
|
||||
let g:minimap_enable_highlight_colorgroup = 1
|
||||
let g:minimap_block_filetypes = ['help', 'nerdtree']
|
||||
endif
|
||||
|
||||
if HasPlug('vista.vim')
|
||||
let g:special_fts += ['vista']
|
||||
let g:vista_default_executive = 'vim_lsp'
|
||||
if HasPlug('coc.nvim')
|
||||
let g:vista_default_executive = 'coc'
|
||||
@@ -524,7 +579,12 @@ endfunction
|
||||
call airline#parts#define_function('cocstatus', 'AirlineCocStatus')
|
||||
call airline#parts#define_accent('cocstatus', 'italic')
|
||||
|
||||
|
||||
function! AirlineInit()
|
||||
let _airline_section_y = ''
|
||||
if HasPlug('coc.nvim')
|
||||
let _airline_section_y .= airline#section#create(['cocstatus'])
|
||||
endif
|
||||
" this create function returns a format string for status line (:h
|
||||
" stl). the string we append is what will happend if we pass
|
||||
" cocstatus into the create function. By appending them we have
|
||||
@@ -535,7 +595,7 @@ endfunction
|
||||
let g:airline_section_error = ''
|
||||
let g:airline_section_warning = ''
|
||||
let g:airline_section_x = airline#section#create(['bufnum'])
|
||||
let g:airline_section_y = airline#section#create(['cocstatus'])
|
||||
let g:airline_section_y = _airline_section_y
|
||||
let g:airline_section_z = airline#section#create(['filetype'])
|
||||
|
||||
" see source for current list
|
||||
@@ -545,12 +605,21 @@ endfunction
|
||||
end
|
||||
endfunction
|
||||
|
||||
if !g:high_performence
|
||||
call timer_start(100, 's:aireline_refresh', {'repeat' : -1 })
|
||||
endif
|
||||
autocmd! CursorMoved * call s:aireline_refresh(0)
|
||||
" if !g:high_performence
|
||||
" call timer_start(100, 's:aireline_refresh', {'repeat' : -1 })
|
||||
" endif
|
||||
|
||||
function! s:airlineconfig()
|
||||
let g:my_config[&background].airline_theme = g:airline_theme
|
||||
endfunction
|
||||
autocmd AirlineAu User AirlineAfterTheme call s:airlineconfig()
|
||||
|
||||
endfunction
|
||||
autocmd! User AirlineAfterInit call AirlineInit()
|
||||
augroup AirlineAu
|
||||
autocmd!
|
||||
autocmd User AirlineAfterInit call AirlineInit()
|
||||
augroup end
|
||||
|
||||
let g:airline#extensions#localsearch#enabled = 0
|
||||
let g:airline_extensions = ['bufferline']
|
||||
@@ -591,10 +660,8 @@ endfunction
|
||||
if HasPlug("fzf") && HasPlug("fzf.vim")
|
||||
" [Buffers] Jump to the existing window if possible
|
||||
let g:fzf_buffers_jump = 1
|
||||
|
||||
"let $FZF_DEFAULT_COMMAND='find . \( -name node_modules -o -name .git \) -prune -o -print'
|
||||
|
||||
" - Preview window on the right with 50% width
|
||||
" - CTRL-/ will toggle preview window.
|
||||
if g:os == 'Windows'
|
||||
let g:fzf_preview_window = []
|
||||
@@ -602,6 +669,10 @@ endfunction
|
||||
let g:fzf_preview_window = ['right:50%', 'ctrl-/']
|
||||
end
|
||||
|
||||
let g:fzf_colors = {
|
||||
\ 'gutter': ['bg', 'normal'],
|
||||
\ }
|
||||
|
||||
" check if ripgrep is installed
|
||||
if ! executable('rg')
|
||||
command! -bang -nargs=* Rg
|
||||
@@ -609,9 +680,19 @@ endfunction
|
||||
\ 'grep -R --line-number --exclude-dir=".git;.svn" --color=always -- '.shellescape(<q-args>), 1,
|
||||
\ fzf#vim#with_preview(), <bang>0)
|
||||
endif
|
||||
|
||||
function! FzfColorSelect(color_name)
|
||||
execute("colorscheme " . a:color_name)
|
||||
call Theme_persistent(a:color_name)
|
||||
if has_key(g:colo2airline, a:color_name )
|
||||
call SetStatusLineTheme(g:colo2airline[a:color_name])
|
||||
endif
|
||||
endfunction
|
||||
|
||||
noremap <leader>fr :Rg<CR>
|
||||
noremap <leader>ff :Files<CR>
|
||||
noremap <leader>fc :Colors<CR>
|
||||
noremap <leader>fc :call fzf#vim#colors({
|
||||
\ 'sink': function('FzfColorSelect')})<CR>
|
||||
endif
|
||||
" }
|
||||
|
||||
@@ -654,17 +735,14 @@ endfunction
|
||||
"""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
" a list contains all available themes
|
||||
let g:all_dark_themes = []
|
||||
let g:all_light_themes = []
|
||||
|
||||
if HasPlug("tokyonight.nvim")
|
||||
end
|
||||
|
||||
if HasPlug("github-nvim-theme")
|
||||
let g:all_dark_themes += ['github_dark', 'github_dark_default', 'github_dimmed', 'github_dark_colorblind']
|
||||
let g:all_light_themes += ['github_light', 'github_light_default', 'github_light_colorblind']
|
||||
end
|
||||
|
||||
if HasPlug("nightfox.nvim")
|
||||
let g:all_dark_themes += ['nightfox']
|
||||
let g:all_light_themes += ['dawnfox']
|
||||
end
|
||||
|
||||
if HasPlug('nvim-transparent')
|
||||
@@ -684,18 +762,13 @@ endfunction
|
||||
endif
|
||||
|
||||
if HasPlug('everforest')
|
||||
let g:all_dark_themes += ['everforest']
|
||||
let g:all_light_themes += ['everforest']
|
||||
|
||||
let g:everforest_better_performance = 1
|
||||
let g:everforest_background = 'hard'
|
||||
" let g:everforest_enable_italic = 1
|
||||
function! Everforest_trans_enable()
|
||||
let g:everforest_transparent_background = 2
|
||||
colorscheme everforest
|
||||
if exists(':AirlineTheme')
|
||||
execute('AirlineTheme everforest')
|
||||
endif
|
||||
call SetStatusLineTheme('everforest')
|
||||
" hack to fix caret characters appearing in the statusline when StatusLine
|
||||
" and StatusLineNC has same highlight(https://vi.stackexchange.com/questions/15873/carets-in-status-line)
|
||||
hi StatusLine guifg=#d3c6aa ctermfg=223
|
||||
@@ -703,9 +776,7 @@ endfunction
|
||||
function! Everforest_trans_disable()
|
||||
let g:everforest_transparent_background = 0
|
||||
colorscheme everforest
|
||||
if exists(':AirlineTheme')
|
||||
execute('AirlineTheme everforest')
|
||||
endif
|
||||
call SetStatusLineTheme('everforest')
|
||||
endfunction
|
||||
function! CB_dark_tb_enable_everforest()
|
||||
call Everforest_trans_enable()
|
||||
@@ -722,184 +793,113 @@ endfunction
|
||||
|
||||
endif
|
||||
if HasPlug('papercolor-theme')
|
||||
let g:all_dark_themes += ['PaperColor']
|
||||
let g:all_light_themes += ['PaperColor']
|
||||
|
||||
function! CB_dark_tb_enable_PaperColor()
|
||||
let g:PaperColor_Theme_Options = {
|
||||
\ 'theme': {'default.dark': { 'transparent_background': 1 }}
|
||||
\ }
|
||||
execute("colorscheme " . g:dark_theme)
|
||||
\ 'theme': {'default.dark': { 'transparent_background': 1 }}}
|
||||
colorscheme PaperColor
|
||||
endfunction
|
||||
function! CB_light_tb_enable_PaperColor()
|
||||
let g:PaperColor_Theme_Options = {
|
||||
\ 'theme': {'default.light': { 'transparent_background': 1 }}
|
||||
\ }
|
||||
execute("colorscheme " . g:light_theme)
|
||||
\ 'theme': {'default.light': { 'transparent_background': 1 }}}
|
||||
colorscheme PaperColor
|
||||
endfunction
|
||||
function! CB_dark_tb_disable_PaperColor()
|
||||
let g:PaperColor_Theme_Options = {
|
||||
\ 'theme': {'default.dark': { 'transparent_background': 0 }}
|
||||
\ }
|
||||
execute("colorscheme " . g:dark_theme)
|
||||
\ 'theme': {'default.dark': { 'transparent_background': 0 }}}
|
||||
colorscheme PaperColor
|
||||
endfunction
|
||||
function! CB_light_tb_disable_PaperColor()
|
||||
let g:PaperColor_Theme_Options = {
|
||||
\ 'theme': {'default.light': { 'transparent_background': 0 }}
|
||||
\ }
|
||||
execute("colorscheme " . g:light_theme)
|
||||
\ 'theme': {'default.light': { 'transparent_background': 0 }}}
|
||||
colorscheme PaperColor
|
||||
endfunction
|
||||
endif
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""
|
||||
"""""""""" THEME_ULTILITIES """""""""""
|
||||
"""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
" debug function print out highlight group of cursor position
|
||||
function! ShowHighLightGroup()
|
||||
if !exists("*synstack")
|
||||
return
|
||||
endif
|
||||
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
|
||||
|
||||
:echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<'
|
||||
\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<"
|
||||
\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"
|
||||
|
||||
endfunc
|
||||
|
||||
nmap <Leader>db :call ShowHighLightGroup()<CR>
|
||||
|
||||
" search and filter highlight group
|
||||
" :call Sh('airline')
|
||||
function! Sh(pattern)
|
||||
execute("filter /" . a:pattern . "/ highlight")
|
||||
endfunc
|
||||
|
||||
" get current colorscheme name
|
||||
function! ColourSchemeName()
|
||||
try
|
||||
return g:colors_name
|
||||
catch /^Vim:E121/
|
||||
return "default"
|
||||
catch /.*/
|
||||
return "default"
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" delete signal file if exist
|
||||
function! DeleteSignalFile(name)
|
||||
if filereadable(g:vim_dir . a:name)
|
||||
call delete(g:vim_dir . a:name)
|
||||
function! SetDarkTheme(...)
|
||||
let colors_name = a:0 > 0 ? a:1 : g:my_config.dark.theme
|
||||
if HasColorscheme(colors_name)
|
||||
execute("colorscheme " . colors_name)
|
||||
if &background == 'light'
|
||||
set background=dark
|
||||
endif
|
||||
let g:my_config.dark.theme = colors_name
|
||||
let g:my_config.background = 'dark'
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Create signal file if not exist
|
||||
function! CreateSignalFile(name)
|
||||
call system("touch " . g:vim_dir . a:name)
|
||||
endfunction
|
||||
|
||||
function! SignalFileExists(filename)
|
||||
if filereadable(g:vim_dir . a:filename)
|
||||
return v:true
|
||||
function! SetLightTheme(...)
|
||||
let colors_name = a:0 > 0 ? a:1 : g:my_config.light.theme
|
||||
if HasColorscheme(colors_name)
|
||||
execute("colorscheme " . colors_name)
|
||||
if &background == 'dark'
|
||||
set background=light
|
||||
endif
|
||||
let g:my_config.light.theme = colors_name
|
||||
let g:my_config.background = 'light'
|
||||
endif
|
||||
return v:false
|
||||
endfunction
|
||||
|
||||
function! SetDarkTheme()
|
||||
set background=dark
|
||||
" hi clear
|
||||
execute("colorscheme " . g:dark_theme)
|
||||
let g:dark_or_light_theme = 'dark'
|
||||
endfunction
|
||||
|
||||
function! SetLightTheme()
|
||||
set background=light
|
||||
" hi clear
|
||||
execute("colorscheme " . g:light_theme)
|
||||
execute("colorscheme " . g:light_theme)
|
||||
let g:dark_or_light_theme = 'light'
|
||||
endfunction
|
||||
|
||||
" Change bottom airline/lualine theme
|
||||
function! SetStatusLineTheme(theme)
|
||||
if g:vim_type == 'nvim' && g:vim_version >= 0.5
|
||||
function! SetStatusLineTheme(...)
|
||||
if has('nvim-0.5')
|
||||
" lualine will change theme automatically
|
||||
else
|
||||
if HasPlug('vim-airline') && HasPlug('vim-airline-themes')
|
||||
execute('AirlineTheme ' . a:theme)
|
||||
if HasPlug('vim-airline') && HasPlug('vim-airline-themes') && exists(':AirlineTheme')
|
||||
let theme = a:0 > 0 ? a:1 : g:my_config[&background].airline_theme
|
||||
try
|
||||
execute('AirlineTheme ' . a:theme)
|
||||
catch
|
||||
let theme = g:default_config[&background].airline_theme
|
||||
execute('AirlineTheme ' . theme)
|
||||
endtry
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! EnableTransparent()
|
||||
let colorscheme_name = ColourSchemeName()
|
||||
if g:dark_or_light_theme == 'dark'
|
||||
let dark_cb_name = 'CB_dark_tb_enable_' . colorscheme_name
|
||||
if exists('*' . dark_cb_name)
|
||||
execute('call ' . dark_cb_name . '()')
|
||||
elseif g:dark_transparent_enable_cb != ''
|
||||
execute('call ' . g:dark_transparent_enable_cb . '()')
|
||||
else
|
||||
return
|
||||
let bg = &background
|
||||
let cb_name = 'CB_' .bg. '_tb_enable_'.colorscheme_name
|
||||
if exists('*' . cb_name)
|
||||
execute('call ' . cb_name . '()')
|
||||
elseif exists('g:'.bg.'_transparent_enable_cb') && g:dark_transparent_enable_cb != ''
|
||||
let cb_name = get(g:, bg.'_transparent_enable_cb', '')
|
||||
if cb_name != ''
|
||||
execute('call '.cb_name.'()')
|
||||
endif
|
||||
let g:transparent_dark_theme = v:true
|
||||
call CreateSignalFile('.transparent_dark_theme.signal')
|
||||
else
|
||||
let light_cb_name = 'CB_light_tb_enable_' . colorscheme_name
|
||||
if exists('*' . light_cb_name)
|
||||
execute('call ' . light_cb_name . '()')
|
||||
elseif g:light_transparent_enable_cb != ''
|
||||
execute('call ' . g:light_transparent_enable_cb . '()')
|
||||
else
|
||||
return
|
||||
endif
|
||||
let g:transparent_light_theme = v:true
|
||||
call CreateSignalFile('.transparent_light_theme.signal')
|
||||
return
|
||||
endif
|
||||
let g:my_config[&background].transparent = v:true
|
||||
endfunction
|
||||
|
||||
function! DisableTransparent()
|
||||
let colorscheme_name = ColourSchemeName()
|
||||
if g:dark_or_light_theme == 'dark'
|
||||
let dark_cb_name = 'CB_dark_tb_disable_' . colorscheme_name
|
||||
if exists('*' . dark_cb_name)
|
||||
set background=dark
|
||||
execute('call ' . dark_cb_name . '()')
|
||||
elseif g:dark_transparent_disable_cb != ''
|
||||
execute('call ' . g:dark_transparent_disable_cb . '()')
|
||||
else
|
||||
return
|
||||
let bg = &background
|
||||
let cb_name = 'CB_' . bg . '_tb_disable_'.colorscheme_name
|
||||
if exists('*' . cb_name)
|
||||
execute('call ' . cb_name . '()')
|
||||
elseif exists('g:'.bg.'_transparent_disable_cb')
|
||||
let cb_name = get(g:, bg.'_transparent_disable_cb', '')
|
||||
if cb_name != ''
|
||||
execute('call '.cb_name.'()')
|
||||
endif
|
||||
let g:transparent_dark_theme = v:false
|
||||
call DeleteSignalFile('.transparent_dark_theme.signal')
|
||||
else
|
||||
let light_cb_name = 'CB_light_tb_disable_' . colorscheme_name
|
||||
if exists('*' . light_cb_name)
|
||||
set background=light
|
||||
execute('call ' . light_cb_name . '()')
|
||||
elseif g:light_transparent_disable_cb != ''
|
||||
execute('call ' . g:light_transparent_disable_cb . '()')
|
||||
else
|
||||
return
|
||||
endif
|
||||
let g:transparent_light_theme = v:false
|
||||
call DeleteSignalFile('.transparent_light_theme.signal')
|
||||
return
|
||||
endif
|
||||
" if g:vim_type == 'nvim' && g:vim_version > 0.5
|
||||
" :TransparentDisable
|
||||
" endif
|
||||
let g:my_config[&background].transparent = v:false
|
||||
endfunction
|
||||
|
||||
" ToggleTransparent background
|
||||
function! ToggleTransparent()
|
||||
if g:transparent_dark_theme && g:dark_or_light_theme == 'dark'
|
||||
if g:my_config[&background].transparent
|
||||
call DisableTransparent()
|
||||
elseif g:transparent_light_theme && g:dark_or_light_theme == 'light'
|
||||
call DisableTransparent()
|
||||
elseif ! g:transparent_light_theme && g:dark_or_light_theme == 'light'
|
||||
call EnableTransparent()
|
||||
elseif ! g:transparent_dark_theme && g:dark_or_light_theme == 'dark'
|
||||
else
|
||||
call EnableTransparent()
|
||||
endif
|
||||
endfunction
|
||||
@@ -907,23 +907,28 @@ endfunction
|
||||
" Allow to trigger background
|
||||
function! ToggleBG()
|
||||
" Inversion
|
||||
if g:dark_or_light_theme == "dark"
|
||||
if &background == "dark"
|
||||
call SetLightTheme()
|
||||
call SetStatusLineTheme(g:airline_light_theme)
|
||||
call CreateSignalFile('.light_theme.signal')
|
||||
else
|
||||
call SetDarkTheme()
|
||||
call SetStatusLineTheme(g:airline_dark_theme)
|
||||
call DeleteSignalFile('.light_theme.signal')
|
||||
endif
|
||||
call SetStatusLineTheme(g:my_config[&background].airline_theme)
|
||||
|
||||
if (g:transparent_dark_theme && g:dark_or_light_theme == 'dark') || (g:transparent_light_theme && g:dark_or_light_theme == 'light')
|
||||
if g:my_config[&background].transparent
|
||||
call EnableTransparent()
|
||||
else
|
||||
call DisableTransparent()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" persistent config over colorscheme change
|
||||
function! Theme_persistent(...)
|
||||
let color_name = a:0 > 0 ? a:1 : ColourSchemeName()
|
||||
|
||||
let g:my_config.background = &background
|
||||
let g:my_config[&background].theme = color_name
|
||||
endfunction
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""
|
||||
""""""""""""" THEME_INIT """"""""""""""
|
||||
"""""""""""""""""""""""""""""""""""""""
|
||||
@@ -931,84 +936,80 @@ endfunction
|
||||
" transparent backgroud for supported terminal emulator
|
||||
" check if transparent_dark_theme.signl or transparent_light_theme.signl
|
||||
" exist and set respect variable
|
||||
let g:transparent_dark_theme = v:false
|
||||
let g:transparent_light_theme = v:false
|
||||
|
||||
function! Theme_initilize()
|
||||
if SignalFileExists('.transparent_dark_theme.signal')
|
||||
let g:transparent_dark_theme = v:true
|
||||
endif
|
||||
if SignalFileExists('.transparent_light_theme.signal')
|
||||
let g:transparent_light_theme = v:true
|
||||
if has('termguicolors')
|
||||
set termguicolors
|
||||
endif
|
||||
|
||||
" dark or light
|
||||
if filereadable(g:vim_dir . '.light_theme.signal')
|
||||
let g:dark_or_light_theme = 'light'
|
||||
if g:my_config.background == 'dark'
|
||||
if HasColorscheme(g:my_config.dark.theme)
|
||||
call SetDarkTheme()
|
||||
else
|
||||
call SetDarkTheme(g:my_config.dark.default)
|
||||
endif
|
||||
call SetStatusLineTheme(g:my_config.dark.airline_theme)
|
||||
else
|
||||
let g:dark_or_light_theme = 'dark'
|
||||
if HasColorscheme(g:my_config.dark.theme)
|
||||
call SetLightTheme()
|
||||
else
|
||||
call SetLightTheme(g:my_config.light.default)
|
||||
endif
|
||||
call SetStatusLineTheme(g:my_config.light.airline_theme)
|
||||
endif
|
||||
|
||||
if g:dark_or_light_theme == 'dark'
|
||||
let g:airline_theme=g:airline_dark_theme
|
||||
call SetDarkTheme()
|
||||
else
|
||||
let g:airline_theme=g:airline_light_theme
|
||||
call SetLightTheme()
|
||||
endif
|
||||
if (g:transparent_dark_theme && g:dark_or_light_theme == 'dark')
|
||||
\ || (g:transparent_light_theme && g:dark_or_light_theme == 'light')
|
||||
if g:my_config[g:my_config.background].transparent
|
||||
call EnableTransparent()
|
||||
else
|
||||
call DisableTransparent()
|
||||
endif
|
||||
endfunction
|
||||
au! VimEnter * call Theme_initilize()
|
||||
|
||||
augroup ThemeAuGroup
|
||||
autocmd!
|
||||
autocmd VimEnter * call Theme_initilize()
|
||||
augroup END
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""
|
||||
""""""""""" THEME_OPTIONS """""""""""""
|
||||
"""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
" Default
|
||||
let g:dark_theme = 'default'
|
||||
let g:light_theme = 'default'
|
||||
let g:default_config = {
|
||||
\ 'background': 'dark',
|
||||
\ 'dark': {
|
||||
\ 'theme': 'default',
|
||||
\ 'default': 'default',
|
||||
\ 'transparent': v:false,
|
||||
\ 'airline_theme': 'angr',
|
||||
\ },
|
||||
\ 'light': {
|
||||
\ 'theme': 'default',
|
||||
\ 'default': 'default',
|
||||
\ 'transparent': v:false,
|
||||
\ 'airline_theme': 'silver',
|
||||
\ },
|
||||
\ }
|
||||
|
||||
" for airline
|
||||
let g:airline_dark_theme = "angr"
|
||||
let g:airline_light_theme = "silver"
|
||||
let g:my_config = {}
|
||||
|
||||
" vim theme
|
||||
if g:vim_type == 'vim'
|
||||
set t_Co=256
|
||||
if has('termguicolors')
|
||||
set termguicolors
|
||||
endif
|
||||
let g:colo2airline = {
|
||||
\ }
|
||||
|
||||
if HasPlug("papercolor-theme")
|
||||
" improve coc color in this theme
|
||||
let g:light_theme = 'PaperColor'
|
||||
endif
|
||||
|
||||
if HasPlug("everforest")
|
||||
let g:light_theme = 'everforest'
|
||||
let g:dark_theme = 'everforest'
|
||||
let g:airline_dark_theme = "everforest"
|
||||
let g:airline_light_theme = "everforest"
|
||||
endif
|
||||
endif
|
||||
|
||||
if g:vim_type == 'nvim'
|
||||
if HasPlug("nightfox.nvim")
|
||||
let g:light_theme = 'dawnfox'
|
||||
let g:dark_theme = 'nightfox'
|
||||
end
|
||||
|
||||
if HasPlug("github-nvim-theme")
|
||||
let g:dark_theme = 'github_dark'
|
||||
let g:airline_dark_theme = "hybrid"
|
||||
end
|
||||
" permenent default
|
||||
if HasPlug("everforest")
|
||||
let g:default_config = Merge(g:default_config, {
|
||||
\ 'dark': {
|
||||
\ 'airline_theme': 'everforest',
|
||||
\ 'default': 'everforest',
|
||||
\ },
|
||||
\ 'light': {
|
||||
\ 'airline_theme': 'everforest',
|
||||
\ 'default': 'everforest',
|
||||
\ },
|
||||
\ })
|
||||
endif
|
||||
|
||||
let g:my_config = Merge(g:default_config, LoadConfig())
|
||||
" }
|
||||
|
||||
" KEY_MAPS
|
||||
@@ -1031,7 +1032,8 @@ endfunction
|
||||
|
||||
" leader num change tab
|
||||
" only for vim or nvim without lualine
|
||||
if g:vim_type == 'vim' || (g:vim_type == 'nvim' && g:vim_version < 0.5)
|
||||
|
||||
if (g:vim_type == 'vim' || !has('nvim-0.5')) && HasPlug('vim-bufferline')
|
||||
for i in range(1, 9)
|
||||
execute "nnoremap <silent> <nowait> <leader>" . i .
|
||||
\ " :call bufferline#jump(" . i . ")<CR>"
|
||||
@@ -1052,9 +1054,3 @@ if g:vim_type == 'nvim' && filereadable(g:mydotfiles_directory . '.vimrc.lua')
|
||||
execute('source ' . g:mydotfiles_directory . '/.vimrc.lua')
|
||||
endif
|
||||
|
||||
" OTHER_CONFIGS
|
||||
|
||||
if filereadable(g:mydotfiles_directory . "/config/theme.vim")
|
||||
" exec "source " . g:mydotfiles_directory . "/config/theme.vim"
|
||||
endif
|
||||
|
||||
|
||||
+440
-427
@@ -6,9 +6,10 @@
|
||||
-- jump animation. (Performence will be effected)
|
||||
local animation_enable = vim.g.animation_enable
|
||||
local high_performence = vim.g.high_performence
|
||||
local debug_mode = vim.g.debug_mode
|
||||
|
||||
-- false basicly enable plugins like noice, nvim-notify etc.
|
||||
local classic_vim_ui = vim.g.classic_vim_ui
|
||||
local classic_vim_ui = vim.g.classic_vim_ui
|
||||
|
||||
-------------------------------------------------
|
||||
------------------UTILITIES----------------------
|
||||
@@ -22,30 +23,29 @@ end
|
||||
-- use as a wrapper function to set keymap that call a function with
|
||||
-- parameters
|
||||
local _wrap = function(func, ...)
|
||||
local args = { ... }
|
||||
return function()
|
||||
func(unpack(args))
|
||||
end
|
||||
local args = { ... }
|
||||
return function()
|
||||
func(unpack(args))
|
||||
end
|
||||
end
|
||||
|
||||
-- use to print object
|
||||
function _G.put(...)
|
||||
local objects = {}
|
||||
for i = 1, select('#', ...) do
|
||||
local v = select(i, ...)
|
||||
table.insert(objects, vim.inspect(v))
|
||||
end
|
||||
local objects = {}
|
||||
for i = 1, select('#', ...) do
|
||||
local v = select(i, ...)
|
||||
table.insert(objects, vim.inspect(v))
|
||||
end
|
||||
|
||||
print(table.concat(objects, '\n'))
|
||||
return ...
|
||||
print(table.concat(objects, '\n'))
|
||||
return ...
|
||||
end
|
||||
|
||||
local wk = nil
|
||||
local function wk_register(opt)
|
||||
if wk == nil then
|
||||
return
|
||||
end
|
||||
wk.register(opt)
|
||||
if wk == nil then
|
||||
return
|
||||
end
|
||||
wk.register(opt)
|
||||
end
|
||||
|
||||
-------------------------------------------------
|
||||
@@ -58,494 +58,507 @@ local vim_version_minor = vim_version['minor']
|
||||
|
||||
local show_icon = false
|
||||
if HasPlug('nvim-web-devicons') then
|
||||
show_icon = true
|
||||
show_icon = true
|
||||
end
|
||||
|
||||
local function nvim_noice_config()
|
||||
if classic_vim_ui
|
||||
or not HasPlug('noice.nvim')
|
||||
or not HasPlug('nvim-notify')
|
||||
or not HasPlug('nui.nvim') then
|
||||
return
|
||||
end
|
||||
if classic_vim_ui
|
||||
or not HasPlug('noice.nvim')
|
||||
or not HasPlug('nvim-notify')
|
||||
or not HasPlug('nui.nvim') then
|
||||
return
|
||||
end
|
||||
|
||||
require("noice").setup({
|
||||
lsp = {
|
||||
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true,
|
||||
},
|
||||
},
|
||||
-- you can enable a preset for easier configuration
|
||||
presets = {
|
||||
bottom_search = true, -- use a classic bottom cmdline for search
|
||||
-- command_palette = true, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||
},
|
||||
cmdline = {
|
||||
enabled = true, -- enables the Noice cmdline UI
|
||||
-- view = "cmdline", -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom
|
||||
opts = {}, -- global options for the cmdline. See section on views
|
||||
format = {
|
||||
-- cmdline = false,
|
||||
search_down = false,
|
||||
search_up = false,
|
||||
-- filter = false,
|
||||
-- help = false,
|
||||
-- input = {}, -- Used by input()
|
||||
-- lua = false, -- to disable a format, set to `false`
|
||||
},
|
||||
},
|
||||
messages = {
|
||||
-- NOTE: If you enable messages, then the cmdline is enabled automatically.
|
||||
-- This is a current Neovim limitation.
|
||||
enabled = true, -- enables the Noice messages UI
|
||||
view = "notify", -- default view for messages
|
||||
view_error = "notify", -- view for errors
|
||||
view_warn = "notify", -- view for warnings
|
||||
view_history = "messages", -- view for :messages
|
||||
view_search = false, -- view for search count messages. Set to `false` to disable
|
||||
},
|
||||
})
|
||||
require("noice").setup({
|
||||
lsp = {
|
||||
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true,
|
||||
},
|
||||
},
|
||||
-- you can enable a preset for easier configuration
|
||||
presets = {
|
||||
bottom_search = true, -- use a classic bottom cmdline for search
|
||||
-- command_palette = true, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||
},
|
||||
cmdline = {
|
||||
enabled = true, -- enables the Noice cmdline UI
|
||||
-- view = "cmdline", -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom
|
||||
opts = {}, -- global options for the cmdline. See section on views
|
||||
format = {
|
||||
-- cmdline = false,
|
||||
search_down = false,
|
||||
search_up = false,
|
||||
-- filter = false,
|
||||
-- help = false,
|
||||
-- input = {}, -- Used by input()
|
||||
-- lua = false, -- to disable a format, set to `false`
|
||||
},
|
||||
},
|
||||
messages = {
|
||||
-- NOTE: If you enable messages, then the cmdline is enabled automatically.
|
||||
-- This is a current Neovim limitation.
|
||||
enabled = true, -- enables the Noice messages UI
|
||||
view = "notify", -- default view for messages
|
||||
view_error = "notify", -- view for errors
|
||||
view_warn = "notify", -- view for warnings
|
||||
view_history = "messages", -- view for :messages
|
||||
view_search = false, -- view for search count messages. Set to `false` to disable
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
local function nvim_scrollbar_config()
|
||||
if classic_vim_ui or
|
||||
not HasPlug('nvim-scrollbar') then
|
||||
return
|
||||
end
|
||||
require("scrollbar").setup({
|
||||
excluded_filetypes = {
|
||||
"prompt",
|
||||
"TelescopePrompt",
|
||||
"noice",
|
||||
"startify",
|
||||
"vista",
|
||||
},
|
||||
})
|
||||
if classic_vim_ui or
|
||||
not HasPlug('nvim-scrollbar') then
|
||||
return
|
||||
end
|
||||
require("scrollbar").setup({
|
||||
excluded_filetypes = {
|
||||
"prompt",
|
||||
"TelescopePrompt",
|
||||
"noice",
|
||||
"startify",
|
||||
"vista",
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
local function toggleterm_config()
|
||||
if not HasPlug('toggleterm.nvim') then
|
||||
return
|
||||
end
|
||||
require("toggleterm").setup({
|
||||
open_mapping = [[<c-\>]],
|
||||
})
|
||||
function _G.set_terminal_keymaps()
|
||||
local opts = {buffer = 0}
|
||||
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', 'jk', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', '<C-h>', [[<Cmd>wincmd h<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-j>', [[<Cmd>wincmd j<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-k>', [[<Cmd>wincmd k<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-l>', [[<Cmd>wincmd l<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
|
||||
end
|
||||
if not HasPlug('toggleterm.nvim') then
|
||||
return
|
||||
end
|
||||
require("toggleterm").setup({
|
||||
open_mapping = [[<c-\>]],
|
||||
})
|
||||
function _G.set_terminal_keymaps()
|
||||
local opts = { buffer = 0 }
|
||||
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', 'jk', [[<C-\><C-n>]], opts)
|
||||
vim.keymap.set('t', '<C-h>', [[<Cmd>wincmd h<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-j>', [[<Cmd>wincmd j<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-k>', [[<Cmd>wincmd k<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-l>', [[<Cmd>wincmd l<CR>]], opts)
|
||||
vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
|
||||
end
|
||||
|
||||
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
|
||||
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
|
||||
end
|
||||
|
||||
local function vim_illuminate_config()
|
||||
if not HasPlug('vim-illuminate') then
|
||||
return
|
||||
end
|
||||
local illuminate = require('illuminate')
|
||||
illuminate.configure({
|
||||
providers = {
|
||||
'lsp',
|
||||
'treesitter',
|
||||
'regex',
|
||||
},
|
||||
delay = 0,
|
||||
filetype_overrides = {},
|
||||
filetypes_denylist = {
|
||||
'dirvish',
|
||||
'fugitive',
|
||||
'NvimTree',
|
||||
'help',
|
||||
'vista',
|
||||
},
|
||||
filetypes_allowlist = {},
|
||||
modes_denylist = {},
|
||||
modes_allowlist = {},
|
||||
providers_regex_syntax_denylist = {},
|
||||
providers_regex_syntax_allowlist = {},
|
||||
under_cursor = true,
|
||||
large_file_cutoff = nil,
|
||||
large_file_overrides = nil,
|
||||
min_count_to_highlight = 1,
|
||||
})
|
||||
if not HasPlug('vim-illuminate') then
|
||||
return
|
||||
end
|
||||
local illuminate = require('illuminate')
|
||||
illuminate.configure({
|
||||
providers = {
|
||||
'lsp',
|
||||
'treesitter',
|
||||
'regex',
|
||||
},
|
||||
delay = 0,
|
||||
filetype_overrides = {},
|
||||
filetypes_denylist = {
|
||||
'dirvish',
|
||||
'fugitive',
|
||||
'NvimTree',
|
||||
'help',
|
||||
'vista',
|
||||
},
|
||||
filetypes_allowlist = {},
|
||||
modes_denylist = {},
|
||||
modes_allowlist = {},
|
||||
providers_regex_syntax_denylist = {},
|
||||
providers_regex_syntax_allowlist = {},
|
||||
under_cursor = true,
|
||||
large_file_cutoff = nil,
|
||||
large_file_overrides = nil,
|
||||
min_count_to_highlight = 1,
|
||||
})
|
||||
end
|
||||
|
||||
local function which_key_config()
|
||||
if not HasPlug('which-key.nvim') then
|
||||
return
|
||||
end
|
||||
wk = require("which-key")
|
||||
wk.setup()
|
||||
if not HasPlug('which-key.nvim') then
|
||||
return
|
||||
end
|
||||
wk = require("which-key")
|
||||
wk.setup()
|
||||
end
|
||||
|
||||
vim.g.hhx = ''
|
||||
local function telescope_config()
|
||||
if not HasPlug('telescope.nvim') then
|
||||
return
|
||||
end
|
||||
if HasPlug('telescope-fzf-native.nvim') then
|
||||
require('telescope').setup {
|
||||
pickers = {
|
||||
colorscheme = {
|
||||
enable_preview = true
|
||||
}
|
||||
if not HasPlug('telescope.nvim') then
|
||||
return
|
||||
end
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require "telescope.actions.state"
|
||||
if HasPlug('telescope-fzf-native.nvim') then
|
||||
require('telescope').setup {
|
||||
pickers = {
|
||||
colorscheme = {
|
||||
enable_preview = true,
|
||||
mappings = {
|
||||
i = {
|
||||
["<CR>"] = function(bufnr)
|
||||
local selection = action_state.get_selected_entry()
|
||||
actions.select_default()
|
||||
vim.fn.Theme_persistent(selection.value)
|
||||
end,
|
||||
},
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true,
|
||||
override_file_sorter = true,
|
||||
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
require('telescope').load_extension('fzf')
|
||||
end
|
||||
},
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true,
|
||||
override_file_sorter = true,
|
||||
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||
}
|
||||
}
|
||||
}
|
||||
require('telescope').load_extension('fzf')
|
||||
end
|
||||
|
||||
local builtin = require('telescope.builtin')
|
||||
local builtin = require('telescope.builtin')
|
||||
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, { desc = "Search files inside cwd" })
|
||||
-- need to install ripgrep
|
||||
vim.keymap.set('n', '<leader>fr', builtin.live_grep, { desc = "Regex search inside files" })
|
||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = "Search buffers" })
|
||||
vim.keymap.set('n', '<leader>fc', builtin.colorscheme, { desc = "Search colorscheme" })
|
||||
wk_register({ ["<leader>f"] = { name = "+Telescope" }})
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, { desc = "Search files inside cwd" })
|
||||
-- need to install ripgrep
|
||||
vim.keymap.set('n', '<leader>fr', builtin.live_grep, { desc = "Regex search inside files" })
|
||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = "Search buffers" })
|
||||
vim.keymap.set('n', '<leader>fc', builtin.colorscheme, { desc = "Search colorscheme" })
|
||||
wk_register({ ["<leader>f"] = { name = "+Telescope" } })
|
||||
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "TelescopePreviewerLoaded",
|
||||
command = "setlocal wrap number" })
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "TelescopePreviewerLoaded",
|
||||
command = "setlocal wrap number"
|
||||
})
|
||||
end
|
||||
|
||||
local function github_theme_config()
|
||||
if not HasPlug('github-nvim-theme') then
|
||||
return
|
||||
if not HasPlug('github-nvim-theme') then
|
||||
return
|
||||
end
|
||||
-- Example config in Lua
|
||||
require("github-theme").setup({
|
||||
-- Overwrite the highlight groups
|
||||
overrides = function(c)
|
||||
return {
|
||||
NormalFloat = { link = 'Pmenu' },
|
||||
}
|
||||
end
|
||||
-- Example config in Lua
|
||||
require("github-theme").setup({
|
||||
-- Overwrite the highlight groups
|
||||
overrides = function(c)
|
||||
return {
|
||||
NormalFloat = { link = 'Pmenu' },
|
||||
}
|
||||
end
|
||||
})
|
||||
})
|
||||
end
|
||||
|
||||
local function animate_config()
|
||||
if not animation_enable then
|
||||
return
|
||||
end
|
||||
if not animation_enable then
|
||||
return
|
||||
end
|
||||
|
||||
if HasPlug('mini.animate') then
|
||||
if HasPlug('mini.animate') then
|
||||
local animate = require('mini.animate')
|
||||
animate.setup({
|
||||
cursor = {
|
||||
-- Whether to enable this animation
|
||||
enable = true,
|
||||
-- Timing of animation (how steps will progress in time)
|
||||
-- timing = --<function: implements linear total 250ms animation duration>,
|
||||
},
|
||||
scroll = {
|
||||
-- Whether to enable this animation
|
||||
enable = true,
|
||||
-- Timing of animation (how steps will progress in time)
|
||||
timing = animate.gen_timing.linear({ duration = 150, unit = 'total' }),
|
||||
},
|
||||
open = {
|
||||
-- Whether to enable this animation
|
||||
enable = false,
|
||||
},
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason",
|
||||
"NvimTree", "vista", "toggleterm", "noice" },
|
||||
callback = function()
|
||||
vim.b.minianimate_disable = true
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
local animate = require('mini.animate')
|
||||
animate.setup({
|
||||
cursor = {
|
||||
-- Whether to enable this animation
|
||||
enable = true,
|
||||
-- Timing of animation (how steps will progress in time)
|
||||
-- timing = --<function: implements linear total 250ms animation duration>,
|
||||
},
|
||||
scroll = {
|
||||
-- Whether to enable this animation
|
||||
enable = true,
|
||||
-- Timing of animation (how steps will progress in time)
|
||||
timing = animate.gen_timing.linear({ duration = 150, unit = 'total' }),
|
||||
},
|
||||
open = {
|
||||
-- Whether to enable this animation
|
||||
enable = false,
|
||||
},
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason",
|
||||
"NvimTree", "vista", "toggleterm", "noice" },
|
||||
callback = function()
|
||||
vim.b.minianimate_disable = true
|
||||
end,
|
||||
})
|
||||
end
|
||||
-- if HasPlug('neoscroll.nvim') then
|
||||
-- require('neoscroll').setup({
|
||||
-- -- Set any options as needed
|
||||
-- mappings = {'<C-u>', '<C-d>', '<C-b>', '<C-f>',
|
||||
-- },
|
||||
-- })
|
||||
|
||||
-- if HasPlug('neoscroll.nvim') then
|
||||
-- require('neoscroll').setup({
|
||||
-- -- Set any options as needed
|
||||
-- mappings = {'<C-u>', '<C-d>', '<C-b>', '<C-f>',
|
||||
-- },
|
||||
-- })
|
||||
-- local t = {}
|
||||
-- -- Syntax: t[keys] = {function, {function arguments}}
|
||||
-- t['<C-u>'] = {'scroll', {'-vim.wo.scroll', 'true', '150'}}
|
||||
-- t['<C-d>'] = {'scroll', { 'vim.wo.scroll', 'true', '150'}}
|
||||
-- t['<C-b>'] = {'scroll', {'-vim.api.nvim_win_get_height(0)', 'true', '200'}}
|
||||
-- t['<C-f>'] = {'scroll', { 'vim.api.nvim_win_get_height(0)', 'true', '200'}}
|
||||
-- -- t['zb'] = {'zb', {'250'}}
|
||||
|
||||
-- local t = {}
|
||||
-- -- Syntax: t[keys] = {function, {function arguments}}
|
||||
-- t['<C-u>'] = {'scroll', {'-vim.wo.scroll', 'true', '150'}}
|
||||
-- t['<C-d>'] = {'scroll', { 'vim.wo.scroll', 'true', '150'}}
|
||||
-- t['<C-b>'] = {'scroll', {'-vim.api.nvim_win_get_height(0)', 'true', '200'}}
|
||||
-- t['<C-f>'] = {'scroll', { 'vim.api.nvim_win_get_height(0)', 'true', '200'}}
|
||||
-- -- t['zb'] = {'zb', {'250'}}
|
||||
|
||||
-- require('neoscroll.config').set_mappings(t)
|
||||
-- end
|
||||
-- require('neoscroll.config').set_mappings(t)
|
||||
-- end
|
||||
end
|
||||
|
||||
local function indentline_config()
|
||||
if not animation_enable then
|
||||
if HasPlug('indent-blankline.nvim') then
|
||||
-- Example config in Lua
|
||||
require("indent_blankline").setup {
|
||||
show_current_context = true,
|
||||
filetype_exclude = { "lspinfo", "packer", "checkhealth",
|
||||
"help", "man", "", "startify", }
|
||||
-- use_treesitter = true,
|
||||
}
|
||||
end
|
||||
else
|
||||
if HasPlug('mini.indentscope') then
|
||||
MiniIndentscope = require('mini.indentscope')
|
||||
MiniIndentscope.setup({
|
||||
symbol = '│',
|
||||
-- draw = {
|
||||
-- animation = MiniIndentscope.gen_animation.linear({
|
||||
-- easing = 'out',
|
||||
-- duration = 150,
|
||||
-- unit = 'total'
|
||||
-- })
|
||||
-- },
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason",
|
||||
"NvimTree", "vista", "startify", "toggleterm" },
|
||||
callback = function()
|
||||
vim.b.miniindentscope_disable = true
|
||||
end,
|
||||
})
|
||||
end
|
||||
if not animation_enable then
|
||||
if HasPlug('indent-blankline.nvim') then
|
||||
-- Example config in Lua
|
||||
require("indent_blankline").setup {
|
||||
show_current_context = true,
|
||||
filetype_exclude = { "lspinfo", "packer", "checkhealth",
|
||||
"help", "man", "", "startify", }
|
||||
-- use_treesitter = true,
|
||||
}
|
||||
end
|
||||
else
|
||||
if HasPlug('mini.indentscope') then
|
||||
MiniIndentscope = require('mini.indentscope')
|
||||
MiniIndentscope.setup({
|
||||
symbol = '│',
|
||||
-- draw = {
|
||||
-- animation = MiniIndentscope.gen_animation.linear({
|
||||
-- easing = 'out',
|
||||
-- duration = 150,
|
||||
-- unit = 'total'
|
||||
-- })
|
||||
-- },
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason",
|
||||
"NvimTree", "vista", "startify", "toggleterm" },
|
||||
callback = function()
|
||||
vim.b.miniindentscope_disable = true
|
||||
end,
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function transparent_config()
|
||||
if not HasPlug('nvim-transparent') then
|
||||
return
|
||||
end
|
||||
require("transparent").setup({
|
||||
enable = true, -- boolean: enable transparent
|
||||
extra_groups = { -- table/string: additional groups that should be cleared
|
||||
-- In particular, when you set it to 'all', that means all available groups
|
||||
"NvimTreeNormal",
|
||||
"VertSplit",
|
||||
},
|
||||
exclude = {}, -- table: groups you don't want to clear
|
||||
})
|
||||
if not HasPlug('nvim-transparent') then
|
||||
return
|
||||
end
|
||||
require("transparent").setup({
|
||||
extra_groups = { -- table/string: additional groups that should be cleared
|
||||
-- In particular, when you set it to 'all', that means all available groups
|
||||
"NvimTreeNormal",
|
||||
"VertSplit",
|
||||
},
|
||||
exclude_groups = {}, -- table: groups you don't want to clear
|
||||
})
|
||||
end
|
||||
|
||||
local function lualine_config()
|
||||
if not HasPlug('lualine.nvim') then
|
||||
return
|
||||
if not HasPlug('lualine.nvim') then
|
||||
return
|
||||
end
|
||||
|
||||
vim.api.nvim_set_hl(0, 'CocstatusSucceed', { fg = "#e32be0" })
|
||||
vim.api.nvim_set_hl(0, 'CocstatusLoading', { fg = "#35f0e9" })
|
||||
-- custom lualine plugin show coc lsp status
|
||||
local function cocstatus()
|
||||
local loading = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }
|
||||
local step = #loading
|
||||
local ok, result = pcall(vim.fn.CocAction, 'services')
|
||||
if not ok then
|
||||
return
|
||||
end
|
||||
local ft = vim.bo.filetype
|
||||
local state, id
|
||||
for _, entry in ipairs(result) do
|
||||
if entry['languageIds'][1] == ft then
|
||||
state = entry['state']
|
||||
id = entry['id']
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_set_hl(0, 'CocstatusSucceed', { fg = "#e32be0"})
|
||||
vim.api.nvim_set_hl(0, 'CocstatusLoading', { fg = "#35f0e9"})
|
||||
-- custom lualine plugin show coc lsp status
|
||||
local function cocstatus()
|
||||
local loading = {"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"}
|
||||
local step = #loading
|
||||
local ok, result = pcall( vim.fn.CocAction, 'services')
|
||||
if not ok then
|
||||
return
|
||||
end
|
||||
local ft = vim.bo.filetype
|
||||
local state, id
|
||||
for _, entry in ipairs(result) do
|
||||
if entry['languageIds'][1] == ft then
|
||||
state = entry['state']
|
||||
id = entry['id']
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
local speed = 1600
|
||||
local loadidx = (vim.loop.now() % speed)
|
||||
local msg = "LSP(" .. id .. ")"
|
||||
if state == "starting" then
|
||||
return msg .. " %#CocstatusLoading#" .. loading[math.floor(loadidx/(step * (speed/100))) + 1]
|
||||
end
|
||||
return msg .. " %#CocstatusSucceed#✔"
|
||||
local speed = 1600
|
||||
local loadidx = (vim.loop.now() % speed)
|
||||
local msg = "lsp:" .. id
|
||||
if state == "starting" then
|
||||
return msg .. " %#CocstatusLoading#" .. loading[math.floor(loadidx / (step * (speed / 100))) + 1]
|
||||
end
|
||||
return msg .. " %#CocstatusSucceed#✔"
|
||||
end
|
||||
|
||||
local disabled_filetypes_data = {}
|
||||
if vim_version_minor < 7 then
|
||||
-- globalstatus only work for nvim >= 0.7
|
||||
disabled_filetypes_data = { -- Filetypes to disable lualine for.
|
||||
statusline = {}, -- only ignores the ft for statusline.
|
||||
winbar = {}, -- only ignores the ft for winbar.
|
||||
'NvimTree',
|
||||
'vista'
|
||||
}
|
||||
end
|
||||
local function debugstats()
|
||||
local t = vim.fn.Debugstats()
|
||||
return "ft:" .. t['filetype'] .. " bt:" .. t['buftype'] .. " wid:" .. t['winid']
|
||||
end
|
||||
|
||||
local opt = {
|
||||
options = {
|
||||
icons_enabled = show_icon,
|
||||
theme = 'auto', -- lualine theme
|
||||
-- theme = 'ayu', -- lualine theme
|
||||
-- component_separators = { left = '', right = ''},
|
||||
-- section_separators = { left = '', right = ''},
|
||||
component_separators = { left = '', right = ''},
|
||||
section_separators = { left = '', right = ''},
|
||||
local _section_x = {}
|
||||
local _section_y = { 'encoding' }
|
||||
if HasPlug('coc.nvim') then table.insert(_section_x, cocstatus) end
|
||||
if debug_mode then _section_y = { debugstats } end
|
||||
|
||||
always_divide_middle = false,
|
||||
globalstatus = true,
|
||||
disabled_filetypes = disabled_filetypes_data,
|
||||
refresh = {statusline = 200}
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { 'mode' },
|
||||
lualine_b = {},
|
||||
lualine_c = {
|
||||
{
|
||||
'buffers',
|
||||
mode = 2,
|
||||
filetype_names = {
|
||||
TelescopePrompt = 'Telescope',
|
||||
dashboard = 'Dashboard',
|
||||
packer = 'Packer',
|
||||
fzf = 'FZF',
|
||||
alpha = 'Alpha',
|
||||
NvimTree = '',
|
||||
vista = ''
|
||||
},
|
||||
symbols = {
|
||||
modified = ' ●', -- Text to show when the buffer is modified
|
||||
alternate_file = '', -- Text to show to identify the alternate file
|
||||
directory = '', -- Text to show when the buffer is a directory
|
||||
},
|
||||
}
|
||||
},
|
||||
-- lualine_x = {'encoding', 'fileformat', 'filetype'},
|
||||
lualine_x = { cocstatus },
|
||||
lualine_y = {'encoding'},
|
||||
lualine_z = {'location' }
|
||||
},
|
||||
local disabled_filetypes_data = {}
|
||||
if vim_version_minor < 7 then
|
||||
-- globalstatus only work for nvim >= 0.7
|
||||
disabled_filetypes_data = {
|
||||
-- Filetypes to disable lualine for.
|
||||
statusline = {}, -- only ignores the ft for statusline.
|
||||
winbar = {}, -- only ignores the ft for winbar.
|
||||
'NvimTree',
|
||||
'vista',
|
||||
}
|
||||
end
|
||||
|
||||
require('lualine').setup(opt)
|
||||
local opt = {
|
||||
options = {
|
||||
icons_enabled = show_icon,
|
||||
theme = 'auto', -- lualine theme
|
||||
-- component_separators = { left = '', right = ''},
|
||||
-- section_separators = { left = '', right = ''},
|
||||
component_separators = { left = '', right = '' },
|
||||
section_separators = { left = '', right = '' },
|
||||
always_divide_middle = false,
|
||||
globalstatus = true,
|
||||
disabled_filetypes = disabled_filetypes_data,
|
||||
refresh = { statusline = 200 }
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { 'mode' },
|
||||
lualine_b = {},
|
||||
lualine_c = {
|
||||
{
|
||||
'buffers',
|
||||
mode = 2,
|
||||
filetype_names = {
|
||||
TelescopePrompt = 'Telescope',
|
||||
dashboard = 'Dashboard',
|
||||
packer = 'Packer',
|
||||
fzf = 'FZF',
|
||||
alpha = 'Alpha',
|
||||
NvimTree = '',
|
||||
vista = '',
|
||||
},
|
||||
}
|
||||
},
|
||||
-- lualine_x = {'encoding', 'fileformat', 'filetype'},
|
||||
lualine_x = _section_x,
|
||||
lualine_y = _section_y,
|
||||
lualine_z = { 'location' }
|
||||
},
|
||||
}
|
||||
|
||||
for i=1,9 do
|
||||
-- :nnoremap <silent> <Leader>1 :LualineBuffersJump 1<CR>
|
||||
vim.api.nvim_set_keymap('n', '<Leader>' .. i, ':LualineBuffersJump ' .. i .. '<CR>',
|
||||
{ noremap = true, silent = true, nowait = true })
|
||||
end
|
||||
for i=10,20 do
|
||||
-- :nnoremap <silent> <Leader>1 :LualineBuffersJump 1<CR>
|
||||
vim.api.nvim_set_keymap('n', '<Space>' .. i, ':LualineBuffersJump ' .. i .. '<CR>',
|
||||
{ noremap = true, silent = true, nowait = true })
|
||||
end
|
||||
require('lualine').setup(opt)
|
||||
|
||||
for i = 1, 9 do
|
||||
-- :nnoremap <silent> <Leader>1 :LualineBuffersJump 1<CR>
|
||||
vim.api.nvim_set_keymap('n', '<Leader>' .. i, ':LualineBuffersJump ' .. i .. '<CR>',
|
||||
{ noremap = true, silent = true, nowait = true })
|
||||
end
|
||||
for i = 10, 20 do
|
||||
-- :nnoremap <silent> <Leader>1 :LualineBuffersJump 1<CR>
|
||||
vim.api.nvim_set_keymap('n', '<Space>' .. i, ':LualineBuffersJump ' .. i .. '<CR>',
|
||||
{ noremap = true, silent = true, nowait = true })
|
||||
end
|
||||
end
|
||||
|
||||
local function nvim_treesitter_config()
|
||||
if not HasPlug('nvim-treesitter') then
|
||||
return
|
||||
end
|
||||
require('nvim-treesitter.configs').setup {
|
||||
-- ensure_installed = { "c", "bash", "lua" },
|
||||
sync_install = false,
|
||||
auto_install = true,
|
||||
-- ignore_install = { "javascript" },
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false,
|
||||
},
|
||||
}
|
||||
if not HasPlug('nvim-treesitter') then
|
||||
return
|
||||
end
|
||||
require('nvim-treesitter.configs').setup {
|
||||
ensure_installed = { "c", "bash", "lua", "python", "vim" },
|
||||
sync_install = false,
|
||||
auto_install = true,
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
local function nvim_tree_config()
|
||||
if not HasPlug('nvim-tree.lua') then
|
||||
return
|
||||
end
|
||||
-- disable netrw at the very start of your init.lua (strongly advised)
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
if not HasPlug('nvim-tree.lua') then
|
||||
return
|
||||
end
|
||||
-- disable netrw at the very start of your init.lua (strongly advised)
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
|
||||
-- set termguicolors to enable highlight groups
|
||||
vim.opt.termguicolors = true
|
||||
-- set termguicolors to enable highlight groups
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
-- setup with some options
|
||||
require("nvim-tree").setup({
|
||||
sort_by = "case_sensitive",
|
||||
view = {
|
||||
width = 30,
|
||||
mappings = {
|
||||
list = {
|
||||
{ key = "C-[", action = "dir_up" },
|
||||
{ key = "C-]", action = "cd" },
|
||||
{ key = "<C-k>", action = "toggle_file_info" },
|
||||
},
|
||||
},
|
||||
-- setup with some options
|
||||
require("nvim-tree").setup({
|
||||
sort_by = "case_sensitive",
|
||||
view = {
|
||||
width = 30,
|
||||
mappings = {
|
||||
list = {
|
||||
{ key = "C-[", action = "dir_up" },
|
||||
{ key = "C-]", action = "cd" },
|
||||
{ key = "<C-k>", action = "toggle_file_info" },
|
||||
},
|
||||
renderer = {
|
||||
group_empty = true,
|
||||
icons = {
|
||||
show = {
|
||||
file = show_icon,
|
||||
folder = show_icon,
|
||||
folder_arrow = show_icon,
|
||||
git = show_icon,
|
||||
modified = show_icon,
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
renderer = {
|
||||
group_empty = true,
|
||||
icons = {
|
||||
show = {
|
||||
file = show_icon,
|
||||
folder = show_icon,
|
||||
folder_arrow = show_icon,
|
||||
git = show_icon,
|
||||
modified = show_icon,
|
||||
}
|
||||
}
|
||||
},
|
||||
filters = {
|
||||
dotfiles = false,
|
||||
},
|
||||
actions = {
|
||||
open_file = {
|
||||
quit_on_open = true,
|
||||
resize_window = true,
|
||||
window_picker = {
|
||||
exclude = {
|
||||
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
|
||||
buftype = { "nofile", "terminal", "help" },
|
||||
},
|
||||
},
|
||||
filters = {
|
||||
dotfiles = false,
|
||||
},
|
||||
actions = {
|
||||
open_file = {
|
||||
quit_on_open = true,
|
||||
resize_window = true,
|
||||
window_picker = {
|
||||
exclude = {
|
||||
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
|
||||
buftype = { "nofile", "terminal", "help" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<Leader>e', ':NvimTreeFindFileToggle<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<Leader>e', ':NvimTreeFindFileToggle<CR>', { noremap = true, silent = true })
|
||||
end
|
||||
|
||||
if vim_version_minor >= 5 then
|
||||
vim_illuminate_config()
|
||||
transparent_config()
|
||||
github_theme_config()
|
||||
indentline_config()
|
||||
which_key_config()
|
||||
animate_config()
|
||||
nvim_scrollbar_config()
|
||||
vim_illuminate_config()
|
||||
transparent_config()
|
||||
github_theme_config()
|
||||
indentline_config()
|
||||
which_key_config()
|
||||
animate_config()
|
||||
nvim_scrollbar_config()
|
||||
lualine_config()
|
||||
end
|
||||
if vim_version_minor >= 7 then
|
||||
nvim_treesitter_config()
|
||||
telescope_config()
|
||||
toggleterm_config()
|
||||
nvim_treesitter_config()
|
||||
telescope_config()
|
||||
toggleterm_config()
|
||||
end
|
||||
if vim_version_minor >= 8 then
|
||||
nvim_tree_config()
|
||||
nvim_noice_config()
|
||||
nvim_tree_config()
|
||||
nvim_noice_config()
|
||||
end
|
||||
|
||||
local function late_loading()
|
||||
lualine_config()
|
||||
end
|
||||
|
||||
-- late loading
|
||||
vim.api.nvim_create_autocmd({ "VimEnter" },
|
||||
{ pattern = { "*" }, callback = late_loading, })
|
||||
{ pattern = { "*" }, callback = late_loading, })
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
|
||||
" This file stores helper functions
|
||||
|
||||
function! Notify(msg)
|
||||
echo msg
|
||||
endfunction
|
||||
|
||||
" This function is used to save a variable to a file
|
||||
function! SaveVariable(var, file)
|
||||
let serialized = string(a:var)
|
||||
call writefile([serialized], a:file)
|
||||
endfun
|
||||
|
||||
" This function is used to retrieve a variable from a file
|
||||
" only first line is count
|
||||
function! ReadVariable(file)
|
||||
if !filereadable(a:file)
|
||||
return v:null
|
||||
endif
|
||||
let serialized = readfile(a:file)
|
||||
if(len(serialized) == 0)
|
||||
return v:null
|
||||
endif
|
||||
execute "let result = " . serialized[0]
|
||||
return result
|
||||
endfun
|
||||
|
||||
" Merge two dictionaries, also recursively merging nested keys.
|
||||
" Use extend() if you don't need to merge nested keys.
|
||||
fun! Merge(defaults, override)
|
||||
let l:new = copy(a:defaults)
|
||||
for [l:k, l:v] in items(a:override)
|
||||
let l:new[l:k] = (type(l:v) is v:t_dict && type(get(l:new, l:k)) is v:t_dict)
|
||||
\ ? Merge(l:new[l:k], l:v)
|
||||
\ : l:v
|
||||
endfor
|
||||
return l:new
|
||||
endfun
|
||||
|
||||
function! Sh(pattern)
|
||||
execute("filter /" . a:pattern . "/ highlight")
|
||||
endfunc
|
||||
|
||||
" get current colorscheme name
|
||||
function! ColourSchemeName()
|
||||
try
|
||||
return g:colors_name
|
||||
catch /^Vim:E121/
|
||||
return "default"
|
||||
catch /.*/
|
||||
return "default"
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" debug function print out highlight group of cursor position
|
||||
function! ShowHighLightGroup()
|
||||
if !exists("*synstack")
|
||||
return
|
||||
endif
|
||||
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
|
||||
|
||||
:echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<'
|
||||
\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<"
|
||||
\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"
|
||||
|
||||
endfunc
|
||||
|
||||
" get highlight group information and return as dictionary
|
||||
function! GetHighlight(group)
|
||||
let output = execute('hi ' . a:group)
|
||||
let list = split(output, '\s\+')
|
||||
let dict = {}
|
||||
for item in list
|
||||
if match(item, '=') > 0
|
||||
let splited = split(item, '=')
|
||||
let dict[splited[0]] = splited[1]
|
||||
endif
|
||||
endfor
|
||||
return dict
|
||||
endfunction
|
||||
|
||||
function! InTransparentMode()
|
||||
let dict = GetHighlight('Normal')
|
||||
let isGui = &termguicolors
|
||||
if isGui
|
||||
if !has_key(dict, 'guibg')
|
||||
return 1
|
||||
endif
|
||||
elseif !isGui
|
||||
if !has_key(dict, 'ctermfg')
|
||||
return 1
|
||||
endif
|
||||
endif
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
function! HasColorscheme(name)
|
||||
let scheme = a:name
|
||||
let colors = globpath(&runtimepath, printf('colors/%s.vim', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
let colors += globpath(&packpath, printf('pack/*/start/*/colors/%s.vim', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
let colors += globpath(&packpath, printf('pack/*/opt/*/colors/%s.vim', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
if has('nvim')
|
||||
let colors = globpath(&runtimepath, printf('colors/%s.lua', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
let colors += globpath(&packpath, printf('pack/*/start/*/colors/%s.lua', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
let colors += globpath(&packpath, printf('pack/*/opt/*/colors/%s.lua', scheme), 1, 1)
|
||||
if len(colors) > 0 | return 1 | endif
|
||||
endif
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
" delete signal file if exist
|
||||
function! DeleteSignalFile(name)
|
||||
if filereadable(g:vim_dir . a:name)
|
||||
call delete(g:vim_dir . a:name)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Create signal file if not exist
|
||||
function! CreateSignalFile(name)
|
||||
call system("touch " . g:vim_dir . a:name)
|
||||
endfunction
|
||||
|
||||
function! SignalFileExists(filename)
|
||||
if filereadable(g:vim_dir . a:filename)
|
||||
return v:true
|
||||
endif
|
||||
return v:false
|
||||
endfunction
|
||||
|
||||
" Debug related
|
||||
if g:debug_mode
|
||||
let g:debug_logs = []
|
||||
|
||||
function! Debugstats()
|
||||
let d = {}
|
||||
let d['filetype'] = &ft
|
||||
let d['buftype'] = &buftype
|
||||
let d['winid'] = win_getid()
|
||||
return d
|
||||
endfunction
|
||||
endif
|
||||
|
||||
|
||||
" Swap values under cursor according to g:swap_dict
|
||||
" {
|
||||
function SwapWord()
|
||||
let word = expand("<cword>")
|
||||
let l1 = g:swap_dict[0]
|
||||
let l2 = g:swap_dict[1]
|
||||
let inx = index(l1, word)
|
||||
if inx != -1
|
||||
let newword = l2[inx]
|
||||
else
|
||||
let inx = index(l2, word)
|
||||
if inx != -1
|
||||
let newword = l1[inx]
|
||||
endif
|
||||
endif
|
||||
if inx != -1
|
||||
execute "normal ciw" . newword . "\<Esc>"
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }
|
||||
Reference in New Issue
Block a user