mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 12:50:04 +08:00
feat(autosave): add autosave_location option
This commit is contained in:
parent
225fc488c4
commit
577c3ceb9d
@ -249,8 +249,9 @@ endfunction
|
|||||||
|
|
||||||
let s:file['unify_path'] = function('s:unify_path')
|
let s:file['unify_path'] = function('s:unify_path')
|
||||||
|
|
||||||
function! s:path_to_fname(path) abort
|
function! s:path_to_fname(path, ...) abort
|
||||||
return substitute(s:unify_path(a:path), '[\\/:;.]', '_', 'g')
|
let sep = get(a:000, 0, '_')
|
||||||
|
return substitute(s:unify_path(a:path), '[\\/:;.]', sep, 'g')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:file['path_to_fname'] = function('s:path_to_fname')
|
let s:file['path_to_fname'] = function('s:path_to_fname')
|
||||||
|
@ -41,6 +41,13 @@
|
|||||||
" name = 'edit'
|
" name = 'edit'
|
||||||
" autosave_all_buffers = true
|
" autosave_all_buffers = true
|
||||||
" <
|
" <
|
||||||
|
" 4. `autosave_location`: set the directory where to save changed files. By
|
||||||
|
" default it is empty string, that means saving to the original file. If this
|
||||||
|
" option is not an empty string. files will me saved to that directory
|
||||||
|
" automatically. and the format is:
|
||||||
|
" >
|
||||||
|
" autosave_location/path+=to+=filename.ext.backup
|
||||||
|
" <
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
if exists('s:autosave_timeout')
|
if exists('s:autosave_timeout')
|
||||||
@ -57,6 +64,7 @@ let s:BUFFER = SpaceVim#api#import('vim#buffer')
|
|||||||
let s:autosave_timeout = 0
|
let s:autosave_timeout = 0
|
||||||
let s:autosave_events = []
|
let s:autosave_events = []
|
||||||
let s:autosave_all_buffers = 0
|
let s:autosave_all_buffers = 0
|
||||||
|
let s:autosave_location = ''
|
||||||
|
|
||||||
function! SpaceVim#layers#edit#health() abort
|
function! SpaceVim#layers#edit#health() abort
|
||||||
call SpaceVim#layers#edit#plugins()
|
call SpaceVim#layers#edit#plugins()
|
||||||
@ -101,6 +109,7 @@ function! SpaceVim#layers#edit#set_variable(var) abort
|
|||||||
let s:autosave_timeout = get(a:var, 'autosave_timeout', s:autosave_timeout)
|
let s:autosave_timeout = get(a:var, 'autosave_timeout', s:autosave_timeout)
|
||||||
let s:autosave_events = get(a:var, 'autosave_events', s:autosave_events)
|
let s:autosave_events = get(a:var, 'autosave_events', s:autosave_events)
|
||||||
let s:autosave_all_buffers = get(a:var, 'autosave_all_buffers', s:autosave_all_buffers)
|
let s:autosave_all_buffers = get(a:var, 'autosave_all_buffers', s:autosave_all_buffers)
|
||||||
|
let s:autosave_location = get(a:var, 'autosave_location', s:autosave_location)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! SpaceVim#layers#edit#get_options() abort
|
function! SpaceVim#layers#edit#get_options() abort
|
||||||
@ -111,6 +120,7 @@ function! SpaceVim#layers#edit#config() abort
|
|||||||
let autosave_opt = {
|
let autosave_opt = {
|
||||||
\ 'timeoutlen' : s:autosave_timeout,
|
\ 'timeoutlen' : s:autosave_timeout,
|
||||||
\ 'save_all_buffers' : s:autosave_all_buffers,
|
\ 'save_all_buffers' : s:autosave_all_buffers,
|
||||||
|
\ 'backupdir' : s:autosave_location,
|
||||||
\ 'event' : s:autosave_events,
|
\ 'event' : s:autosave_events,
|
||||||
\ }
|
\ }
|
||||||
call SpaceVim#plugins#autosave#config(autosave_opt)
|
call SpaceVim#plugins#autosave#config(autosave_opt)
|
||||||
|
@ -28,6 +28,7 @@ let s:default_opt = {
|
|||||||
\ }
|
\ }
|
||||||
|
|
||||||
let s:LOGGER =SpaceVim#logger#derive('autosave')
|
let s:LOGGER =SpaceVim#logger#derive('autosave')
|
||||||
|
let s:FILE = SpaceVim#api#import('file')
|
||||||
|
|
||||||
let s:autosave_timer = -1
|
let s:autosave_timer = -1
|
||||||
|
|
||||||
@ -47,6 +48,16 @@ function! SpaceVim#plugins#autosave#config(opt) abort
|
|||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:location_path(bufname) abort
|
||||||
|
if empty(s:default_opt.backupdir)
|
||||||
|
return a:bufname
|
||||||
|
else
|
||||||
|
return s:default_opt.backupdir . '/'
|
||||||
|
\ . s:FILE.path_to_fname(a:bufname)
|
||||||
|
\ . '.backup'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:save_buffer(bufnr) abort
|
function! s:save_buffer(bufnr) abort
|
||||||
if getbufvar(a:bufnr, '&modified') &&
|
if getbufvar(a:bufnr, '&modified') &&
|
||||||
@ -54,9 +65,11 @@ function! s:save_buffer(bufnr) abort
|
|||||||
\ filewritable(bufname(a:bufnr)) &&
|
\ filewritable(bufname(a:bufnr)) &&
|
||||||
\ !empty(bufname(a:bufnr))
|
\ !empty(bufname(a:bufnr))
|
||||||
let lines = getbufline(a:bufnr, 1, "$")
|
let lines = getbufline(a:bufnr, 1, "$")
|
||||||
call writefile(lines, bufname(a:bufnr))
|
call writefile(lines, s:location_path(bufname(a:bufnr), '+='))
|
||||||
call setbufvar(a:bufnr, "&modified", 0)
|
if empty(s:default_opt.backupdir)
|
||||||
exe 'silent checktime ' . a:bufnr
|
call setbufvar(a:bufnr, "&modified", 0)
|
||||||
|
exe 'silent checktime ' . a:bufnr
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -1789,6 +1789,13 @@ If you want to save all buffers automatically. Set this option to `true`.
|
|||||||
name = 'edit'
|
name = 'edit'
|
||||||
autosave_all_buffers = true
|
autosave_all_buffers = true
|
||||||
<
|
<
|
||||||
|
4. `autosave_location`: set the directory where to save changed files. By
|
||||||
|
default it is empty string, that means saving to the original file. If this
|
||||||
|
option is not an empty string. files will me saved to that directory
|
||||||
|
automatically. and the format is:
|
||||||
|
>
|
||||||
|
autosave_location/path+=to+=filename.ext.backup
|
||||||
|
<
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
EXPRFOLD *SpaceVim-layers-exprfold*
|
EXPRFOLD *SpaceVim-layers-exprfold*
|
||||||
|
Loading…
Reference in New Issue
Block a user