Skip to content

Commit 1c6ae28

Browse files
authored
Merge pull request #367 from lambdalisue/add-equal-mapping-on-trash
Add equal mapping on trash
2 parents dd365ec + 5c6a8e3 commit 1c6ae28

File tree

9 files changed

+31
-35
lines changed

9 files changed

+31
-35
lines changed

autoload/vital/_fern/Prompt.vim renamed to autoload/fern/internal/prompt.vim

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
" ___vital___
2-
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
3-
" Do not modify the code nor insert new lines before '" ___vital___'
4-
function! s:_SID() abort
5-
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
6-
endfunction
7-
execute join(['function! vital#_fern#Prompt#import() abort', printf("return map({'select': '', 'ask': '', 'confirm': '', 'input': ''}, \"vital#_fern#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
8-
delfunction s:_SID
9-
" ___vital___
101
let s:ESCAPE_MARKER = sha256(expand('<sfile>'))
112

12-
function! s:input(prompt, ...) abort
3+
function! fern#internal#prompt#input(prompt, ...) abort
134
let text = a:0 > 0 ? a:1 : ''
145
let comp = a:0 > 1
156
\ ? type(a:2) is# v:t_func ? 'customlist,' . get(a:2, 'name') : a:2
@@ -28,26 +19,23 @@ function! s:input(prompt, ...) abort
2819
endtry
2920
endfunction
3021

31-
function! s:ask(...) abort
32-
call inputsave()
22+
function! fern#internal#prompt#ask(...) abort
3323
try
3424
echohl Question
35-
return call('s:input', a:000)
25+
return call('fern#internal#prompt#input', a:000)
3626
finally
3727
echohl None
38-
call inputrestore()
3928
redraw | echo
4029
endtry
4130
endfunction
4231

43-
function! s:confirm(prompt, ...) abort
32+
function! fern#internal#prompt#confirm(prompt, ...) abort
4433
let default = a:0 ? (a:1 ? 'yes' : 'no') : v:null
45-
call inputsave()
4634
echohl Question
4735
try
4836
let r = ''
4937
while r !~? '^\%(y\%[es]\|n\%[o]\)$'
50-
let r = s:input(a:prompt, '', funcref('s:_confirm_complete'))
38+
let r = fern#internal#prompt#input(a:prompt, '', funcref('s:_confirm_complete'))
5139
if r is# v:null
5240
return v:null
5341
endif
@@ -56,17 +44,15 @@ function! s:confirm(prompt, ...) abort
5644
return r =~? 'y\%[es]'
5745
finally
5846
echohl None
59-
call inputrestore()
6047
redraw | echo
6148
endtry
6249
endfunction
6350

64-
function! s:select(prompt, ...) abort
51+
function! fern#internal#prompt#select(prompt, ...) abort
6552
let max = a:0 > 0 ? a:1 : 1
6653
let min = a:0 > 1 ? a:2 : 1
6754
let pat = a:0 > 2 ? a:3 : '\d'
6855
let buffer = ''
69-
call inputsave()
7056
echohl Question
7157
try
7258
while len(buffer) < max
@@ -84,7 +70,6 @@ function! s:select(prompt, ...) abort
8470
return buffer
8571
finally
8672
echohl None
87-
call inputrestore()
8873
endtry
8974
endfunction
9075

autoload/fern/scheme/dict/mapping.vim

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
let s:Prompt = vital#fern#import('Prompt')
21
let s:Promise = vital#fern#import('Async.Promise')
32

43
function! fern#scheme#dict#mapping#init(disable_default_mappings) abort
@@ -153,7 +152,7 @@ function! s:map_remove(helper) abort
153152
let prompt .= "\n..."
154153
endif
155154
let prompt .= "\nAre you sure to continue (Y[es]/no): "
156-
if !s:Prompt.confirm(prompt)
155+
if !fern#internal#prompt#confirm(prompt)
157156
return s:Promise.reject('Cancelled')
158157
endif
159158

autoload/fern/scheme/dict/mapping/clipboard.vim

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
let s:Prompt = vital#fern#import('Prompt')
21
let s:Promise = vital#fern#import('Async.Promise')
32

43
let s:clipboard = {
@@ -65,7 +64,7 @@ function! s:map_clipboard_paste(helper) abort
6564
let prompt .= "\n..."
6665
endif
6766
let prompt .= "\nAre you sure to continue (Y[es]/no): "
68-
if !s:Prompt.confirm(prompt)
67+
if !fern#internal#prompt#confirm(prompt)
6968
return s:Promise.reject('Cancelled')
7069
endif
7170
endif

autoload/fern/scheme/dict/tree.vim

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
let s:Prompt = vital#fern#import('Prompt')
21
let s:Promise = vital#fern#import('Async.Promise')
32

43
function! fern#scheme#dict#tree#read(tree, path, ...) abort
@@ -119,7 +118,7 @@ function! s:select_overwrite_method(path) abort
119118
\ 'Please select an overwrite method (esc to cancel)',
120119
\ 'f[orce]/r[ename]: ',
121120
\], "\n")
122-
return s:Prompt.select(prompt, 1, 1, '[fr]')
121+
return fern#internal#prompt#select(prompt, 1, 1, '[fr]')
123122
endfunction
124123

125124
function! s:dig(tree, terms, create) abort

autoload/fern/scheme/file/mapping.vim

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
let s:Promise = vital#fern#import('Async.Promise')
2-
let s:Prompt = vital#fern#import('Prompt')
32

43
function! fern#scheme#file#mapping#init(disable_default_mappings) abort
54
nnoremap <buffer><silent> <Plug>(fern-action-new-path) :<C-u>call <SID>call('new_path')<CR>
@@ -11,7 +10,9 @@ function! fern#scheme#file#mapping#init(disable_default_mappings) abort
1110
nnoremap <buffer><silent> <Plug>(fern-action-copy) :<C-u>call <SID>call('copy')<CR>
1211
nnoremap <buffer><silent> <Plug>(fern-action-move) :<C-u>call <SID>call('move')<CR>
1312
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>
1414
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>
1516
1617
if !a:disable_default_mappings
1718
nmap <buffer><nowait> N <Plug>(fern-action-new-file)
@@ -151,7 +152,7 @@ function! s:map_trash(helper) abort
151152
let prompt .= "\n..."
152153
endif
153154
let prompt .= "\nAre you sure to continue (Y[es]/no): "
154-
if !s:Prompt.confirm(prompt)
155+
if !fern#internal#prompt#confirm(prompt)
155156
return s:Promise.reject('Cancelled')
156157
endif
157158
let token = a:helper.fern.source.token
@@ -183,7 +184,7 @@ function! s:map_remove(helper) abort
183184
let prompt .= "\n..."
184185
endif
185186
let prompt .= "\nAre you sure to continue (Y[es]/no): "
186-
if !s:Prompt.confirm(prompt)
187+
if !fern#internal#prompt#confirm(prompt)
187188
return s:Promise.reject('Cancelled')
188189
endif
189190
let token = a:helper.fern.source.token

autoload/fern/scheme/file/mapping/clipboard.vim

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
let s:Promise = vital#fern#import('Async.Promise')
2-
let s:Prompt = vital#fern#import('Prompt')
32

43
let s:clipboard = {
54
\ 'mode': 'copy',
@@ -65,7 +64,7 @@ function! s:map_clipboard_paste(helper) abort
6564
let prompt .= "\n..."
6665
endif
6766
let prompt .= "\nAre you sure to continue (y[es]/n[o]): "
68-
if !s:Prompt.confirm(prompt)
67+
if !fern#internal#prompt#confirm(prompt)
6968
return s:Promise.reject('Cancelled')
7069
endif
7170
endif

autoload/fern/scheme/file/shutil.vim

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
let s:File = vital#fern#import('Async.File')
22
let s:Promise = vital#fern#import('Async.Promise')
3-
let s:Prompt = vital#fern#import('Prompt')
43
let s:CancellationToken = vital#fern#import('Async.CancellationToken')
54

65
function! fern#scheme#file#shutil#open(path, ...) abort
@@ -108,5 +107,5 @@ function! s:select_overwrite_method(path) abort
108107
\ 'Please select an overwrite method (esc to cancel)',
109108
\ 'f[orce]/r[ename]: ',
110109
\], "\n")
111-
return s:Prompt.select(prompt, 1, 1, '[fr]')
110+
return fern#internal#prompt#select(prompt, 1, 1, '[fr]')
112111
endfunction

autoload/vital/fern.vital

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ Config
1212
Lambda
1313
System.Filepath
1414
Vim.Window.Cursor
15-
Prompt
1615
App.Action
1716
App.WindowSelector
1817
App.WindowLocator

doc/fern.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,6 +1148,7 @@ The following mappings/actions are only available on file:// scheme.
11481148
The prompt will repeatedly open if multiple nodes has marked.
11491149

11501150
*<Plug>(fern-action-trash)*
1151+
*<Plug>(fern-action-trash=)*
11511152
Open a prompt to ask if fern can send the cursor node or marked nodes
11521153
to the system trash-bin. It uses the following implementations to send
11531154
the node(s) into system trash-bin.
@@ -1159,11 +1160,26 @@ The following mappings/actions are only available on file:// scheme.
11591160
https://github.com/b4b4r07/gomi
11601161
Note that the action fails without removing the files/directories if
11611162
no requirement exists on Linux.
1163+
You can use a "=" variant to apply values to the prompt and/or submit
1164+
a value like:
1165+
>
1166+
" Immediately delete
1167+
nmap <buffer>
1168+
\ <Plug>(my-trash)
1169+
\ <Plug>(fern-action-trash=)y<CR>
11621170
11631171
*<Plug>(fern-action-remove)*
1172+
*<Plug>(fern-action-remove=)*
11641173
Open a prompt to ask if fern can DELETE the cursor node or marked
11651174
nodes. BE CAREFUL with this action while it DELETE the file/direcoty
11661175
and users cannot restore (like "rm" in terminal.)
1176+
You can use a "=" variant to apply values to the prompt and/or submit
1177+
a value like:
1178+
>
1179+
" Immediately delete
1180+
nmap <buffer>
1181+
\ <Plug>(my-trash)
1182+
\ <Plug>(fern-action-trash=)y<CR>
11671183
11681184
*<Plug>(fern-action-cd:root)*
11691185
*<Plug>(fern-action-lcd:root)*

0 commit comments

Comments
 (0)