45
51
" ======================
47
53
" ---------------------------------------------------------------------
54
" NetrwInit: function to initialize variables {{{2
55
fun s:NetrwInit(varname,value)
58
exe "let ".a:varname."=".a:value
59
elseif type(a:value) == 1
60
exe "let ".a:varname."="."'".a:value."'"
62
exe "let ".a:varname."=".a:value
67
" ---------------------------------------------------------------------
48
68
" Netrw Constants: {{{2
49
if !exists("g:NETRW_BOOKMARKMAX")
50
let g:NETRW_BOOKMARKMAX= 0
52
if !exists("g:NETRW_DIRHIST_CNT")
53
let g:NETRW_DIRHIST_CNT= 0
69
call s:NetrwInit("g:netrw_dirhist_cnt",0)
55
70
if !exists("s:LONGLIST")
71
call s:NetrwInit("s:THINLIST",0)
72
call s:NetrwInit("s:LONGLIST",1)
73
call s:NetrwInit("s:WIDELIST",2)
74
call s:NetrwInit("s:TREELIST",3)
75
call s:NetrwInit("s:MAXLIST" ,4)
63
78
" ---------------------------------------------------------------------
64
79
" Default values for netrw's global protocol variables {{{2
65
80
if !exists("g:netrw_dav_cmd")
81
if executable("cadaver")
66
82
let g:netrw_dav_cmd = "cadaver"
83
elseif executable("curl")
84
let g:netrw_dav_cmd = "curl"
86
let g:netrw_dav_cmd = ""
68
89
if !exists("g:netrw_fetch_cmd")
69
90
if executable("fetch")
78
99
if !exists("g:netrw_http_cmd")
79
100
if executable("elinks")
80
101
let g:netrw_http_cmd = "elinks"
81
let g:netrw_http_xcmd= "-dump >"
102
if !exists("g:netrw_http_xcmd")
103
let g:netrw_http_xcmd= "-dump >"
82
105
elseif executable("links")
83
106
let g:netrw_http_cmd = "links"
84
let g:netrw_http_xcmd= "-dump >"
107
if !exists("g:netrw_http_xcmd")
108
let g:netrw_http_xcmd= "-dump >"
85
110
elseif executable("curl")
86
let g:netrw_http_cmd = "curl -o"
111
let g:netrw_http_cmd = "curl"
112
if !exists("g:netrw_http_xcmd")
113
let g:netrw_http_xcmd= "-o"
87
115
elseif executable("wget")
88
let g:netrw_http_cmd = "wget -q -O"
116
let g:netrw_http_cmd = "wget"
117
call s:NetrwInit("g:netrw_http_xcmd","-q -O")
89
118
elseif executable("fetch")
90
let g:netrw_http_cmd = "fetch -o"
119
let g:netrw_http_cmd = "fetch"
120
call s:NetrwInit("g:netrw_http_xcmd","-o")
92
122
let g:netrw_http_cmd = ""
95
if !exists("g:netrw_rcp_cmd")
96
let g:netrw_rcp_cmd = "rcp"
98
if !exists("g:netrw_rsync_cmd")
99
let g:netrw_rsync_cmd = "rsync"
101
if !exists("g:netrw_scp_cmd")
102
let g:netrw_scp_cmd = "scp -q"
104
if !exists("g:netrw_sftp_cmd")
105
let g:netrw_sftp_cmd = "sftp"
107
if !exists("g:netrw_ssh_cmd")
108
let g:netrw_ssh_cmd= "ssh"
125
call s:NetrwInit("g:netrw_rcp_cmd" , "rcp")
126
call s:NetrwInit("g:netrw_rsync_cmd", "rsync")
127
call s:NetrwInit("g:netrw_scp_cmd" , "scp -q")
128
call s:NetrwInit("g:netrw_sftp_cmd" , "sftp")
129
call s:NetrwInit("g:netrw_ssh_cmd" , "ssh")
111
131
if (has("win32") || has("win95") || has("win64") || has("win16"))
112
132
\ && exists("g:netrw_use_nt_rcp")
136
156
" Default values - a-c ---------- {{{3
137
if !exists("g:netrw_alto")
138
let g:netrw_alto= &sb
140
if !exists("g:netrw_altv")
141
let g:netrw_altv= &spr
143
if !exists("g:netrw_browse_split")
144
let g:netrw_browse_split= 0
146
if !exists("g:netrw_chgwin")
147
let g:netrw_chgwin = -1
149
if !exists("g:netrw_compress")
150
let g:netrw_compress= "gzip"
152
if !exists("g:netrw_ctags")
153
let g:netrw_ctags= "ctags"
157
call s:NetrwInit("g:netrw_alto" , &sb)
158
call s:NetrwInit("g:netrw_altv" , &spr)
159
call s:NetrwInit("g:netrw_browse_split", 0)
160
call s:NetrwInit("g:netrw_chgwin" , -1)
161
call s:NetrwInit("g:netrw_compress" , "gzip")
162
call s:NetrwInit("g:netrw_ctags" , "ctags")
163
if !exists("g:netrw_cursorline")
164
let g:netrw_cursorline= 1
165
let s:netrw_usercul = &cursorline
166
let s:netrw_usercuc = &cursorcolumn
155
168
" Default values - d-g ---------- {{{3
156
if !exists("g:NETRW_DIRHIST_CNT")
157
let g:NETRW_DIRHIST_CNT= 0
159
if !exists("g:netrw_decompress")
160
let g:netrw_decompress= { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"}
162
if !exists("g:netrw_dirhistmax")
163
let g:netrw_dirhistmax= 10
165
if !exists("g:netrw_fastbrowse")
166
let g:netrw_fastbrowse= 1
168
if !exists("g:netrw_ftp_browse_reject")
169
let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
169
call s:NetrwInit("g:netrw_dirhist_cnt" , 0)
170
call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf"}')
171
call s:NetrwInit("g:netrw_dirhistmax" , 10)
172
call s:NetrwInit("g:netrw_fastbrowse" , 1)
173
call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$')
171
174
if !exists("g:netrw_ftp_list_cmd")
172
175
if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
173
176
let g:netrw_ftp_list_cmd = "ls -lF"
244
237
let g:netrw_localmovecmd= ""
247
if !exists("g:netrw_local_rmdir")
248
let g:netrw_local_rmdir= "rmdir"
250
if !exists("g:netrw_liststyle")
251
let g:netrw_liststyle= s:THINLIST
240
call s:NetrwInit("g:netrw_local_rmdir", "rmdir")
241
call s:NetrwInit("g:netrw_liststyle" , s:THINLIST)
253
243
if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST
255
244
let g:netrw_liststyle= s:THINLIST
257
246
if g:netrw_liststyle == s:LONGLIST && g:netrw_scp_cmd !~ '^pscp'
258
247
let g:netrw_list_cmd= g:netrw_list_cmd." -l"
260
249
" Default values - m-r ---------- {{{3
261
if !exists("g:netrw_markfileesc")
262
let g:netrw_markfileesc= '*./[\~'
264
if !exists("g:netrw_maxfilenamelen")
265
let g:netrw_maxfilenamelen= 32
267
if !exists("g:netrw_menu")
270
if !exists("g:netrw_mkdir_cmd")
271
let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir"
273
if !exists("g:netrw_mousemaps")
274
if exists("&mouse") && &mouse =~ '[anh]'
275
let g:netrw_mousemaps= 1
277
let g:netrw_mousemaps= 0
280
if !exists("g:netrw_retmap")
281
let g:netrw_retmap= 0
283
if !exists("g:netrw_preview")
284
let g:netrw_preview= 0
286
if !exists("g:netrw_scpport")
287
let g:netrw_scpport= "-P"
289
if !exists("g:netrw_sshport")
290
let g:netrw_sshport= "-p"
292
if !exists("g:netrw_rename_cmd")
293
let g:netrw_rename_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mv"
295
if !exists("g:netrw_rm_cmd")
296
let g:netrw_rm_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rm"
298
if !exists("g:netrw_rmdir_cmd")
299
let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir"
301
if !exists("g:netrw_rmf_cmd")
302
let g:netrw_rmf_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f"
250
call s:NetrwInit("g:netrw_markfileesc" , '*./[\~')
251
call s:NetrwInit("g:netrw_maxfilenamelen", 32)
252
call s:NetrwInit("g:netrw_menu" , 1)
253
call s:NetrwInit("g:netrw_mkdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir")
254
call s:NetrwInit("g:netrw_mousemaps" , (exists("&mouse") && &mouse =~ '[anh]'))
255
call s:NetrwInit("g:netrw_retmap" , 0)
256
call s:NetrwInit("g:netrw_preview" , 0)
257
call s:NetrwInit("g:netrw_scpport" , "-P")
258
call s:NetrwInit("g:netrw_sshport" , "-p")
259
call s:NetrwInit("g:netrw_rename_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mv")
260
call s:NetrwInit("g:netrw_rm_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm")
261
call s:NetrwInit("g:netrw_rmdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir")
262
call s:NetrwInit("g:netrw_rmf_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f")
304
263
" Default values - s ---------- {{{3
305
" set up shell quoting character
306
if exists("g:netrw_silent") && g:netrw_silent != 0
307
let s:netrw_silentxfer= "silent "
309
let s:netrw_silentxfer= ""
311
if !exists("g:netrw_sort_by")
312
" alternatives: date size
313
let g:netrw_sort_by= "name"
315
if !exists("g:netrw_sort_options")
316
let g:netrw_sort_options= ""
318
if !exists("g:netrw_sort_direction")
319
" alternative: reverse (z y x ...)
320
let g:netrw_sort_direction= "normal"
264
" g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename
265
call s:NetrwInit("g:netrw_sepchr" , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>")
266
call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent " : "")
267
call s:NetrwInit("g:netrw_sort_by" , "name") " alternatives: date , size
268
call s:NetrwInit("g:netrw_sort_options" , "")
269
call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse (z y x ...)
322
270
if !exists("g:netrw_sort_sequence")
323
let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
325
if !exists("g:netrw_special_syntax")
326
let g:netrw_special_syntax= 0
328
if !exists("g:netrw_ssh_browse_reject")
329
let g:netrw_ssh_browse_reject='^total\s\+\d\+$'
332
if !exists("g:netrw_use_noswf")
333
let g:netrw_use_noswf= 1
272
let g:netrw_sort_sequence= '[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
274
let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
336
let g:netrw_use_noswf= 0
277
call s:NetrwInit("g:netrw_special_syntax" , 0)
278
call s:NetrwInit("g:netrw_ssh_browse_reject", '^total\s\+\d\+$')
279
call s:NetrwInit("g:netrw_use_noswf" , 0)
338
280
" Default values - t-w ---------- {{{3
339
if !exists("g:netrw_timefmt")
340
let g:netrw_timefmt= "%c"
342
if !exists("g:netrw_xstrlen")
343
let g:netrw_xstrlen= 1
345
if !exists("g:NetrwTopLvlMenu")
346
let g:NetrwTopLvlMenu= "Netrw."
348
if !exists("g:netrw_use_errorwindow")
349
let g:netrw_use_errorwindow= 1
351
if !exists("g:netrw_win95ftp")
352
let g:netrw_win95ftp= 1
354
if !exists("g:netrw_winsize")
355
let g:netrw_winsize= ""
281
call s:NetrwInit("g:netrw_timefmt","%c")
282
call s:NetrwInit("g:netrw_xstrlen",0)
283
call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.")
284
call s:NetrwInit("g:netrw_use_errorwindow",1)
285
call s:NetrwInit("g:netrw_win95ftp",1)
286
call s:NetrwInit("g:netrw_winsize","")
357
287
" ---------------------------------------------------------------------
358
288
" Default values for netrw's script variables: {{{2
359
if !exists("g:netrw_fname_escape")
360
let g:netrw_fname_escape= ' ?&;%'
362
if !exists("g:netrw_glob_escape")
363
let g:netrw_glob_escape= '[]*?`{~$'
365
if !exists("g:netrw_tmpfile_escape")
366
let g:netrw_tmpfile_escape= ' &;'
368
let s:netrw_map_escape = "<|\n\r\\\<C-V>\""
289
call s:NetrwInit("g:netrw_fname_escape",' ?&;%')
290
call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$')
291
call s:NetrwInit("g:netrw_tmpfile_escape",' &;')
292
call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"")
370
294
" BufEnter event ignored by decho when following variable is true
371
295
" Has a side effect that doau BufReadPost doesn't work, so
865
809
".........................................
866
" cadaver: NetRead Method #6 {{{3
810
" NetRead: (dav) NetRead Method #6 {{{3
867
811
elseif b:netrw_method == 6
868
812
" call Decho("read via cadaver (method #6)")
870
" Construct execution string (four lines) which will be passed through filter
871
let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
874
if exists("g:netrw_port") && g:netrw_port != ""
875
put ='open '.g:netrw_machine.' '.g:netrw_port
814
if !executable(g:netrw_dav_cmd)
815
call netrw#ErrorMsg(s:ERROR,g:netrw_dav_cmd." is not executable",73)
816
" call Dret("netrw#NetRead : ".g:netrw_dav_cmd." not executable")
819
if g:netrw_dav_cmd =~ "curl"
820
" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1))
821
exe s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1)
877
put ='open '.g:netrw_machine
879
put ='user '.g:netrw_uid.' '.s:netrw_passwd
880
put ='get '.netrw_fname.' '.tmpfile
823
" Construct execution string (four lines) which will be passed through filter
824
let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
827
if exists("g:netrw_port") && g:netrw_port != ""
828
put ='open '.g:netrw_machine.' '.g:netrw_port
830
put ='open '.g:netrw_machine
832
put ='user '.g:netrw_uid.' '.s:netrw_passwd
833
put ='get '.netrw_fname.' '.tmpfile
883
" perform cadaver operation:
836
" perform cadaver operation:
885
838
" call Decho("executing: %!".g:netrw_dav_cmd)
886
exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
839
exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
888
842
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
889
843
let b:netrw_lastfile = choice
891
845
".........................................
892
" rsync: NetRead Method #7 {{{3
846
" NetRead: (rsync) NetRead Method #7 {{{3
893
847
elseif b:netrw_method == 7
894
848
" call Decho("read via rsync (method #7)")
895
849
" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
1704
1697
nnoremap <buffer> <silent> O :call <SID>NetrwObtain(1)<cr>
1705
1698
nnoremap <buffer> <silent> p :call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
1706
1699
nnoremap <buffer> <silent> P :call <SID>NetrwPrevWinOpen(1)<cr>
1707
nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr>
1708
nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr>
1700
nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
1701
nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
1709
1702
nnoremap <buffer> <silent> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
1710
1703
nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
1711
1704
nnoremap <buffer> <silent> s :call <SID>NetrwSortStyle(1)<cr>
1712
1705
nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr>
1713
1706
nnoremap <buffer> <silent> t :call <SID>NetrwSplit(4)<cr>
1714
nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,expand("%"))<cr>
1715
nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,expand("%"))<cr>
1707
nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
1708
nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
1716
1709
nnoremap <buffer> <silent> v :call <SID>NetrwSplit(5)<cr>
1717
1710
nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
1718
1711
nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(1)<cr>
1778
1771
nnoremap <buffer> <silent> O :call <SID>NetrwObtain(0)<cr>
1779
1772
nnoremap <buffer> <silent> p :call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
1780
1773
nnoremap <buffer> <silent> P :call <SID>NetrwPrevWinOpen(0)<cr>
1781
nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr>
1782
nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr>
1774
nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
1775
nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
1783
1776
nnoremap <buffer> <silent> qf :<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr>
1784
1777
nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
1785
1778
nnoremap <buffer> <silent> s :call <SID>NetrwSortStyle(0)<cr>
1786
1779
nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr>
1787
1780
nnoremap <buffer> <silent> t :call <SID>NetrwSplit(1)<cr>
1788
nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,b:netrw_curdir)<cr>
1789
nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,b:netrw_curdir)<cr>
1781
nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
1782
nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
1790
1783
nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr>
1791
1784
nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
1792
1785
nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(0)<cr>
1844
1837
" 4: (user: <u>) go up (previous) bookmark
1845
1838
" 5: (user: <U>) go down (next) bookmark
1846
1839
" 6: (user: <mB>) delete bookmark
1847
fun! s:NetrwBookmarkDir(chg,curdir)
1848
" call Dfunc("NetrwBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." bookmax=".g:NETRW_BOOKMARKMAX." histmax=".g:netrw_dirhistmax)
1840
fun! s:NetrwBookHistHandler(chg,curdir)
1841
" call Dfunc("NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax)
1851
1844
" bookmark the current directory
1852
1845
" call Decho("(user: <b>) bookmark the current directory")
1854
" handle bookmark# specified via the count
1855
let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
1856
if !exists("g:NETRW_BOOKMARKMAX")
1857
let g:NETRW_BOOKMARKMAX= v:count
1858
elseif v:count > g:NETRW_BOOKMARKMAX
1859
let g:NETRW_BOOKMARKMAX= v:count
1862
" handle no count specified
1863
let g:NETRW_BOOKMARKMAX = g:NETRW_BOOKMARKMAX + 1
1864
let g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} = a:curdir
1846
if !exists("g:netrw_bookmarklist")
1847
let g:netrw_bookmarklist= []
1849
if index(g:netrw_bookmarklist,a:curdir) == -1
1850
" curdir not currently in g:netrw_bookmarklist, so include it
1851
call add(g:netrw_bookmarklist,a:curdir)
1852
call sort(g:netrw_bookmarklist)
1866
1854
echo "bookmarked the current directory"
1868
1856
elseif a:chg == 1
1869
1857
" change to the bookmarked directory
1870
" call Decho("(user: <B>) change to the bookmarked directory")
1871
if exists("g:NETRW_BOOKMARKDIR_{v:count}")
1872
exe "e ".fnameescape(g:NETRW_BOOKMARKDIR_{v:count})
1858
" call Decho("(user: <".v:count."mb>) change to the bookmarked directory")
1859
if exists("g:netrw_bookmarklist[v:count-1]")
1860
exe "e ".fnameescape(g:netrw_bookmarklist[v:count-1])
1874
1862
echomsg "Sorry, bookmark#".v:count." doesn't exist!"
1880
1868
" list user's bookmarks
1881
1869
" call Decho("(user: <q>) list user's bookmarks")
1882
if exists("g:NETRW_BOOKMARKMAX")
1883
" call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
1885
while cnt <= g:NETRW_BOOKMARKMAX
1886
if exists("g:NETRW_BOOKMARKDIR_{cnt}")
1887
" call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
1888
echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
1870
if exists("g:netrw_bookmarklist")
1871
" call Decho('list '.len(g:netrw_bookmarklist).' bookmarks')
1873
for bmd in g:netrw_bookmarklist
1874
" call Decho("Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1])
1875
echo "Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1]
1895
1881
" list directory history
1896
let cnt = g:NETRW_DIRHIST_CNT
1882
let cnt = g:netrw_dirhist_cnt
1898
1884
let histcnt = 0
1899
while ( first || cnt != g:NETRW_DIRHIST_CNT )
1900
" call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT)
1885
while ( first || cnt != g:netrw_dirhist_cnt )
1886
" call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:netrw_dirhist_cnt)
1901
1887
let histcnt= histcnt + 1
1902
if exists("g:NETRW_DIRHIST_{cnt}")
1903
" call Decho("Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt})
1904
echo "Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}
1888
if exists("g:netrw_dirhist_{cnt}")
1889
" call Decho("Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt})
1890
echo "Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt}
1917
1903
elseif a:chg == 3
1918
1904
" saves most recently visited directories (when they differ)
1919
1905
" call Decho("(browsing) record curdir history")
1920
if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir
1921
let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
1922
" let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e')
1923
let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= a:curdir
1924
" call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
1906
if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir
1907
let g:netrw_dirhist_cnt = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
1908
let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir
1909
" call Decho("save dirhist#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
1927
1912
elseif a:chg == 4
1928
1913
" u: change to the previous directory stored on the history list
1929
1914
" call Decho("(user: <u>) chg to prev dir from history")
1930
let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
1931
if g:NETRW_DIRHIST_CNT < 0
1932
let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
1915
let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
1916
if g:netrw_dirhist_cnt < 0
1917
let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
1934
if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
1935
" call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
1919
if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
1920
" call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
1936
1921
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
1937
1922
setlocal ma noro
1938
1923
" call Decho("setlocal ma noro")
1962
1947
" call Decho("setlocal nomod")
1964
" call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
1965
exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
1949
" call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
1950
exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
1967
let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
1968
if g:NETRW_DIRHIST_CNT < 0
1969
let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
1952
let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
1953
if g:netrw_dirhist_cnt < 0
1954
let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
1971
1956
echo "Sorry, no successor directory exists yet"
1974
1959
elseif a:chg == 6
1975
if v:count > 0 && v:count == g:NETRW_BOOKMARKMAX
1976
" delete the v:count'th bookmark
1977
" call Decho("delete bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}.">")
1978
unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
1979
let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
1982
" call Decho("delete by shifting bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{v:count}.">")
1984
while cnt < g:NETRW_BOOKMARKMAX
1985
let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)}
1988
unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
1989
let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
1991
elseif exists("b:netrw_curdir")
1992
" look for current directory amongst the bookmarks and remove that bookmark
1993
" call Decho("search for bookmark<".b:netrw_curdir.">")
1995
while cnt <= g:NETRW_BOOKMARKMAX
1996
" call Decho("checking: g:NETRW_BOOKMARKDIR_".cnt."<".g:NETRW_BOOKMARKDIR_{cnt}.">")
1997
if g:NETRW_BOOKMARKDIR_{cnt} == b:netrw_curdir
1998
if cnt < g:NETRW_BOOKMARKMAX
1999
" call Decho("delete bookmark#".cnt."<".b:netrw_curdir.">")
2000
while cnt < g:NETRW_BOOKMARMAX
2001
let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)}
2005
unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
2006
let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
1960
" delete the v:count'th bookmark
1961
" call Decho("delete bookmark#".v:count."<".g:netrw_bookmarklist[v:count-1].">")
1962
let savefile= s:NetrwHome()."/.netrwbook"
1963
if filereadable(savefile)
1964
call s:NetrwBookHistSave() " done here to merge bookmarks first
1965
call delete(savefile)
1967
call remove(g:netrw_bookmarklist,v:count-1)
2013
1969
call s:NetrwBookmarkMenu()
2014
" call Dret("NetrwBookmarkDir")
1970
" call Dret("NetrwBookHistHandler")
1973
" ---------------------------------------------------------------------
1974
" s:NetrwBookHistRead: this function reads bookmarks and history {{{2
1975
" Sister function: s:NetrwBookHistSave()
1976
fun! s:NetrwBookHistRead()
1977
" call Dfunc("s:NetrwBookHistRead()")
1978
if !exists("s:netrw_initbookhist")
1979
let home = s:NetrwHome()
1980
let savefile= home."/.netrwbook"
1981
if filereadable(savefile)
1982
" call Decho("sourcing .netrwbook")
1985
let savefile= home."/.netrwhist"
1986
if filereadable(savefile)
1987
" call Decho("sourcing .netrwhist")
1990
let s:netrw_initbookhist= 1
1991
au VimLeave * call s:NetrwBookHistSave()
1993
" call Dret("s:NetrwBookHistRead")
1996
" ---------------------------------------------------------------------
1997
" s:NetrwBookHistSave: this function saves bookmarks and history {{{2
1998
" Sister function: s:NetrwBookHistRead()
1999
" I used to do this via viminfo but that appears to
2000
" be unreliable for long-term storage
2001
" COMBAK: does $HOME work under windows???
2002
fun! s:NetrwBookHistSave()
2003
" call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax)
2004
let savefile= s:NetrwHome()."/.netrwhist"
2007
setlocal cino= com= cpo-=aA fo=nroql2 tw=0 report=10000 noswf
2008
setlocal nocin noai noci magic nospell nohid wig= noaw
2009
setlocal ma noro write
2010
if exists("&acd") | setlocal noacd | endif
2013
" save .netrwhist -- no attempt to merge
2014
silent! file .netrwhist
2015
call setline(1,"let g:netrw_dirhistmax =".g:netrw_dirhistmax)
2016
call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt)
2017
let lastline = line("$")
2019
while cnt <= g:netrw_dirhist_cnt
2020
call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'")
2023
exe "silent! w! ".savefile
2026
if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
2027
" merge and write .netrwbook
2028
let savefile= s:NetrwHome()."/.netrwbook"
2030
if filereadable(savefile)
2031
let booklist= deepcopy(g:netrw_bookmarklist)
2032
exe "silent so ".savefile
2034
if index(g:netrw_bookmarklist,bdm) == -1
2035
call add(g:netrw_bookmarklist,bdm)
2038
call sort(g:netrw_bookmarklist)
2039
exe "silent! w! ".savefile
2042
" construct and save .netrwbook
2043
call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist))
2044
exe "silent! w! ".savefile
2046
let bgone= bufnr("%")
2050
" call Dret("s:NetrwBookHistSave")
2017
2053
" ---------------------------------------------------------------------
2054
2099
if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
2055
2100
" call Decho("handle w:netrw_acdkeep:")
2056
" call Decho("keepjumps lcd ".fnameescape(a:dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
2057
exe 'keepjumps lcd '.fnameescape(a:dirname)
2101
" call Decho("keepjumps lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
2102
exe 'keepjumps lcd '.fnameescape(dirname)
2103
call s:NetrwSafeOptions()
2058
2104
" call Decho("getcwd<".getcwd().">")
2060
elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"'
2106
elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"'
2061
2107
" looks like a regular file, attempt transfer
2062
" call Decho("attempt transfer as regular file<".a:dirname.">")
2108
" call Decho("attempt transfer as regular file<".dirname.">")
2064
2110
" remove any filetype indicator from end of dirname, except for the {{{3
2065
2111
" "this is a directory" indicator (/).
2066
2112
" There shouldn't be one of those here, anyway.
2067
let path= substitute(a:dirname,'[*=@|]\r\=$','','e')
2113
let path= substitute(dirname,'[*=@|]\r\=$','','e')
2068
2114
" call Decho("new path<".path.">")
2069
call s:RemotePathAnalysis(a:dirname)
2115
call s:RemotePathAnalysis(dirname)
2071
2117
" remote-read the requested file into current buffer {{{3
2073
call s:NetrwEnew(a:dirname)
2119
call s:NetrwEnew(dirname)
2120
call s:NetrwSafeOptions()
2074
2121
setlocal ma noro
2075
2122
" call Decho("setlocal ma noro")
2076
let b:netrw_curdir= a:dirname
2123
let b:netrw_curdir= dirname
2077
2124
" call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
2078
2125
exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
2079
2126
exe "silent keepalt doau BufReadPre ".fnameescape(s:fname)
2642
2714
if !exists("s:netrw_menucnt")
2645
" call Dfunc("NetrwBookmarkMenu() bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." menucnt=".s:netrw_menucnt)
2717
" call Dfunc("NetrwBookmarkMenu() histcnt=".g:netrw_dirhist_cnt." menucnt=".s:netrw_menucnt)
2647
2719
" the following test assures that gvim is running, has menus available, and has menus enabled.
2648
2720
if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
2649
2721
if exists("g:NetrwTopLvlMenu")
2650
2722
" call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)")
2651
2723
exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
2724
exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete'
2726
if !exists("s:netrw_initbookhist")
2727
call s:NetrwBookHistRead()
2654
2730
" show bookmarked places
2656
while cnt <= g:NETRW_BOOKMARKMAX
2657
if exists("g:NETRW_BOOKMARKDIR_{cnt}")
2658
let bmdir= escape(g:NETRW_BOOKMARKDIR_{cnt},'. ')
2659
" call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmdir.' :e '.bmdir)
2660
exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmdir.' :e '.bmdir."\<cr>"
2731
if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
2733
for bmd in g:netrw_bookmarklist
2734
" call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.' :e '.bmd)
2735
let bmd= escape(bmd,'. ')
2737
" show bookmarks for goto menu
2738
exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\<cr>"
2740
" show bookmarks for deletion menu
2741
exe 'silent! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB"
2665
2747
" show directory browsing history
2666
let cnt = g:NETRW_DIRHIST_CNT
2748
let cnt = g:netrw_dirhist_cnt
2668
2750
let histcnt = 0
2669
while ( first || cnt != g:NETRW_DIRHIST_CNT )
2751
while ( first || cnt != g:netrw_dirhist_cnt )
2670
2752
let histcnt = histcnt + 1
2671
let priority = g:NETRW_DIRHIST_CNT + histcnt
2672
if exists("g:NETRW_DIRHIST_{cnt}")
2673
let bmdir= escape(g:NETRW_DIRHIST_{cnt},'/&? ')
2674
" call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir)
2675
exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir."\<cr>"
2753
let priority = g:netrw_dirhist_cnt + histcnt
2754
if exists("g:netrw_dirhist_{cnt}")
2755
let histdir= escape(g:netrw_dirhist_{cnt},'./&? ')
2756
" call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir)
2757
exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>"
2678
2760
let cnt = ( cnt - 1 ) % g:netrw_dirhistmax
3083
3192
if a:dosplit || &modified || a:style == 6
3084
3193
" call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style)
3085
3194
call s:SaveWinVars()
3195
let winsize= g:netrw_winsize
3087
3200
if a:style == 0 " Explore, Sexplore
3088
3201
" call Decho("style=0: Explore or Sexplore")
3089
exe g:netrw_winsize."wincmd s"
3202
exe winsize."wincmd s"
3091
3204
elseif a:style == 1 "Explore!, Sexplore!
3092
3205
" call Decho("style=1: Explore! or Sexplore!")
3093
exe g:netrw_winsize."wincmd v"
3206
exe winsize."wincmd v"
3095
3208
elseif a:style == 2 " Hexplore
3096
3209
" call Decho("style=2: Hexplore")
3097
exe "bel ".g:netrw_winsize."wincmd s"
3210
exe "bel ".winsize."wincmd s"
3099
3212
elseif a:style == 3 " Hexplore!
3100
3213
" call Decho("style=3: Hexplore!")
3101
exe "abo ".g:netrw_winsize."wincmd s"
3214
exe "abo ".winsize."wincmd s"
3103
3216
elseif a:style == 4 " Vexplore
3104
3217
" call Decho("style=4: Vexplore")
3105
exe "lefta ".g:netrw_winsize."wincmd v"
3218
exe "lefta ".winsize."wincmd v"
3107
3220
elseif a:style == 5 " Vexplore!
3108
3221
" call Decho("style=5: Vexplore!")
3109
exe "rightb ".g:netrw_winsize."wincmd v"
3222
exe "rightb ".winsize."wincmd v"
3111
3224
elseif a:style == 6 " Texplore
3112
3225
call s:SaveBufVars()
3321
3425
let s:netrw_curdir = b:netrw_curdir
3322
3426
let w:netrw_explore_list = getqflist()
3323
let w:netrw_explore_list = map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)')
3427
let w:netrw_explore_list = s:NetrwExploreListUniq(map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)'))
3325
3429
elseif starpat == 3
3326
3430
" starpat=3: Explore */filepat (search in current directory for filenames matching filepat)
3327
3431
" call Decho("starpat=".starpat.": build */filepat list")
3328
let dirname = substitute(dirname,'^\*/','','')
3329
let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
3330
if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
3432
let filepat= substitute(dirname,'^\*/','','')
3433
let filepat= substitute(filepat,'^[%#<]','\\&','')
3434
" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
3435
" call Decho("filepat<".filepat.">")
3436
let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".filepat),'\n'))
3437
if &hls | let keepregslash= s:ExplorePatHls(filepat) | endif
3332
3439
elseif starpat == 4
3333
3440
" starpat=4: Explore **/filepat (recursive descent search for filenames matching filepat)
3334
3441
" call Decho("starpat=".starpat.": build **/filepat list")
3335
let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
3442
let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".dirname),'\n'))
3336
3443
if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
3337
3444
endif " switch on starpat to build w:netrw_explore_list
3459
3569
" ---------------------------------------------------------------------
3570
" s:NetrwClearExplore: clear explore variables (if any) {{{2
3571
fun! s:NetrwClearExplore()
3572
" call Dfunc("s:NetrwClearExplore()")
3574
if exists("s:explore_match") |unlet s:explore_match |endif
3575
if exists("s:explore_indx") |unlet s:explore_indx |endif
3576
if exists("s:netrw_explore_prvdir") |unlet s:netrw_explore_prvdir |endif
3577
if exists("s:dirstarstar") |unlet s:dirstarstar |endif
3578
if exists("s:explore_prvdir") |unlet s:explore_prvdir |endif
3579
if exists("w:netrw_explore_indx") |unlet w:netrw_explore_indx |endif
3580
if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif
3581
if exists("w:netrw_explore_list") |unlet w:netrw_explore_list |endif
3582
if exists("w:netrw_explore_bufnr") |unlet w:netrw_explore_bufnr |endif
3586
" call Dret("s:NetrwClearExplore")
3589
" ---------------------------------------------------------------------
3590
" s:NetrwExploreListUniq: {{{2
3591
fun! s:NetrwExploreListUniq(explist)
3592
" call Dfunc("s:NetrwExploreListUniq(explist)")
3594
" this assumes that the list is already sorted
3596
for member in a:explist
3597
if !exists("uniqmember") || member != uniqmember
3598
let uniqmember = member
3599
let newexplist = newexplist + [ member ]
3603
" call Dret("s:NetrwExploreListUniq")
3607
" ---------------------------------------------------------------------
3460
3608
" s:NetrwHide: this function is invoked by the "a" map for browsing {{{2
3461
3609
" and switches the hiding mode. The actual hiding is done by
3462
3610
" s:NetrwListHide().
3537
3683
" ---------------------------------------------------------------------
3684
" s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2
3686
" call Dfunc("s:NetrwHome()")
3687
if exists("g:netrw_home")
3688
let home= g:netrw_home
3690
" go to vim plugin home
3691
for home in split(&rtp,',') + ['']
3692
if isdirectory(home) && filewritable(home) | break | endif
3693
let basehome= substitute(home,'[/\\]\.vim$','','')
3694
if isdirectory(basehome) && filewritable(basehome)
3695
let home= basehome."/.vim"
3700
" just pick the first directory
3701
" call Decho("just pick first directory in &rtp")
3702
let home= substitute(&rtp,',.*$','','')
3704
if (has("win32") || has("win95") || has("win64") || has("win16"))
3705
let home= substitute(home,'/','\\','g')
3708
" insure that the home directory exists
3709
" call Decho("picked home<".home.">")
3710
if !isdirectory(home)
3711
if exists("g:netrw_mkdir")
3712
" call Decho("home<".home."> isn't a directory -- making it now with g:netrw_mkdir<".g:netrw_mkdir.">")
3713
" call Decho("system(".g:netrw_mkdir." ".s:Escape(home).")")
3714
call system(g:netrw_mkdir." ".s:Escape(home))
3716
" call Decho("home<".home."> isn't a directory -- making it now with mkdir()")
3720
let g:netrw_home= home
3721
" call Dret("s:NetrwHome <".home.">")
3725
" ---------------------------------------------------------------------
3538
3726
" s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
3539
3727
fun! s:NetrwLeftmouse(islocal)
3540
3728
" call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
4653
4852
" call Decho("initialize menu")
4654
4853
let s:netrw_menu_enabled= 1
4655
4854
exe 'silent! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help<tab><F1> <F1>'
4656
call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4
4657
4855
exe 'silent! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :'
4658
4856
exe 'silent! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>- -'
4659
4857
exe 'silent! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x'
4660
4858
exe 'silent! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb mb'
4661
exe 'silent! menu '.g:NetrwMenuPriority.'.8.2 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete<tab>mB mB'
4662
exe 'silent! menu '.g:NetrwMenuPriority.'.8.3 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Bookmark<tab>gb gb'
4663
4859
exe 'silent! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u u'
4664
4860
exe 'silent! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U U'
4665
4861
exe 'silent! menu '.g:NetrwMenuPriority.'.8.6 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb qb'
4666
exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab>'."<ctrl-h> \<Plug>NetrwHideEdit"
4862
exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'." \<c-h>'"
4667
4863
exe 'silent! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S S'
4668
4864
exe 'silent! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh gh"
4669
exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<Plug>NetrwRefresh"
4865
exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<c-l>"
4670
4866
exe 'silent! menu '.g:NetrwMenuPriority.'.9.5 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>"
4671
4867
exe 'silent! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D'
4672
4868
exe 'silent! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr> '."\<cr>"
5663
5872
if w:netrw_liststyle == s:WIDELIST
5664
5873
" call Dfunc("NetrwWideListing() w:netrw_liststyle=".w:netrw_liststyle.' fo='.&fo.' l:fo='.&l:fo)
5665
5874
" look for longest filename (cpf=characters per filename)
5666
" cpf: characters per file
5667
" fpl: files per line
5668
" fpc: files per column
5875
" cpf: characters per filename
5876
" fpl: filenames per line
5877
" fpc: filenames per column
5669
5878
setlocal ma noro
5670
5879
" call Decho("setlocal ma noro")
5671
5880
let b:netrw_cpf= 0
5672
5881
if line("$") >= w:netrw_bannercnt
5673
5882
exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
5883
call histdel("/",-1)
5675
5885
" call Dret("NetrwWideListing")
5678
" call Decho("max file strlen+1=".b:netrw_cpf)
5679
let b:netrw_cpf= b:netrw_cpf + 1
5888
let b:netrw_cpf= b:netrw_cpf + 2
5889
" call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf)
5681
5891
" determine qty files per line (fpl)
5682
5892
let w:netrw_fpl= winwidth(0)/b:netrw_cpf
5683
5893
if w:netrw_fpl <= 0
5684
5894
let w:netrw_fpl= 1
5686
" call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
5896
" call Decho("fpl= [winwidth=".winwidth(0)."]/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
5688
5898
" make wide display
5689
5899
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
5900
call histdel("/",-1)
5690
5901
let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
5691
5902
let newcolstart = w:netrw_bannercnt + fpc
5692
5903
let newcolend = newcolstart + fpc - 1