aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim')
-rw-r--r--vim/init.vim2
-rw-r--r--vim/init/basic.vim48
-rw-r--r--vim/init/config.vim48
-rw-r--r--vim/init/keymaps.vim188
-rw-r--r--vim/init/style.vim1
-rw-r--r--vim/lua/chadrc.lua98
6 files changed, 227 insertions, 158 deletions
diff --git a/vim/init.vim b/vim/init.vim
index adfd9d6..fd65816 100644
--- a/vim/init.vim
+++ b/vim/init.vim
@@ -27,3 +27,5 @@ else
27 LoadScript init/plugins.vim 27 LoadScript init/plugins.vim
28 LoadScript init/style.vim 28 LoadScript init/style.vim
29endif 29endif
30
31highlight CursorLineNr term=bold cterm=bold ctermfg=226 gui=bold guifg=#eeee00
diff --git a/vim/init/basic.vim b/vim/init/basic.vim
index c066f07..42dab16 100644
--- a/vim/init/basic.vim
+++ b/vim/init/basic.vim
@@ -76,19 +76,17 @@ set shiftwidth=2
76set cindent 76set cindent
77set ttimeout 77set ttimeout
78set ttimeoutlen=50 78set ttimeoutlen=50
79" set updatetime=1000 79" set updatetime=4000
80" autocmd CursorHold * normal! m' 80" autocmd CursorHold * normal! m'
81 81
82imap <C-c> <Esc>l
83
84" TAB ----------------{{{ 82" TAB ----------------{{{
85 83
86set expandtab 84set expandtab
87set softtabstop=-1 85set softtabstop=-1
88 86
89" 顯示分隔符號 87" Invisible chars
90set list 88set nolist
91set listchars=tab:,extends:>,precedes:< 89set listchars=tab:»,extends:>,precedes:<
92 90
93" }}} 91" }}}
94 92
@@ -118,13 +116,27 @@ augroup vimStartup
118 " (it's likely a different one than last time). 116 " (it's likely a different one than last time).
119 autocmd BufReadPost * 117 autocmd BufReadPost *
120 \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit' 118 \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
121 \ | exe "normal! g`\"zv" 119 \ | try | silent execute 'normal! g`"zv' | endtry
122 \ | endif 120 \ | endif
123augroup END 121augroup END
124 122
125" }}} 123" }}}
126 124
127" }}} 125" }}}
126" FOLD ----------------{{{
127set foldenable " Allow fold
128set foldmethod=indent " Fold contents by indent
129set foldlevel=2
130set fillchars+=foldopen:▽,foldsep:│,foldclose:▶
131let g:defaut_foldcolumn = ""
132if has('nvim')
133 let g:defaut_foldcolumn = "auto:5"
134else
135 let g:defaut_foldcolumn = 5
136endif
137let &foldcolumn = g:defaut_foldcolumn
138
139" }}}
128" ENCODING_PREFERENCE ----------------{{{ 140" ENCODING_PREFERENCE ----------------{{{
129 141
130if has('multi_byte') 142if has('multi_byte')
@@ -135,13 +147,6 @@ if has('multi_byte')
135endif 147endif
136 148
137" }}} 149" }}}
138" FOLD ----------------{{{
139
140set foldenable " Allow fold
141set foldmethod=indent " Fold contents by indent
142set foldlevel=2
143
144" }}}
145" BACKUP ----------------{{{ 150" BACKUP ----------------{{{
146 151
147" Allow backup 152" Allow backup
@@ -162,13 +167,6 @@ set writebackup
162syntax enable 167syntax enable
163set conceallevel=1 168set conceallevel=1
164 169
165function! GetHighlightGroupName()
166 let l:syntaxID = synID(line('.'), col('.'), 1)
167 let l:groupName = synIDattr(l:syntaxID, 'name')
168 echo "Highlight Group Name: " . l:groupName
169endfunction
170nnoremap <leader>H :call GetHighlightGroupName()<CR>
171
172" Defualt highlight for matched parenthesis is so weird in many colorscheme 170" Defualt highlight for matched parenthesis is so weird in many colorscheme
173" Why the background color is lighter than my caret !? 171" Why the background color is lighter than my caret !?
174" highlight MatchParen ctermfg=NONE ctermbg=darkgrey cterm=NONE 172" highlight MatchParen ctermfg=NONE ctermbg=darkgrey cterm=NONE
@@ -178,14 +176,6 @@ highlight LuaParen ctermfg=NONE ctermbg=darkgrey cterm=NONE
178highlight ExtraWhitespace ctermbg=red guibg=red 176highlight ExtraWhitespace ctermbg=red guibg=red
179match ExtraWhitespace /\s\+$/ 177match ExtraWhitespace /\s\+$/
180 178
181" Persist visualized lines
182" define line highlight color
183highlight MultiLineHighlight ctermbg=LightYellow guibg=LightYellow ctermfg=Black guifg=Black
184" highlight the current line
185nnoremap <silent> <leader>gh :call matchadd('MultiLineHighlight', '\%'.line('.').'l')<CR>
186" clear all the highlighted lines
187nnoremap <silent> <leader>gH :call clearmatches()<CR>
188
189" }}} 179" }}}
190" MISC ----------------{{{ 180" MISC ----------------{{{
191 181
diff --git a/vim/init/config.vim b/vim/init/config.vim
index 903d8a0..4e1c06c 100644
--- a/vim/init/config.vim
+++ b/vim/init/config.vim
@@ -5,6 +5,7 @@
5 5
6" Unnamed Buffer ----------------{{{ 6" Unnamed Buffer ----------------{{{
7 7
8" Automatically delete unnamed empty buffer when leaving
8augroup DeleteUnnamedEmptBuffer! 9augroup DeleteUnnamedEmptBuffer!
9 au! 10 au!
10 au BufLeave {} if getline(1, '$') == [''] | setlocal bufhidden=wipe | endif 11 au BufLeave {} if getline(1, '$') == [''] | setlocal bufhidden=wipe | endif
@@ -15,15 +16,14 @@ augroup END
15 16
16augroup TerminalSize 17augroup TerminalSize
17 au! 18 au!
18 function! LayoutForSmall() 19 function! LayoutForSmallTerminal()
19 echo 'vim resized' 20 if &lines < 19
20 if &lines < 18 21 silent! set cmdheight=0 laststatus=0 showtabline=0 signcolumn=no nowrap scrolloff=1
21 set cmdheight=0 laststatus=0 showtabline=0 signcolumn=no nowrap scrolloff=1
22 else 22 else
23 set cmdheight& laststatus& showtabline=2 signcolumn=yes scrolloff=3 23 silent! set cmdheight& laststatus& showtabline=2 signcolumn=yes scrolloff=3
24 endif 24 endif
25 endfunction 25 endfunction
26 autocmd VimResized * call LayoutForSmall() 26 autocmd VimEnter,VimResized * call LayoutForSmallTerminal()
27augroup END 27augroup END
28 28
29" }}} 29" }}}
@@ -144,24 +144,28 @@ augroup InitFileTypes
144 autocmd BufReadPost * call <SID>ApplyShebang() 144 autocmd BufReadPost * call <SID>ApplyShebang()
145 " }}} 145 " }}}
146 " Markdown ----------------{{{ 146 " Markdown ----------------{{{
147 au FileType markdown setlocal wrap 147
148 au FileType markdown set sw=2 ts=2 148 augroup Config_Markdown
149 " Fold by heading level 149 au!
150 function! MarkdownLevel() 150 au FileType markdown setlocal wrap sw=2 ts=2
151 let hash_num = matchstr(getline(v:lnum), '^#\+') 151 au FileType markdown setlocal foldexpr=MarkdownLevel() foldmethod=expr
152 let hash_num_at_top = matchstr(getline(v:lnum-1), '^#\+') 152
153 if empty(hash_num) 153 " Fold by heading level
154 if empty(hash_num_at_top) 154 function! MarkdownLevel()
155 return "=" 155 let hash_num = matchstr(getline(v:lnum), '^#\+')
156 let hash_num_at_top = matchstr(getline(v:lnum-1), '^#\+')
157 if empty(hash_num)
158 if empty(hash_num_at_top)
159 return "="
160 else
161 return ">"..(len(hash_num_at_top))
162 endif
156 else 163 else
157 return ">"..(len(hash_num_at_top)) 164 return len(hash_num) - 1
158 endif 165 endif
159 else 166 endfunction
160 return len(hash_num)-1 167
161 endif 168 augroup END
162 endfunction
163 au FileType markdown setlocal foldexpr=MarkdownLevel()
164 au FileType markdown setlocal foldmethod=expr
165 169
166 " }}} 170 " }}}
167 " HTML ----------------{{{ 171 " HTML ----------------{{{
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim
index f71ec7c..0132706 100644
--- a/vim/init/keymaps.vim
+++ b/vim/init/keymaps.vim
@@ -7,6 +7,9 @@
7" Space for searching 7" Space for searching
8map <space> / 8map <space> /
9 9
10" Escape normal mode by <C-c>
11imap <C-c> <Esc>l
12
10" Search for selected test 13" Search for selected test
11vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR> 14vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR>
12 15
@@ -23,10 +26,8 @@ nmap <leader>w :w!<CR>
23" (useful for handling the permission-denied error) 26" (useful for handling the permission-denied error)
24command! W execute 'w !sudo -S tee %' <bar> edit! 27command! W execute 'w !sudo -S tee %' <bar> edit!
25 28
26" Fast quit with error 29" Quit
27nmap <leader>q :q<CR> 30nmap <leader>q :q<CR>
28
29" Fast quit with error
30nmap cq :cq<CR> 31nmap cq :cq<CR>
31 32
32" Remap <CR> in Quickfix, Cmdwin Location list 33" Remap <CR> in Quickfix, Cmdwin Location list
@@ -88,7 +89,8 @@ nnoremap <C-k> ddkP
88" execute "set <M-h>=\eh" 89" execute "set <M-h>=\eh"
89 90
90" Spell 91" Spell
91nnoremap <leader><leader>sp :set spell!<CR> 92nnoremap <expr> <leader><leader>sp ": echo spell "..(echo &spell ? "on" : "off").."<CR>"
93nnoremap <expr> <leader><leader>sp ": echo spell "
92nnoremap <leader>ss ]s 94nnoremap <leader>ss ]s
93nnoremap <leader>S [s 95nnoremap <leader>S [s
94 96
@@ -190,6 +192,10 @@ nnoremap <leader>ee :edit $MYVIMRC<CR>
190" Set options 192" Set options
191noremap <leader>st :set<space> 193noremap <leader>st :set<space>
192noremap <leader><leader>ft :<C-\>e'set filetype='..&filetype<CR> 194noremap <leader><leader>ft :<C-\>e'set filetype='..&filetype<CR>
195noremap <leader><leader>li :set list!<CR>
196noremap <leader><leader>sw :<C-\>e'set shiftwidth='..&shiftwidth<CR>
197noremap <leader><leader>nu :set number!<CR>
198noremap <leader><leader>ru :set relativenumber!<CR>
193 199
194" Open a new buffer 200" Open a new buffer
195nmap <leader>B :enew<CR> 201nmap <leader>B :enew<CR>
@@ -213,43 +219,53 @@ function! ToggleQuit()
213endfunction 219endfunction
214nnoremap <leader><leader>gl :call ToggleQuit()<CR> 220nnoremap <leader><leader>gl :call ToggleQuit()<CR>
215 221
216function! CheckSave() 222function! CloseBufferSafely()
217 if &modified 223 if &modified
218 let answer = confirm("Save changes?", "&Yes\n&No\n&Cancel") 224 let answer = confirm("Save changes?", "&Yes\n&No\n&Cancel")
219 if answer == 1 | write | endif 225 if answer == 1 | write | endif
220 if answer == 3 | return | endif 226 if answer == 3 | return | endif
221 endif 227 endif
222 228
223 bdelete! 229 let bufs = getbufinfo({'buflisted': 1})
224 230 if len(bufs) == 1
225endfunction 231 bdelete!
226func! QuitWithCheck()
227 if g:quitVimWhenPressingCtrlC
228 silent! quit
229 else 232 else
230 echo "Press <leader><leader>gl to allow quit with <C-c>" 233 b# | bd! #
231 endif 234 endif
235endfunction
236func! QuitWithCheck()
237if g:quitVimWhenPressingCtrlC
238 silent! quit
239else
240 echo "Press <leader><leader>gl to allow quit with <C-c>"
241endif
232endfunc 242endfunc
233function! Bye() 243function! Bye()
234 let windows = gettabinfo(tabpagenr())[0]['windows'] 244let windows = gettabinfo(tabpagenr())[0]['windows']
245try
235 let bufs = gettabinfo(tabpagenr())[0]['variables']['bufs'] 246 let bufs = gettabinfo(tabpagenr())[0]['variables']['bufs']
236 247catch
237 if len(windows) == 1 && len(bufs) == 1 248 let bufs = getbufinfo({'buflisted': 1})
238 call QuitWithCheck() 249endtry
239 elseif &diff 250
240 call CloseBuffersForDiff() 251if len(windows) == 1 && len(bufs) == 1
241 else 252 call QuitWithCheck()
242 call CheckSave() 253elseif &diff
243 endif 254 call CloseBuffersForDiff()
255elseif len(windows) >1
256 quit
257else
258 silent! call CloseBufferSafely()
259endif
244endfunction 260endfunction
245nnoremap <silent> <C-c> :call Bye()<CR> 261nnoremap <silent> <C-c> :call Bye()<CR>
246 262
247"}}} 263
248" Diff Mode ----------------{{{ 264" Diff Mode ----------------
249 265
250function! CloseBuffersForDiff() 266function! CloseBuffersForDiff()
251 windo | if &diff && &buftype == "nofile" | bdelete | endif 267 windo | if &diff && &buftype == "nofile" | bdelete | endif
252 norm! zv 268 norm! zv
253endfunction 269endfunction
254 270
255command! DiffOrig vert new | set buftype=nofile nobuflisted | read ++edit # | 0d_ 271command! DiffOrig vert new | set buftype=nofile nobuflisted | read ++edit # | 0d_
@@ -257,25 +273,25 @@ command! DiffOrig vert new | set buftype=nofile nobuflisted | read ++edit # | 0d
257 273
258" Uset <C-w>d to toggle Diff mode 274" Uset <C-w>d to toggle Diff mode
259function! s:SwitchDiff() 275function! s:SwitchDiff()
260 if &diff 276if &diff
261 call CloseBuffersForDiff() 277 call CloseBuffersForDiff()
262 else 278else
263 DiffOrig 279 DiffOrig
264 endif 280endif
265endfunction 281endfunction
266com! SwitchDiff call s:SwitchDiff() 282com! SwitchDiff call s:SwitchDiff()
267nnoremap <C-w>d <Cmd>silent! SwitchDiff<CR> 283nnoremap <C-w>d <Cmd>silent! SwitchDiff<CR>
268 284
269function! s:SwitchDiffForGitHEAD() 285function! s:SwitchDiffForGitHEAD()
270 norm cdg 286norm cdg
271 if &diff 287if &diff
272 windo | if &buftype == "nofile" | bdelete | endif 288 windo | if &buftype == "nofile" | bdelete | endif
273 norm! zv 289 norm! zv
274 else 290else
275 vert new | set buftype=nofile nobuflisted 291 vert new | set buftype=nofile nobuflisted
276 read !git show HEAD:# 292 read !git show HEAD:#
277 0d_ | diffthis | wincmd p | diffthis 293 0d_ | diffthis | wincmd p | diffthis
278 endif 294endif
279endfunction 295endfunction
280command! SwitchDiffForGitHEAD call s:SwitchDiffForGitHEAD() 296command! SwitchDiffForGitHEAD call s:SwitchDiffForGitHEAD()
281nnoremap <C-w>D <Cmd>silent! SwitchDiffForGitHEAD<CR> 297nnoremap <C-w>D <Cmd>silent! SwitchDiffForGitHEAD<CR>
@@ -301,22 +317,22 @@ inoremap <m-J> <esc><c-w>j
301inoremap <m-K> <esc><c-w>k 317inoremap <m-K> <esc><c-w>k
302 318
303if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1') 319if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1')
304 " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式 320" vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式
305 " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+? 321" 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+?
306 " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改 322" 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改
307 set termwinkey=<c-_> 323set termwinkey=<c-_>
308 tnoremap <m-H> <c-_>h 324tnoremap <m-H> <c-_>h
309 tnoremap <m-L> <c-_>l 325tnoremap <m-L> <c-_>l
310 tnoremap <m-J> <c-_>j 326tnoremap <m-J> <c-_>j
311 tnoremap <m-K> <c-_>k 327tnoremap <m-K> <c-_>k
312 tnoremap <m-q> <c-\><c-n> 328tnoremap <m-q> <c-\><c-n>
313elseif has('nvim') 329elseif has('nvim')
314 " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式 330" neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式
315 tnoremap <m-H> <c-\><c-n><c-w>h 331tnoremap <m-H> <c-\><c-n><c-w>h
316 tnoremap <m-L> <c-\><c-n><c-w>l 332tnoremap <m-L> <c-\><c-n><c-w>l
317 tnoremap <m-J> <c-\><c-n><c-w>j 333tnoremap <m-J> <c-\><c-n><c-w>j
318 tnoremap <m-K> <c-\><c-n><c-w>k 334tnoremap <m-K> <c-\><c-n><c-w>k
319 tnoremap <m-q> <c-\><c-n> 335tnoremap <m-q> <c-\><c-n>
320endif 336endif
321" }}} 337" }}}
322" MANAGE_TABS ----------------{{{ 338" MANAGE_TABS ----------------{{{
@@ -341,35 +357,44 @@ map <leader>te :tabedit <C-r>=expand("%:p:h")<CR>
341 357
342" Tab move functions 358" Tab move functions
343function! Tvab_MoveLeft() 359function! Tvab_MoveLeft()
344 let l:tabnr = tabpagenr() - 2 360let l:tabnr = tabpagenr() - 2
345 if l:tabnr >= 0 361if l:tabnr >= 0
346 exec 'tabmove '.l:tabnr 362 exec 'tabmove '.l:tabnr
347 endif 363endif
348endfunc 364endfunc
349function! Tab_MoveRight() 365function! Tab_MoveRight()
350 let l:tabnr = tabpagenr() + 1 366let l:tabnr = tabpagenr() + 1
351 if l:tabnr <= tabpagenr('$') 367if l:tabnr <= tabpagenr('$')
352 exec 'tabmove '.l:tabnr 368 exec 'tabmove '.l:tabnr
353 endif 369endif
354endfunc 370endfunc
355" }}} 371" }}}
356" FOLD ----------------{{{ 372" FOLD ----------------{{{
357 373
358" Set foldmethod 374" Set foldmethod
359noremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR> 375noremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR>
376noremap <leader><leader>fc :<C-\>e'set foldcolumn='..&foldcolumn<CR>
360 377
361" Show fold level when it changes 378" Show fold level when it changes
362nnoremap zm zm:set foldlevel<CR> 379nnoremap zm zm:set foldlevel<CR>
363nnoremap zr zr:set foldlevel<CR> 380nnoremap zr zr:set foldlevel<CR>
364 381
365" Fold file except selection 382" Fold file except selection
383let g:original_foldmethod = ""
366function! UnfoldSelectionOnly() 384function! UnfoldSelectionOnly()
367 set foldmethod=manual 385 echo 'Unfold'..&foldmethod
386 let g:original_foldmethod = &foldmethod
387 let &foldmethod = "manual"
368 norm! zE 388 norm! zE
369 execute "0,'<-1fold" 389 execute "0,'<-1fold"
370 execute "'>+1,$fold" 390 execute "'>+1,$fold"
371endfunction 391endfunction
372vnoremap zF :call UnfoldSelectionOnly()<CR> 392function! ResumeFoldmethod()
393 norm! zE
394 let &foldmethod = g:original_foldmethod ? g:original_foldmethod : "indent"
395endfunc
396vnoremap zF :<C-u>call UnfoldSelectionOnly()<CR>
397nnoremap zF :<C-u>call ResumeFoldmethod()<CR>
373 398
374" Use l to open fold 399" Use l to open fold
375nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' 400nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo'
@@ -379,6 +404,36 @@ nnoremap <expr> zo foldclosed('.') == -1 ? 'zjzo' : 'zo'
379nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO' 404nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO'
380 405
381" }}} 406" }}}
407" HIGHLIGHT ----------------{{{
408
409function! HiFile()
410 let i = 1
411 while i <= line("$")
412 if strlen(getline(i)) > 0 && len(split(getline(i))) > 2
413 let w = split(getline(i))[0]
414 let l:command = "syn match " . w . " /^" . w . "\\s\\+xxx/"
415 exe l:command
416 endif
417 let i += 1
418 endwhile
419endfunction
420
421function! GetHighlightGroupName()
422 let l:syntaxID = synID(line('.'), col('.'), 1)
423 let l:groupName = synIDattr(l:syntaxID, 'name')
424 echo "Highlight Group Name: " . l:groupName
425endfunction
426nnoremap <leader>H :call GetHighlightGroupName()<CR>
427
428" Persist visualized lines
429" define line highlight color
430highlight MultiLineHighlight ctermbg=LightYellow guibg=LightYellow ctermfg=Black guifg=Black
431" highlight the current line
432nnoremap <silent> <leader>gh :call matchadd('MultiLineHighlight', '\%'.line('.').'l')<CR>
433" clear all the highlighted lines
434nnoremap <silent> <leader>gH :call clearmatches()<CR>
435
436" }}}
382" SURROUND ----------------{{{ 437" SURROUND ----------------{{{
383 438
384inoremap ' ''<Left> 439inoremap ' ''<Left>
@@ -398,6 +453,11 @@ vnoremap <space> <ESC>`<i<space><ESC>`>la<space><ESC>
398vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> 453vnoremap Q <ESC>`<i「<ESC>`>la」<ESC>
399 454
400" }}} 455" }}}
456" QUICKFIX ----------------{{{
457nnoremap <leader>cn :cn<CR>
458nnoremap <leader>cp :cp<CR>
459nnoremap <leader>cw :cw 10<CR>
460" }}}
401" REDIRECTION_WITH_BUFFER ----------------{{{ 461" REDIRECTION_WITH_BUFFER ----------------{{{
402 462
403" Usage: 463" Usage:
diff --git a/vim/init/style.vim b/vim/init/style.vim
index f2b1a5a..7c65e82 100644
--- a/vim/init/style.vim
+++ b/vim/init/style.vim
@@ -8,6 +8,7 @@
8"====================================================================== 8"======================================================================
9" vim: set ts=4 sw=4 tw=78 noet : 9" vim: set ts=4 sw=4 tw=78 noet :
10 10
11colorscheme desert
11 12
12"---------------------------------------------------------------------- 13"----------------------------------------------------------------------
13" 显示设置 14" 显示设置
diff --git a/vim/lua/chadrc.lua b/vim/lua/chadrc.lua
index f9c2357..4b65f52 100644
--- a/vim/lua/chadrc.lua
+++ b/vim/lua/chadrc.lua
@@ -5,56 +5,68 @@
5local M = {} 5local M = {}
6 6
7M.ui = { 7M.ui = {
8 theme = "onedark", 8 theme = "onedark",
9 hl_override = {
10 CursorLineNr = { fg = "#eeee00" },
11 },
9 12
10 -- hl_override = { 13 -- hl_override = {
11 -- Comment = { italic = true }, 14 -- Comment = { italic = true },
12 -- ["@comment"] = { italic = true }, 15 -- ["@comment"] = { italic = true },
13 -- }, 16 -- },
14 tabufline = { 17 tabufline = {
15 enabled = true, 18 enabled = true,
16 order = { "treeOffset", "buffers", "tabs" }, 19 order = { "treeOffset", "buffers", "tabs" },
17 }, 20 },
18 21
19 term = { 22 term = {
20 hl = "Normal:term,WinSeparator:WinSeparator", 23 hl = "Normal:term,WinSeparator:WinSeparator",
21 sizes = { sp = 0.4, vsp = 0.4 }, 24 sizes = { sp = 0.4, vsp = 0.4 },
22 float = { 25 float = {
23 relative = "editor", 26 relative = "editor",
24 row = 0.15, 27 row = 0.15,
25 col = 0.13, 28 col = 0.13,
26 width = 0.7, 29 width = 0.7,
27 height = 0.7, 30 height = 0.7,
28 border = "single", 31 border = "single",
29 }, 32 },
30 }, 33 },
31} 34}
32 35
33-- For tabufline 36-- For tabufline
34if M.ui.tabufline.enabled then 37if M.ui.tabufline.enabled then
38 vim.api.nvim_exec(
39 [[
40 function! CloseBufferSafely()
41 lua require("nvchad.tabufline").close_buffer()
42 endfunction
43 ]],
44 false
45 )
35 46
36 -- vim.keymap.set("n", "<C-c>", function() 47 for i = 1, 9, 1 do
37 -- local bufnrs = vim.tbl_filter(function(b) return 1 == vim.fn.buflisted(b) end, vim.api.nvim_list_bufs()) 48 vim.keymap.set("n", string.format("<A-%s>", i), function()
38 -- if #bufnrs == 1 or #vim.fn.getwininfo() > 1 then 49 vim.api.nvim_set_current_buf(vim.t.bufs[i])
39 -- vim.cmd("silent quit") 50 end)
40 -- else 51 end
41 -- require("nvchad.tabufline").close_buffer() 52 vim.keymap.set("n", "<A-h>", function()
42 -- -- vim.cmd("bdelete") 53 require("nvchad.tabufline").move_buf(-1)
43 -- end 54 end)
44 -- end, { desc = "buffer close" }) 55 vim.keymap.set("n", "<A-l>", function()
45 56 require("nvchad.tabufline").move_buf(1)
46 for i = 1, 9, 1 do 57 end)
47 vim.keymap.set("n", string.format("<A-%s>", i), function() 58 vim.keymap.set("n", "<A-H>", function()
48 vim.api.nvim_set_current_buf(vim.t.bufs[i]) 59 vim.cmd("tabprevious")
49 end) 60 end)
50 end 61 vim.keymap.set("n", "<A-L>", function()
51 vim.keymap.set("n", "<A-h>", function() require("nvchad.tabufline").move_buf(-1) end) 62 vim.cmd("tabnext")
52 vim.keymap.set("n", "<A-l>", function() require("nvchad.tabufline").move_buf(1) end) 63 end)
53 vim.keymap.set("n", "<A-H>", function() vim.cmd("tabprevious") end) 64 vim.keymap.set("n", "<tab>", function()
54 vim.keymap.set("n", "<A-L>", function() vim.cmd("tabnext") end) 65 require("nvchad.tabufline").next()
55 vim.keymap.set("n", "<tab>", function() require("nvchad.tabufline").next() end, { desc = "buffer goto next" }) 66 end, { desc = "buffer goto next" })
56 vim.keymap.set("n", "<S-tab>", function() require("nvchad.tabufline").prev() end, { desc = "buffer goto prev" }) 67 vim.keymap.set("n", "<S-tab>", function()
57 68 require("nvchad.tabufline").prev()
69 end, { desc = "buffer goto prev" })
58end 70end
59 71
60return M 72return M