Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
98 lines
2.9 KiB
VimL
98 lines
2.9 KiB
VimL
"=============================================================================
|
|
" windisk.vim --- disk manager for windows
|
|
" Copyright (c) 2016-2023 Wang Shidong & Contributors
|
|
" Author: Wang Shidong < wsdjeg@outlook.com >
|
|
" URL: https://spacevim.org
|
|
" License: GPLv3
|
|
"=============================================================================
|
|
|
|
let s:ICONV = SpaceVim#api#import('iconv')
|
|
let s:LOGGER = SpaceVim#logger#derive('windisk')
|
|
|
|
func! SpaceVim#plugins#windisk#open() abort
|
|
let disks = s:get_disks()
|
|
if !empty(disks)
|
|
" 1. open plugin buffer
|
|
noautocmd vsplit __windisk__
|
|
vertical resize 20
|
|
let s:disk_buffer_nr = bufnr('%')
|
|
set ft=SpaceVimWinDiskManager
|
|
setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline nospell nonu norelativenumber winfixwidth
|
|
" 2. init buffer option and syntax
|
|
let lines = disks
|
|
setlocal modifiable
|
|
call setline(1, lines)
|
|
setlocal nomodifiable
|
|
" 2. updated content
|
|
" 3. init buffer key bindings
|
|
nnoremap <buffer><silent> <Cr> :call <SID>open_disk(getline('.'))<cr>
|
|
else
|
|
" TODO: print warnning, not sure if it is needed.
|
|
endif
|
|
endf
|
|
|
|
function! s:diskinfo() abort
|
|
if !executable('wmic')
|
|
call s:LOGGER.warn('windisk requires wmic.exe!')
|
|
return []
|
|
endif
|
|
let rst = systemlist('wmic LOGICALDISK LIST BRIEF')
|
|
if !empty(rst)
|
|
let diskinfo = rst[1:]
|
|
else
|
|
let diskinfo = []
|
|
endif
|
|
let rst = []
|
|
call s:LOGGER.debug('start to parse diskinfo!')
|
|
for line in diskinfo
|
|
call s:LOGGER.debug(line)
|
|
let info = split(s:ICONV.iconv(line, g:spacevim_windisk_encoding, &enc))
|
|
call s:LOGGER.debug('iconv ' . g:spacevim_windisk_encoding . ' result:' . string(info))
|
|
if len(info) >= 4
|
|
let diskid = info[0]
|
|
let freespace = info[2]
|
|
let size = info[3]
|
|
let name = get(info, 4, '')
|
|
call add(rst, {
|
|
\ 'disk' : diskid,
|
|
\ 'free' : freespace,
|
|
\ 'size' : size,
|
|
\ 'name' : name,
|
|
\ })
|
|
endif
|
|
endfor
|
|
return rst
|
|
endfunction
|
|
|
|
func! s:get_disks() abort
|
|
" use wmic command is better
|
|
" return map(filter(range(65, 97), "isdirectory(nr2char(v:val) . ':/')"), 'nr2char(v:val) . ":/"')
|
|
let diskinfo = s:diskinfo()
|
|
let line = map(diskinfo, 's:diskToLine(v:val)')
|
|
return line
|
|
endf
|
|
|
|
function! s:diskToLine(disk) abort
|
|
return a:disk.disk . '/' . ' ' . (empty(a:disk.name) ? '本地磁盘' : a:disk.name)
|
|
endfunction
|
|
|
|
|
|
function! s:open_disk(d) abort
|
|
let disk = split(a:d)[0]
|
|
call s:close_disk_buffer()
|
|
if g:spacevim_filemanager ==# 'vimfiler'
|
|
exe 'VimFiler -no-toggle ' . disk
|
|
elseif g:spacevim_filemanager ==# 'nerdtree'
|
|
silent! exe 'NERDTree ' . disk
|
|
elseif g:spacevim_filemanager ==# 'defx'
|
|
exe 'Defx -no-toggle -no-resume ' . disk
|
|
endif
|
|
doautocmd WinEnter
|
|
endfunction
|
|
|
|
|
|
function! s:close_disk_buffer() abort
|
|
exe 'bd ' . s:disk_buffer_nr
|
|
endfunction
|
|
|