Do our own save call when compiling files in vim
This commit is contained in:
		
							parent
							
								
									2f9dc3aba7
								
							
						
					
					
						commit
						d664ba882c
					
				
							
								
								
									
										40
									
								
								vimrc
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								vimrc
									
									
									
									
									
								
							| 
						 | 
					@ -657,38 +657,34 @@ endfun
 | 
				
			||||||
" These write functions below will not be reloaded because they initiate the
 | 
					" These write functions below will not be reloaded because they initiate the
 | 
				
			||||||
" save. So if you make changes to them then you need to manually reload this
 | 
					" save. So if you make changes to them then you need to manually reload this
 | 
				
			||||||
" file using <leader>rv or whatever. :ReloadVimrcError
 | 
					" file using <leader>rv or whatever. :ReloadVimrcError
 | 
				
			||||||
function! DoSingleWrite()
 | 
					function! WriteCurrentFileAndCreateCtags()
 | 
				
			||||||
    write!
 | 
					    write!
 | 
				
			||||||
    call CreateCtags()
 | 
					    call CreateCtags()
 | 
				
			||||||
endfunction
 | 
					endfunction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function! DoSingleWriteThenQuit()
 | 
					function! WriteCurrentFileAndCreateCtagsThenQuit()
 | 
				
			||||||
    write!
 | 
					    write!
 | 
				
			||||||
    call CreateCtags()
 | 
					    call CreateCtags()
 | 
				
			||||||
    quit
 | 
					    quit
 | 
				
			||||||
endfunction
 | 
					endfunction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
" @fixme Sometimes a :wa that saves multiple files causes vim to hang and use
 | 
					" @fixme Sometimes a :wa that saves multiple files causes vim to hang and use a lot of CPU.
 | 
				
			||||||
" a lot of CPU.
 | 
					function! WriteAllModifiedFilesAndCreateCtags()
 | 
				
			||||||
function! DoMultiWrite()
 | 
					    wall!
 | 
				
			||||||
    let l:current_buffer = bufnr("%")
 | 
					 | 
				
			||||||
    bufdo wa
 | 
					 | 
				
			||||||
    " Restore the last buffer because it may have changed.
 | 
					 | 
				
			||||||
    exec "buffer " . l:current_buffer
 | 
					 | 
				
			||||||
    call CreateCtags()
 | 
					    call CreateCtags()
 | 
				
			||||||
endfunction
 | 
					endfunction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cnoreabbrev w  :call DoSingleWrite()
 | 
					cnoreabbrev w  :call WriteCurrentFileAndCreateCtags()
 | 
				
			||||||
cnoreabbrev W  :call DoSingleWrite()
 | 
					cnoreabbrev W  :call WriteCurrentFileAndCreateCtags()
 | 
				
			||||||
cnoreabbrev wa :call DoMultiWrite()
 | 
					cnoreabbrev wa :call WriteAllModifiedFilesAndCreateCtags()
 | 
				
			||||||
cnoreabbrev Wa :call DoMultiWrite()
 | 
					cnoreabbrev Wa :call WriteAllModifiedFilesAndCreateCtags()
 | 
				
			||||||
cnoreabbrev WA :call DoMultiWrite()
 | 
					cnoreabbrev WA :call WriteAllModifiedFilesAndCreateCtags()
 | 
				
			||||||
cnoreabbrev wq :call DoSingleWriteThenQuit()
 | 
					cnoreabbrev wq :call WriteCurrentFileAndCreateCtagsThenQuit()
 | 
				
			||||||
cnoreabbrev Wq :call DoSingleWriteThenQuit()
 | 
					cnoreabbrev Wq :call WriteCurrentFileAndCreateCtagsThenQuit()
 | 
				
			||||||
cnoreabbrev WQ :call DoSingleWriteThenQuit()
 | 
					cnoreabbrev WQ :call WriteCurrentFileAndCreateCtagsThenQuit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nnoremap <leader>w :call DoSingleWrite()<cr>
 | 
					nnoremap <leader>w :call WriteCurrentFileAndCreateCtags()<cr>
 | 
				
			||||||
nnoremap <leader>x :call DoSingleWriteThenQuit()<cr>
 | 
					nnoremap <leader>x :call WriteCurrentFileAndCreateCtagsThenQuit()<cr>
 | 
				
			||||||
nnoremap <leader>q :q<cr>
 | 
					nnoremap <leader>q :q<cr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cnoreabbrev Q q
 | 
					cnoreabbrev Q q
 | 
				
			||||||
| 
						 | 
					@ -1158,7 +1154,7 @@ endfunction
 | 
				
			||||||
function! Build(optimized=0, silent=0)
 | 
					function! Build(optimized=0, silent=0)
 | 
				
			||||||
    let l:ext = tolower(expand('%:e'))
 | 
					    let l:ext = tolower(expand('%:e'))
 | 
				
			||||||
    let l:parent_dir  = expand('%:p:h')
 | 
					    let l:parent_dir  = expand('%:p:h')
 | 
				
			||||||
    let l:async_cmd = "AsyncRun! -save=2 "
 | 
					    let l:async_cmd = "AsyncRun! "
 | 
				
			||||||
    if a:silent
 | 
					    if a:silent
 | 
				
			||||||
        let l:async_cmd .= "-post=call\\ HideAsyncResults() "
 | 
					        let l:async_cmd .= "-post=call\\ HideAsyncResults() "
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
| 
						 | 
					@ -1196,6 +1192,10 @@ function! Build(optimized=0, silent=0)
 | 
				
			||||||
    if l:is_jai
 | 
					    if l:is_jai
 | 
				
			||||||
        let l:cmd .= ' '.g:campo_jai_build_args
 | 
					        let l:cmd .= ' '.g:campo_jai_build_args
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					    " I was originally passing -save=2 to AsyncRun! in order to save all
 | 
				
			||||||
 | 
					    " modified files (it just does a `silent! wall` call), but I want ctags to
 | 
				
			||||||
 | 
					    " be generated so we're handling the save ourselves.
 | 
				
			||||||
 | 
					    call WriteAllModifiedFilesAndCreateCtags()
 | 
				
			||||||
    exec l:async_cmd . l:cmd
 | 
					    exec l:async_cmd . l:cmd
 | 
				
			||||||
endfunction
 | 
					endfunction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user