|
1 | 1 | let s:Promise = vital#fern#import('Async.Promise')
|
2 | 2 |
|
3 | 3 | function! fern#scheme#file#mapping#init(disable_default_mappings) abort
|
4 |
| - nnoremap <buffer><silent> <Plug>(fern-action-new-path) :<C-u>call <SID>call('new_path')<CR> |
5 |
| - nnoremap <buffer><silent> <Plug>(fern-action-new-file) :<C-u>call <SID>call('new_file')<CR> |
6 |
| - nnoremap <buffer><silent> <Plug>(fern-action-new-dir) :<C-u>call <SID>call('new_dir')<CR> |
7 |
| - nnoremap <buffer><silent> <Plug>(fern-action-new-path=) :<C-u>call <SID>call_without_guard('new_path')<CR> |
8 |
| - nnoremap <buffer><silent> <Plug>(fern-action-new-file=) :<C-u>call <SID>call_without_guard('new_file')<CR> |
9 |
| - nnoremap <buffer><silent> <Plug>(fern-action-new-dir=) :<C-u>call <SID>call_without_guard('new_dir')<CR> |
10 |
| - nnoremap <buffer><silent> <Plug>(fern-action-copy) :<C-u>call <SID>call('copy')<CR> |
11 |
| - nnoremap <buffer><silent> <Plug>(fern-action-move) :<C-u>call <SID>call('move')<CR> |
12 |
| - nnoremap <buffer><silent> <Plug>(fern-action-trash) :<C-u>call <SID>call('trash')<CR> |
13 |
| - nnoremap <buffer><silent> <Plug>(fern-action-trash=) :<C-u>call <SID>call_without_guard('trash')<CR> |
14 |
| - nnoremap <buffer><silent> <Plug>(fern-action-remove) :<C-u>call <SID>call('remove')<CR> |
15 |
| - nnoremap <buffer><silent> <Plug>(fern-action-remove=) :<C-u>call <SID>call_without_guard('remove')<CR> |
| 4 | + nnoremap <buffer><silent> <Plug>(fern-action-new-path) :<C-u>call <SID>call('new_path')<CR> |
| 5 | + nnoremap <buffer><silent> <Plug>(fern-action-new-file) :<C-u>call <SID>call('new_file')<CR> |
| 6 | + nnoremap <buffer><silent> <Plug>(fern-action-new-dir) :<C-u>call <SID>call('new_dir')<CR> |
| 7 | + nnoremap <buffer><silent> <Plug>(fern-action-new-path=) :<C-u>call <SID>call_without_guard('new_path')<CR> |
| 8 | + nnoremap <buffer><silent> <Plug>(fern-action-new-file=) :<C-u>call <SID>call_without_guard('new_file')<CR> |
| 9 | + nnoremap <buffer><silent> <Plug>(fern-action-new-dir=) :<C-u>call <SID>call_without_guard('new_dir')<CR> |
| 10 | + nnoremap <buffer><silent> <Plug>(fern-action-copy) :<C-u>call <SID>call('copy')<CR> |
| 11 | + nnoremap <buffer><silent> <Plug>(fern-action-move) :<C-u>call <SID>call('move')<CR> |
| 12 | + nnoremap <buffer><silent> <Plug>(fern-action-trash) :<C-u>call <SID>call('trash')<CR> |
| 13 | + nnoremap <buffer><silent> <Plug>(fern-action-trash=) :<C-u>call <SID>call_without_guard('trash')<CR> |
| 14 | + nnoremap <buffer><silent> <Plug>(fern-action-remove) :<C-u>call <SID>call('remove')<CR> |
| 15 | + nnoremap <buffer><silent> <Plug>(fern-action-remove=) :<C-u>call <SID>call_without_guard('remove')<CR> |
| 16 | + nnoremap <buffer><silent> <Plug>(fern-action-preview:left) :<C-u>call <SID>call('preview', 'vertical topleft')<CR> |
| 17 | + nnoremap <buffer><silent> <Plug>(fern-action-preview:right) :<C-u>call <SID>call('preview', 'vertical botright')<CR> |
| 18 | + nnoremap <buffer><silent> <Plug>(fern-action-preview:top) :<C-u>call <SID>call('preview', 'topleft')<CR> |
| 19 | + nnoremap <buffer><silent> <Plug>(fern-action-preview:bottom) :<C-u>call <SID>call('preview', 'botright')<CR> |
| 20 | +
|
| 21 | + " Alias map |
| 22 | + nnoremap <buffer><silent> <Plug>(fern-action-preview) <Plug>(fern-action-preview:bottom) |
16 | 23 |
|
17 | 24 | if !a:disable_default_mappings
|
18 | 25 | nmap <buffer><nowait> N <Plug>(fern-action-new-file)
|
@@ -205,6 +212,23 @@ function! s:map_remove(helper) abort
|
205 | 212 | \.then({ -> a:helper.sync.echo(printf('%d items are removed', len(ps))) })
|
206 | 213 | endfunction
|
207 | 214 |
|
| 215 | +function! s:map_preview(helper, prefix) abort |
| 216 | + let node = a:helper.sync.get_cursor_node() |
| 217 | + if node is# v:null |
| 218 | + return s:Promise.reject('cursor node is not visible') |
| 219 | + endif |
| 220 | + if node.status isnot# a:helper.STATUS_NONE |
| 221 | + return s:Promise.resolve() |
| 222 | + endif |
| 223 | + |
| 224 | + try |
| 225 | + execute printf("noautocmd %s pedit %s", a:prefix, fnameescape(node._path)) |
| 226 | + return s:Promise.resolve() |
| 227 | + catch |
| 228 | + return s:Promise.reject(v:exception) |
| 229 | + endtry |
| 230 | +endfunction |
| 231 | + |
208 | 232 | function! s:new_file(helper, name) abort
|
209 | 233 | let node = a:helper.sync.get_cursor_node()
|
210 | 234 | let node = node.status isnot# a:helper.STATUS_EXPANDED ? node.__owner : node
|
|
0 commit comments