Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 1 | " netrwPlugin.vim: Handles file transfer and remote directory listing across a network |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 2 | " PLUGIN SECTION |
Christian Brabandt | f9ca139 | 2024-02-19 20:37:11 +0100 | [diff] [blame] | 3 | " Maintainer: This runtime file is looking for a new maintainer. |
Konfekt | 3d7e567 | 2024-10-27 22:16:49 +0100 | [diff] [blame] | 4 | " Date: Sep 09, 2021 |
Nir Lichtman | 1e34b95 | 2024-05-08 19:19:34 +0200 | [diff] [blame] | 5 | " Last Change: |
| 6 | " 2024 May 08 by Vim Project: cleanup legacy Win9X checks |
Konfekt | 3d7e567 | 2024-10-27 22:16:49 +0100 | [diff] [blame] | 7 | " 2024 Oct 27 by Vim Project: cleanup gx mapping |
Christian Brabandt | d69ffbe | 2024-10-28 21:23:54 +0100 | [diff] [blame] | 8 | " 2024 Oct 28 by Vim Project: further improvements |
Christian Brabandt | 8b0fa7a | 2024-10-31 09:21:23 +0100 | [diff] [blame] | 9 | " 2024 Oct 31 by Vim Project: use autoloaded functions |
Christian Brabandt | f9ca139 | 2024-02-19 20:37:11 +0100 | [diff] [blame] | 10 | " Former Maintainer: Charles E Campbell |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 11 | " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim |
Bram Moolenaar | 89a9c15 | 2021-08-29 21:55:35 +0200 | [diff] [blame] | 12 | " Copyright: Copyright (C) 1999-2021 Charles E. Campbell {{{1 |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 13 | " Permission is hereby granted to use and distribute this code, |
| 14 | " with or without modifications, provided that this copyright |
| 15 | " notice is copied with it. Like anything else that's free, |
| 16 | " netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided |
| 17 | " *as is* and comes with no warranty of any kind, either |
| 18 | " expressed or implied. By using this plugin, you agree that |
| 19 | " in no event will the copyright holder be liable for any damages |
| 20 | " resulting from the use of this software. |
| 21 | " |
| 22 | " But be doers of the Word, and not only hearers, deluding your own selves {{{1 |
| 23 | " (James 1:22 RSV) |
| 24 | " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 25 | " Load Once: {{{1 |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 26 | if &cp || exists("g:loaded_netrwPlugin") |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 27 | finish |
| 28 | endif |
Bram Moolenaar | b7398fe | 2023-05-14 18:50:25 +0100 | [diff] [blame] | 29 | let g:loaded_netrwPlugin = "v173" |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 30 | let s:keepcpo = &cpo |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 31 | set cpo&vim |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 32 | "DechoRemOn |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 33 | |
| 34 | " --------------------------------------------------------------------- |
| 35 | " Public Interface: {{{1 |
| 36 | |
Konfekt | 3d7e567 | 2024-10-27 22:16:49 +0100 | [diff] [blame] | 37 | " Commands Launch/URL {{{2 |
Christian Brabandt | 8b0fa7a | 2024-10-31 09:21:23 +0100 | [diff] [blame] | 38 | command -complete=shellcmd -nargs=1 Launch call netrw#Launch(trim(<q-args>)) |
| 39 | command -complete=file -nargs=1 Open call netrw#Open(trim(<q-args>)) |
Konfekt | 3d7e567 | 2024-10-27 22:16:49 +0100 | [diff] [blame] | 40 | " " }}} |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 41 | " Local Browsing Autocmds: {{{2 |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 42 | augroup FileExplorer |
| 43 | au! |
Bram Moolenaar | a687837 | 2014-03-22 21:02:50 +0100 | [diff] [blame] | 44 | au BufLeave * if &ft != "netrw"|let w:netrw_prvfile= expand("%:p")|endif |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 45 | au BufEnter * sil call s:LocalBrowse(expand("<amatch>")) |
| 46 | au VimEnter * sil call s:VimEnter(expand("<amatch>")) |
Nir Lichtman | 1e34b95 | 2024-05-08 19:19:34 +0200 | [diff] [blame] | 47 | if has("win32") |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 48 | au BufEnter .* sil call s:LocalBrowse(expand("<amatch>")) |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 49 | endif |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 50 | augroup END |
| 51 | |
| 52 | " Network Browsing Reading Writing: {{{2 |
| 53 | augroup Network |
| 54 | au! |
Bram Moolenaar | 85850f3 | 2019-07-19 22:05:51 +0200 | [diff] [blame] | 55 | au BufReadCmd file://* call netrw#FileUrlEdit(expand("<amatch>")) |
| 56 | au BufReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "sil doau BufReadPost ".fnameescape(expand("<amatch>")) |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 57 | au FileReadCmd ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "sil doau FileReadPost ".fnameescape(expand("<amatch>")) |
| 58 | au BufWriteCmd ftp://*,rcp://*,scp://*,http://*,file://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "sil doau BufWritePost ".fnameescape(expand("<amatch>")) |
| 59 | au FileWriteCmd ftp://*,rcp://*,scp://*,http://*,file://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "sil doau FileWritePost ".fnameescape(expand("<amatch>")) |
Bram Moolenaar | 589edb3 | 2019-09-20 14:38:13 +0200 | [diff] [blame] | 60 | try |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 61 | au SourceCmd ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>")) |
Bram Moolenaar | 589edb3 | 2019-09-20 14:38:13 +0200 | [diff] [blame] | 62 | catch /^Vim\%((\a\+)\)\=:E216/ |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 63 | au SourcePre ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>")) |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 64 | endtry |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 65 | augroup END |
| 66 | |
| 67 | " Commands: :Nread, :Nwrite, :NetUserPass {{{2 |
Bram Moolenaar | e0fa374 | 2016-02-20 15:47:01 +0100 | [diff] [blame] | 68 | com! -count=1 -nargs=* Nread let s:svpos= winsaveview()<bar>call netrw#NetRead(<count>,<f-args>)<bar>call winrestview(s:svpos) |
| 69 | com! -range=% -nargs=* Nwrite let s:svpos= winsaveview()<bar><line1>,<line2>call netrw#NetWrite(<f-args>)<bar>call winrestview(s:svpos) |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 70 | com! -nargs=* NetUserPass call NetUserPass(<f-args>) |
Bram Moolenaar | e0fa374 | 2016-02-20 15:47:01 +0100 | [diff] [blame] | 71 | com! -nargs=* Nsource let s:svpos= winsaveview()<bar>call netrw#NetSource(<f-args>)<bar>call winrestview(s:svpos) |
Bram Moolenaar | 85850f3 | 2019-07-19 22:05:51 +0200 | [diff] [blame] | 72 | com! -nargs=? Ntree call netrw#SetTreetop(1,<q-args>) |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 73 | |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 74 | " Commands: :Explore, :Sexplore, Hexplore, Vexplore, Lexplore {{{2 |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 75 | com! -nargs=* -bar -bang -count=0 -complete=dir Explore call netrw#Explore(<count>,0,0+<bang>0,<q-args>) |
| 76 | com! -nargs=* -bar -bang -count=0 -complete=dir Sexplore call netrw#Explore(<count>,1,0+<bang>0,<q-args>) |
| 77 | com! -nargs=* -bar -bang -count=0 -complete=dir Hexplore call netrw#Explore(<count>,1,2+<bang>0,<q-args>) |
| 78 | com! -nargs=* -bar -bang -count=0 -complete=dir Vexplore call netrw#Explore(<count>,1,4+<bang>0,<q-args>) |
| 79 | com! -nargs=* -bar -count=0 -complete=dir Texplore call netrw#Explore(<count>,0,6 ,<q-args>) |
| 80 | com! -nargs=* -bar -bang Nexplore call netrw#Explore(-1,0,0,<q-args>) |
| 81 | com! -nargs=* -bar -bang Pexplore call netrw#Explore(-2,0,0,<q-args>) |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 82 | com! -nargs=* -bar -bang -count=0 -complete=dir Lexplore call netrw#Lexplore(<count>,<bang>0,<q-args>) |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 83 | |
| 84 | " Commands: NetrwSettings {{{2 |
Bram Moolenaar | f233048 | 2008-06-24 20:19:36 +0000 | [diff] [blame] | 85 | com! -nargs=0 NetrwSettings call netrwSettings#NetrwSettings() |
Bram Moolenaar | a687837 | 2014-03-22 21:02:50 +0100 | [diff] [blame] | 86 | com! -bang NetrwClean call netrw#Clean(<bang>0) |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 87 | |
Bram Moolenaar | b8a7b56 | 2006-02-01 21:47:16 +0000 | [diff] [blame] | 88 | " Maps: |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 89 | if !exists("g:netrw_nogx") |
| 90 | if maparg('gx','n') == "" |
| 91 | if !hasmapto('<Plug>NetrwBrowseX') |
| 92 | nmap <unique> gx <Plug>NetrwBrowseX |
| 93 | endif |
Bram Moolenaar | 5ef1c6a | 2019-11-10 22:09:11 +0100 | [diff] [blame] | 94 | nno <silent> <Plug>NetrwBrowseX :call netrw#BrowseX(netrw#GX(),netrw#CheckIfRemote(netrw#GX()))<cr> |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 95 | endif |
Bram Moolenaar | 89a9c15 | 2021-08-29 21:55:35 +0200 | [diff] [blame] | 96 | if maparg('gx','x') == "" |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 97 | if !hasmapto('<Plug>NetrwBrowseXVis') |
Bram Moolenaar | 89a9c15 | 2021-08-29 21:55:35 +0200 | [diff] [blame] | 98 | xmap <unique> gx <Plug>NetrwBrowseXVis |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 99 | endif |
Bram Moolenaar | 89a9c15 | 2021-08-29 21:55:35 +0200 | [diff] [blame] | 100 | xno <silent> <Plug>NetrwBrowseXVis :<c-u>call netrw#BrowseXVis()<cr> |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 101 | endif |
Bram Moolenaar | b8a7b56 | 2006-02-01 21:47:16 +0000 | [diff] [blame] | 102 | endif |
Bram Moolenaar | a0f849e | 2015-10-30 14:37:44 +0100 | [diff] [blame] | 103 | if exists("g:netrw_usetab") && g:netrw_usetab |
| 104 | if maparg('<c-tab>','n') == "" |
| 105 | nmap <unique> <c-tab> <Plug>NetrwShrink |
| 106 | endif |
| 107 | nno <silent> <Plug>NetrwShrink :call netrw#Shrink()<cr> |
| 108 | endif |
Bram Moolenaar | b8a7b56 | 2006-02-01 21:47:16 +0000 | [diff] [blame] | 109 | |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 110 | " --------------------------------------------------------------------- |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 111 | " LocalBrowse: invokes netrw#LocalBrowseCheck() on directory buffers {{{2 |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 112 | fun! s:LocalBrowse(dirname) |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 113 | " Unfortunate interaction -- only DechoMsg debugging calls can be safely used here. |
| 114 | " Otherwise, the BufEnter event gets triggered when attempts to write to |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 115 | " the DBG buffer are made. |
Bram Moolenaar | 589edb3 | 2019-09-20 14:38:13 +0200 | [diff] [blame] | 116 | |
Bram Moolenaar | e6ae622 | 2013-05-21 21:01:10 +0200 | [diff] [blame] | 117 | if !exists("s:vimentered") |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 118 | " If s:vimentered doesn't exist, then the VimEnter event hasn't fired. It will, |
| 119 | " and so s:VimEnter() will then be calling this routine, but this time with s:vimentered defined. |
| 120 | " call Dfunc("s:LocalBrowse(dirname<".a:dirname.">) (s:vimentered doesn't exist)") |
| 121 | " call Dret("s:LocalBrowse") |
Bram Moolenaar | e6ae622 | 2013-05-21 21:01:10 +0200 | [diff] [blame] | 122 | return |
| 123 | endif |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 124 | |
| 125 | " call Dfunc("s:LocalBrowse(dirname<".a:dirname.">) (s:vimentered=".s:vimentered.")") |
| 126 | |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 127 | if has("amiga") |
| 128 | " The check against '' is made for the Amiga, where the empty |
| 129 | " string is the current directory and not checking would break |
| 130 | " things such as the help command. |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 131 | " call Decho("(LocalBrowse) dirname<".a:dirname."> (isdirectory, amiga)") |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 132 | if a:dirname != '' && isdirectory(a:dirname) |
Bram Moolenaar | adc2182 | 2011-04-01 18:03:16 +0200 | [diff] [blame] | 133 | sil! call netrw#LocalBrowseCheck(a:dirname) |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 134 | if exists("w:netrw_bannercnt") && line('.') < w:netrw_bannercnt |
Bram Moolenaar | a687837 | 2014-03-22 21:02:50 +0100 | [diff] [blame] | 135 | exe w:netrw_bannercnt |
| 136 | endif |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 137 | endif |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 138 | |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 139 | elseif isdirectory(a:dirname) |
Bram Moolenaar | a687837 | 2014-03-22 21:02:50 +0100 | [diff] [blame] | 140 | " call Decho("(LocalBrowse) dirname<".a:dirname."> ft=".&ft." (isdirectory, not amiga)") |
| 141 | " call Dredir("LocalBrowse ft last set: ","verbose set ft") |
Bram Moolenaar | 89a9c15 | 2021-08-29 21:55:35 +0200 | [diff] [blame] | 142 | " Jul 13, 2021: for whatever reason, preceding the following call with |
| 143 | " a sil! causes an unbalanced if-endif vim error |
| 144 | call netrw#LocalBrowseCheck(a:dirname) |
Bram Moolenaar | 8feef4f | 2015-01-07 16:57:10 +0100 | [diff] [blame] | 145 | if exists("w:netrw_bannercnt") && line('.') < w:netrw_bannercnt |
Bram Moolenaar | a687837 | 2014-03-22 21:02:50 +0100 | [diff] [blame] | 146 | exe w:netrw_bannercnt |
| 147 | endif |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 148 | |
| 149 | else |
| 150 | " not a directory, ignore it |
| 151 | " call Decho("(LocalBrowse) dirname<".a:dirname."> not a directory, ignoring...") |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 152 | endif |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 153 | |
| 154 | " call Dret("s:LocalBrowse") |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 155 | endfun |
| 156 | |
| 157 | " --------------------------------------------------------------------- |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 158 | " s:VimEnter: after all vim startup stuff is done, this function is called. {{{2 |
| 159 | " Its purpose: to look over all windows and run s:LocalBrowse() on |
| 160 | " them, which checks if they're directories and will create a directory |
| 161 | " listing when appropriate. |
| 162 | " It also sets s:vimentered, letting s:LocalBrowse() know that s:VimEnter() |
| 163 | " has already been called. |
Bram Moolenaar | 00a927d | 2010-05-14 23:24:24 +0200 | [diff] [blame] | 164 | fun! s:VimEnter(dirname) |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 165 | " call Dfunc("s:VimEnter(dirname<".a:dirname.">) expand(%)<".expand("%").">") |
Bram Moolenaar | 89a9c15 | 2021-08-29 21:55:35 +0200 | [diff] [blame] | 166 | if has('nvim') || v:version < 802 |
| 167 | " Johann Höchtl: reported that the call range... line causes an E488: Trailing characters |
| 168 | " error with neovim. I suspect its because neovim hasn't updated with recent |
| 169 | " vim patches. As is, this code will have problems with popup terminals |
| 170 | " instantiated before the VimEnter event runs. |
| 171 | " Ingo Karkat : E488 also in Vim 8.1.1602 |
Bram Moolenaar | e6ae622 | 2013-05-21 21:01:10 +0200 | [diff] [blame] | 172 | let curwin = winnr() |
| 173 | let s:vimentered = 1 |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 174 | windo call s:LocalBrowse(expand("%:p")) |
Bram Moolenaar | 477db06 | 2010-07-28 18:17:41 +0200 | [diff] [blame] | 175 | exe curwin."wincmd w" |
Bram Moolenaar | 89a9c15 | 2021-08-29 21:55:35 +0200 | [diff] [blame] | 176 | else |
| 177 | " the following complicated expression comes courtesy of lacygoill; largely does the same thing as the windo and |
| 178 | " wincmd which are commented out, but avoids some side effects. Allows popup terminal before VimEnter. |
| 179 | let s:vimentered = 1 |
| 180 | call range(1, winnr('$'))->map({_, v -> win_execute(win_getid(v), 'call expand("%:p")->s:LocalBrowse()')}) |
| 181 | endif |
Bram Moolenaar | 8d04317 | 2014-01-23 14:24:41 +0100 | [diff] [blame] | 182 | " call Dret("s:VimEnter") |
Bram Moolenaar | 00a927d | 2010-05-14 23:24:24 +0200 | [diff] [blame] | 183 | endfun |
| 184 | |
| 185 | " --------------------------------------------------------------------- |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 186 | " NetrwStatusLine: {{{1 |
| 187 | fun! NetrwStatusLine() |
Bram Moolenaar | af48b09 | 2006-03-14 22:51:38 +0000 | [diff] [blame] | 188 | " let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr("%")." Xline#".w:netrw_explore_line." line#".line(".") |
| 189 | if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list") |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 190 | let &stl= s:netrw_explore_stl |
| 191 | if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif |
| 192 | if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif |
| 193 | return "" |
| 194 | else |
| 195 | return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen |
| 196 | endif |
| 197 | endfun |
| 198 | |
| 199 | " ------------------------------------------------------------------------ |
| 200 | " NetUserPass: set username and password for subsequent ftp transfer {{{1 |
| 201 | " Usage: :call NetUserPass() -- will prompt for userid and password |
| 202 | " :call NetUserPass("uid") -- will prompt for password |
| 203 | " :call NetUserPass("uid","password") -- sets global userid and password |
| 204 | fun! NetUserPass(...) |
| 205 | |
| 206 | " get/set userid |
| 207 | if a:0 == 0 |
| 208 | " call Dfunc("NetUserPass(a:0<".a:0.">)") |
| 209 | if !exists("g:netrw_uid") || g:netrw_uid == "" |
| 210 | " via prompt |
| 211 | let g:netrw_uid= input('Enter username: ') |
| 212 | endif |
| 213 | else " from command line |
| 214 | " call Dfunc("NetUserPass(a:1<".a:1.">) {") |
| 215 | let g:netrw_uid= a:1 |
| 216 | endif |
| 217 | |
| 218 | " get password |
| 219 | if a:0 <= 1 " via prompt |
| 220 | " call Decho("a:0=".a:0." case <=1:") |
| 221 | let g:netrw_passwd= inputsecret("Enter Password: ") |
| 222 | else " from command line |
| 223 | " call Decho("a:0=".a:0." case >1: a:2<".a:2.">") |
| 224 | let g:netrw_passwd=a:2 |
| 225 | endif |
| 226 | " call Dret("NetUserPass") |
| 227 | endfun |
| 228 | |
| 229 | " ------------------------------------------------------------------------ |
Bram Moolenaar | 482aaeb | 2005-09-29 18:26:07 +0000 | [diff] [blame] | 230 | " Modelines And Restoration: {{{1 |
| 231 | let &cpo= s:keepcpo |
| 232 | unlet s:keepcpo |
| 233 | " vim:ts=8 fdm=marker |