[SCM] Vim packaging branch, deb/runtime, updated. upstream/7.2.130-157-g487a727
James Vega
jamessan at debian.org
Sat Apr 18 00:48:09 UTC 2009
The following commit has been merged in the deb/runtime branch:
commit d984ef23f6bc9e4ec9c6fe5e73dc700ec8c6b341
Merge: ec820d38e6ef3bceb8bd2a6a9288081e3e4a769c ab97c3c453c7798f4053ef9986fcff4f377e3097
Author: James Vega <jamessan at debian.org>
Date: Fri Apr 17 17:01:59 2009 -0400
Merge branch 'upstream-runtime' into deb/runtime
Conflicts:
runtime/ftplugin/verilog.vim
runtime/syntax/python.vim
runtime/syntax/tex.vim
Signed-off-by: James Vega <jamessan at debian.org>
diff --combined runtime/autoload/netrw.vim
index 1ea5f97,2dadcfa..c34bc8c
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@@ -1,7 -1,7 +1,7 @@@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
- " Date: Aug 08, 2008
- " Version: 132
+ " Date: Jan 14, 2009
+ " Version: 135
" Maintainer: Charles E Campbell, Jr <NdrOchip at ScampbellPfamily.AbizM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
@@@ -22,12 -22,18 +22,18 @@@
if &cp || exists("g:loaded_netrw")
finish
endif
+ let g:loaded_netrw = "v135"
+ if v:version < 702
+ echohl WarningMsg
+ echo "***warning*** this version of netrw needs vim 7.2"
+ echohl Normal
+ finish
+ endif
if !exists("s:NOTE")
let s:NOTE = 0
let s:WARNING = 1
let s:ERROR = 2
endif
- let g:loaded_netrw = "v132"
" sanity checks
if v:version < 700
@@@ -45,25 -51,40 +51,40 @@@ setlocal cpo&vi
" ======================
" ---------------------------------------------------------------------
+ " NetrwInit: function to initialize variables {{{2
+ fun s:NetrwInit(varname,value)
+ if !exists(a:varname)
+ if type(a:value) == 0
+ exe "let ".a:varname."=".a:value
+ elseif type(a:value) == 1
+ exe "let ".a:varname."="."'".a:value."'"
+ else
+ exe "let ".a:varname."=".a:value
+ endif
+ endif
+ endfun
+
+ " ---------------------------------------------------------------------
" Netrw Constants: {{{2
- if !exists("g:NETRW_BOOKMARKMAX")
- let g:NETRW_BOOKMARKMAX= 0
- endif
- if !exists("g:NETRW_DIRHIST_CNT")
- let g:NETRW_DIRHIST_CNT= 0
- endif
+ call s:NetrwInit("g:netrw_dirhist_cnt",0)
if !exists("s:LONGLIST")
- let s:THINLIST = 0
- let s:LONGLIST = 1
- let s:WIDELIST = 2
- let s:TREELIST = 3
- let s:MAXLIST = 4
+ call s:NetrwInit("s:THINLIST",0)
+ call s:NetrwInit("s:LONGLIST",1)
+ call s:NetrwInit("s:WIDELIST",2)
+ call s:NetrwInit("s:TREELIST",3)
+ call s:NetrwInit("s:MAXLIST" ,4)
endif
" ---------------------------------------------------------------------
" Default values for netrw's global protocol variables {{{2
if !exists("g:netrw_dav_cmd")
+ if executable("cadaver")
let g:netrw_dav_cmd = "cadaver"
+ elseif executable("curl")
+ let g:netrw_dav_cmd = "curl"
+ else
+ let g:netrw_dav_cmd = ""
+ endif
endif
if !exists("g:netrw_fetch_cmd")
if executable("fetch")
@@@ -78,35 -99,34 +99,34 @@@ endi
if !exists("g:netrw_http_cmd")
if executable("elinks")
let g:netrw_http_cmd = "elinks"
- let g:netrw_http_xcmd= "-dump >"
+ if !exists("g:netrw_http_xcmd")
+ let g:netrw_http_xcmd= "-dump >"
+ endif
elseif executable("links")
let g:netrw_http_cmd = "links"
- let g:netrw_http_xcmd= "-dump >"
+ if !exists("g:netrw_http_xcmd")
+ let g:netrw_http_xcmd= "-dump >"
+ endif
elseif executable("curl")
- let g:netrw_http_cmd = "curl -o"
+ let g:netrw_http_cmd = "curl"
+ if !exists("g:netrw_http_xcmd")
+ let g:netrw_http_xcmd= "-o"
+ endif
elseif executable("wget")
- let g:netrw_http_cmd = "wget -q -O"
+ let g:netrw_http_cmd = "wget"
+ call s:NetrwInit("g:netrw_http_xcmd","-q -O")
elseif executable("fetch")
- let g:netrw_http_cmd = "fetch -o"
+ let g:netrw_http_cmd = "fetch"
+ call s:NetrwInit("g:netrw_http_xcmd","-o")
else
let g:netrw_http_cmd = ""
endif
endif
- if !exists("g:netrw_rcp_cmd")
- let g:netrw_rcp_cmd = "rcp"
- endif
- if !exists("g:netrw_rsync_cmd")
- let g:netrw_rsync_cmd = "rsync"
- endif
- if !exists("g:netrw_scp_cmd")
- let g:netrw_scp_cmd = "scp -q"
- endif
- if !exists("g:netrw_sftp_cmd")
- let g:netrw_sftp_cmd = "sftp"
- endif
- if !exists("g:netrw_ssh_cmd")
- let g:netrw_ssh_cmd= "ssh"
- endif
+ call s:NetrwInit("g:netrw_rcp_cmd" , "rcp")
+ call s:NetrwInit("g:netrw_rsync_cmd", "rsync")
+ call s:NetrwInit("g:netrw_scp_cmd" , "scp -q")
+ call s:NetrwInit("g:netrw_sftp_cmd" , "sftp")
+ call s:NetrwInit("g:netrw_ssh_cmd" , "ssh")
if (has("win32") || has("win95") || has("win64") || has("win16"))
\ && exists("g:netrw_use_nt_rcp")
@@@ -134,40 -154,23 +154,23 @@@ if !exists("g:netrw_cygwin"
endif
endif
" Default values - a-c ---------- {{{3
- if !exists("g:netrw_alto")
- let g:netrw_alto= &sb
- endif
- if !exists("g:netrw_altv")
- let g:netrw_altv= &spr
- endif
- if !exists("g:netrw_browse_split")
- let g:netrw_browse_split= 0
- endif
- if !exists("g:netrw_chgwin")
- let g:netrw_chgwin = -1
- endif
- if !exists("g:netrw_compress")
- let g:netrw_compress= "gzip"
- endif
- if !exists("g:netrw_ctags")
- let g:netrw_ctags= "ctags"
+ call s:NetrwInit("g:netrw_alto" , &sb)
+ call s:NetrwInit("g:netrw_altv" , &spr)
+ call s:NetrwInit("g:netrw_browse_split", 0)
+ call s:NetrwInit("g:netrw_chgwin" , -1)
+ call s:NetrwInit("g:netrw_compress" , "gzip")
+ call s:NetrwInit("g:netrw_ctags" , "ctags")
+ if !exists("g:netrw_cursorline")
+ let g:netrw_cursorline= 1
+ let s:netrw_usercul = &cursorline
+ let s:netrw_usercuc = &cursorcolumn
endif
" Default values - d-g ---------- {{{3
- if !exists("g:NETRW_DIRHIST_CNT")
- let g:NETRW_DIRHIST_CNT= 0
- endif
- if !exists("g:netrw_decompress")
- let g:netrw_decompress= { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"}
- endif
- if !exists("g:netrw_dirhistmax")
- let g:netrw_dirhistmax= 10
- endif
- if !exists("g:netrw_fastbrowse")
- let g:netrw_fastbrowse= 1
- endif
- if !exists("g:netrw_ftp_browse_reject")
- 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$'
- endif
+ call s:NetrwInit("g:netrw_dirhist_cnt" , 0)
+ call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf"}')
+ call s:NetrwInit("g:netrw_dirhistmax" , 10)
+ call s:NetrwInit("g:netrw_fastbrowse" , 1)
+ 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$')
if !exists("g:netrw_ftp_list_cmd")
if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
let g:netrw_ftp_list_cmd = "ls -lF"
@@@ -179,13 -182,9 +182,9 @@@
let g:netrw_ftp_sizelist_cmd = "dir"
endif
endif
- if !exists("g:netrw_ftpmode")
- let g:netrw_ftpmode= "binary"
- endif
+ call s:NetrwInit("g:netrw_ftpmode",'binary')
" Default values - h-lh ---------- {{{3
- if !exists("g:netrw_hide")
- let g:netrw_hide= 1
- endif
+ call s:NetrwInit("g:netrw_hide",1)
if !exists("g:netrw_ignorenetrc")
if &shell =~ '\c\<\%(cmd\|4nt\)\.exe$'
let g:netrw_ignorenetrc= 1
@@@ -193,9 -192,7 +192,7 @@@
let g:netrw_ignorenetrc= 0
endif
endif
- if !exists("g:netrw_keepdir")
- let g:netrw_keepdir= 1
- endif
+ call s:NetrwInit("g:netrw_keepdir",1)
if !exists("g:netrw_list_cmd")
if g:netrw_scp_cmd =~ '^pscp' && executable("pscp")
" provide a 'pscp' listing command
@@@ -211,9 -208,7 +208,7 @@@
let g:netrw_list_cmd= ""
endif
endif
- if !exists("g:netrw_list_hide")
- let g:netrw_list_hide= ""
- endif
+ call s:NetrwInit("g:netrw_list_hide","")
" Default values - lh-lz ---------- {{{3
if !exists("g:netrw_localcopycmd")
if has("win32") || has("win95") || has("win64") || has("win16")
@@@ -228,9 -223,7 +223,7 @@@
let g:netrw_localcopycmd= ""
endif
endif
- if !exists("g:netrw_local_mkdir")
- let g:netrw_local_mkdir= "mkdir"
- endif
+ call s:NetrwInit("g:netrw_local_mkdir","mkdir")
if !exists("g:netrw_localmovecmd")
if has("win32") || has("win95") || has("win64") || has("win16")
if g:netrw_cygwin
@@@ -244,128 -237,59 +237,59 @@@
let g:netrw_localmovecmd= ""
endif
endif
- if !exists("g:netrw_local_rmdir")
- let g:netrw_local_rmdir= "rmdir"
- endif
- if !exists("g:netrw_liststyle")
- let g:netrw_liststyle= s:THINLIST
- endif
+ call s:NetrwInit("g:netrw_local_rmdir", "rmdir")
+ call s:NetrwInit("g:netrw_liststyle" , s:THINLIST)
+ " sanity checks
if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST
- " sanity check
let g:netrw_liststyle= s:THINLIST
endif
if g:netrw_liststyle == s:LONGLIST && g:netrw_scp_cmd !~ '^pscp'
let g:netrw_list_cmd= g:netrw_list_cmd." -l"
endif
" Default values - m-r ---------- {{{3
- if !exists("g:netrw_markfileesc")
- let g:netrw_markfileesc= '*./[\~'
- endif
- if !exists("g:netrw_maxfilenamelen")
- let g:netrw_maxfilenamelen= 32
- endif
- if !exists("g:netrw_menu")
- let g:netrw_menu= 1
- endif
- if !exists("g:netrw_mkdir_cmd")
- let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir"
- endif
- if !exists("g:netrw_mousemaps")
- if exists("&mouse") && &mouse =~ '[anh]'
- let g:netrw_mousemaps= 1
- else
- let g:netrw_mousemaps= 0
- endif
- endif
- if !exists("g:netrw_retmap")
- let g:netrw_retmap= 0
- endif
- if !exists("g:netrw_preview")
- let g:netrw_preview= 0
- endif
- if !exists("g:netrw_scpport")
- let g:netrw_scpport= "-P"
- endif
- if !exists("g:netrw_sshport")
- let g:netrw_sshport= "-p"
- endif
- if !exists("g:netrw_rename_cmd")
- let g:netrw_rename_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mv"
- endif
- if !exists("g:netrw_rm_cmd")
- let g:netrw_rm_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rm"
- endif
- if !exists("g:netrw_rmdir_cmd")
- let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir"
- endif
- if !exists("g:netrw_rmf_cmd")
- let g:netrw_rmf_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f"
- endif
+ call s:NetrwInit("g:netrw_markfileesc" , '*./[\~')
+ call s:NetrwInit("g:netrw_maxfilenamelen", 32)
+ call s:NetrwInit("g:netrw_menu" , 1)
+ call s:NetrwInit("g:netrw_mkdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir")
+ call s:NetrwInit("g:netrw_mousemaps" , (exists("&mouse") && &mouse =~ '[anh]'))
+ call s:NetrwInit("g:netrw_retmap" , 0)
+ call s:NetrwInit("g:netrw_preview" , 0)
+ call s:NetrwInit("g:netrw_scpport" , "-P")
+ call s:NetrwInit("g:netrw_sshport" , "-p")
+ call s:NetrwInit("g:netrw_rename_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mv")
+ call s:NetrwInit("g:netrw_rm_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm")
+ call s:NetrwInit("g:netrw_rmdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir")
+ call s:NetrwInit("g:netrw_rmf_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f")
" Default values - s ---------- {{{3
- " set up shell quoting character
- if exists("g:netrw_silent") && g:netrw_silent != 0
- let s:netrw_silentxfer= "silent "
- else
- let s:netrw_silentxfer= ""
- endif
- if !exists("g:netrw_sort_by")
- " alternatives: date size
- let g:netrw_sort_by= "name"
- endif
- if !exists("g:netrw_sort_options")
- let g:netrw_sort_options= ""
- endif
- if !exists("g:netrw_sort_direction")
- " alternative: reverse (z y x ...)
- let g:netrw_sort_direction= "normal"
- endif
+ " g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename
+ call s:NetrwInit("g:netrw_sepchr" , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>")
+ call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent " : "")
+ call s:NetrwInit("g:netrw_sort_by" , "name") " alternatives: date , size
+ call s:NetrwInit("g:netrw_sort_options" , "")
+ call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse (z y x ...)
if !exists("g:netrw_sort_sequence")
- let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
- endif
- if !exists("g:netrw_special_syntax")
- let g:netrw_special_syntax= 0
- endif
- if !exists("g:netrw_ssh_browse_reject")
- let g:netrw_ssh_browse_reject='^total\s\+\d\+$'
- endif
- if !has("patch192")
- if !exists("g:netrw_use_noswf")
- let g:netrw_use_noswf= 1
+ if has("unix")
+ let g:netrw_sort_sequence= '[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
+ else
+ let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
endif
- else
- let g:netrw_use_noswf= 0
endif
+ call s:NetrwInit("g:netrw_special_syntax" , 0)
+ call s:NetrwInit("g:netrw_ssh_browse_reject", '^total\s\+\d\+$')
+ call s:NetrwInit("g:netrw_use_noswf" , 0)
" Default values - t-w ---------- {{{3
- if !exists("g:netrw_timefmt")
- let g:netrw_timefmt= "%c"
- endif
- if !exists("g:netrw_xstrlen")
- let g:netrw_xstrlen= 1
- endif
- if !exists("g:NetrwTopLvlMenu")
- let g:NetrwTopLvlMenu= "Netrw."
- endif
- if !exists("g:netrw_use_errorwindow")
- let g:netrw_use_errorwindow= 1
- endif
- if !exists("g:netrw_win95ftp")
- let g:netrw_win95ftp= 1
- endif
- if !exists("g:netrw_winsize")
- let g:netrw_winsize= ""
- endif
+ call s:NetrwInit("g:netrw_timefmt","%c")
+ call s:NetrwInit("g:netrw_xstrlen",0)
+ call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.")
+ call s:NetrwInit("g:netrw_use_errorwindow",1)
+ call s:NetrwInit("g:netrw_win95ftp",1)
+ call s:NetrwInit("g:netrw_winsize","")
" ---------------------------------------------------------------------
" Default values for netrw's script variables: {{{2
- if !exists("g:netrw_fname_escape")
- let g:netrw_fname_escape= ' ?&;%'
- endif
- if !exists("g:netrw_glob_escape")
- let g:netrw_glob_escape= '[]*?`{~$'
- endif
- if !exists("g:netrw_tmpfile_escape")
- let g:netrw_tmpfile_escape= ' &;'
- endif
- let s:netrw_map_escape = "<|\n\r\\\<C-V>\""
+ call s:NetrwInit("g:netrw_fname_escape",' ?&;%')
+ call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$')
+ call s:NetrwInit("g:netrw_tmpfile_escape",' &;')
+ call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"")
" BufEnter event ignored by decho when following variable is true
" Has a side effect that doau BufReadPost doesn't work, so
@@@ -384,7 -308,7 +308,7 @@@
" NetrwBrowse.
" vt: normally its "w:" or "s:" (a variable type)
fun! s:NetrwOptionSave(vt)
- " call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">")
+ " call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">"." winnr($)=".winnr("$"))
" call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist"))
if !exists("{a:vt}netrw_optionsave")
@@@ -430,7 -354,7 +354,7 @@@ endfu
" ------------------------------------------------------------------------
" s:NetrwOptionRestore: restore options {{{2
fun! s:NetrwOptionRestore(vt)
- " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%"))
+ " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")." winnr($)=".winnr("$"))
if !exists("{a:vt}netrw_optionsave")
" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist")
@@@ -503,8 -427,8 +427,8 @@@ endfu
" ---------------------------------------------------------------------
" s:NetrwSafeOptions: sets options to help netrw do its job {{{2
fun! s:NetrwSafeOptions()
- " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">")
- " call Decho("window's ft=".&ft)
+ " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$"))
+ " call Decho("win#".winnr()."'s ft=".&ft)
setlocal cino=
setlocal com=
setlocal cpo-=aA
@@@ -513,9 -437,14 +437,14 @@@
setlocal fo=nroql2
setlocal tw=0
setlocal report=10000
+ setlocal isk+=@ isk+=* isk+=/
if g:netrw_use_noswf && has("win32") && !has("win95")
setlocal noswf
endif
+
+ " allow the user to override safe options
+ silent keepalt keepjumps doau FileType netrw
+
" call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
" call Dret("s:NetrwSafeOptions")
endfun
@@@ -566,6 -495,16 +495,16 @@@ fun! netrw#NetrwClean(sys
" call Dret("netrw#NetrwClean")
endfun
+ " ---------------------------------------------------------------------
+ " netrw#Nread: {{{2
+ fun! netrw#Nread(mode,fname)
+ " call Dfunc("netrw#Nread(mode=".a:mode." fname<".a:fname.">)")
+ call netrw#NetrwSavePosn()
+ call netrw#NetRead(a:mode,a:fname)
+ call netrw#NetrwRestorePosn()
+ " call Dret("netrw#Nread")
+ endfun
+
" ------------------------------------------------------------------------
" Netrw Transfer Functions: {{{1
" ===============================
@@@ -579,11 -518,11 +518,11 @@@
fun! netrw#NetRead(mode,...)
" call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw)
- " save options {{{3
+ " NetRead: save options {{{3
call s:NetrwOptionSave("w:")
call s:NetrwSafeOptions()
- " interpret mode into a readcmd {{{3
+ " NetRead: interpret mode into a readcmd {{{3
if a:mode == 0 " read remote file before current line
let readcmd = "0r"
elseif a:mode == 1 " read file after current line
@@@ -599,7 -538,7 +538,7 @@@
let ichoice = (a:0 == 0)? 0 : 1
" call Decho("readcmd<".readcmd."> ichoice=".ichoice)
- " Get Temporary Filename {{{3
+ " NetRead: get temporary filename {{{3
let tmpfile= s:GetTempfile("")
if tmpfile == ""
" call Dret("netrw#NetRead : unable to get a tempfile!")
@@@ -666,8 -605,12 +605,12 @@@
" call Decho("choice<" . choice . ">")
let ichoice= ichoice + 1
- " Determine method of read (ftp, rcp, etc) {{{3
+ " NetRead: Determine method of read (ftp, rcp, etc) {{{3
call s:NetrwMethod(choice)
+ if !exists("b:netrw_method") || b:netrw_method < 0
+ " call Dfunc("netrw#NetRead : unsupported method")
+ return
+ endif
let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix
" Check if NetrwBrowse() should be handling this request
@@@ -680,14 -623,14 +623,14 @@@
endif
" ============
- " Perform Protocol-Based Read {{{3
+ " NetRead: Perform Protocol-Based Read {{{3
" ===========================
if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
echo "(netrw) Processing your read request..."
endif
".........................................
- " rcp: NetRead Method #1 {{{3
+ " NetRead: (rcp) NetRead Method #1 {{{3
if b:netrw_method == 1 " read with rcp
" call Decho("read via rcp (method #1)")
" ER: nothing done with g:netrw_uid yet?
@@@ -709,12 -652,12 +652,12 @@@
endif
endif
" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
- exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+ exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
let b:netrw_lastfile = choice
".........................................
- " ftp + <.netrc>: NetRead Method #2 {{{3
+ " NetRead: (ftp + <.netrc>) NetRead Method #2 {{{3
elseif b:netrw_method == 2 " read with ftp + <.netrc>
" call Decho("read via ftp+.netrc (method #2)")
let netrw_fname= b:netrw_fname
@@@ -745,7 -688,8 +688,8 @@@
endif
call s:SaveBufVars()
bd!
- if bufname("%") == "" && line("$") == 1 && getline("$") == ""
+ if bufname("%") == "" && getline("$") == "" && line('$') == 1
+ " needed when one sources a file in a nolbl setting window via ftp
q!
endif
call s:RestoreBufVars()
@@@ -753,7 -697,7 +697,7 @@@
let b:netrw_lastfile = choice
".........................................
- " ftp + machine,id,passwd,filename: NetRead Method #3 {{{3
+ " NetRead: (ftp + machine,id,passwd,filename) NetRead Method #3 {{{3
elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname
" Construct execution string (four lines) which will be passed through filter
" call Decho("read via ftp+mipf (method #3)")
@@@ -809,7 -753,7 +753,7 @@@
let b:netrw_lastfile = choice
".........................................
- " scp: NetRead Method #4 {{{3
+ " NetRead: (scp) NetRead Method #4 {{{3
elseif b:netrw_method == 4 " read with scp
" call Decho("read via scp (method #4)")
if exists("g:netrw_port") && g:netrw_port != ""
@@@ -823,7 -767,7 +767,7 @@@
let b:netrw_lastfile = choice
".........................................
- " http: NetRead Method #5 (wget) {{{3
+ " NetRead: (http) NetRead Method #5 (wget) {{{3
elseif b:netrw_method == 5
" call Decho("read via http (method #5)")
if g:netrw_http_cmd == ""
@@@ -863,33 -807,43 +807,43 @@@
setlocal ro
".........................................
- " cadaver: NetRead Method #6 {{{3
+ " NetRead: (dav) NetRead Method #6 {{{3
elseif b:netrw_method == 6
" call Decho("read via cadaver (method #6)")
- " Construct execution string (four lines) which will be passed through filter
- let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
- new
- setlocal ff=unix
- if exists("g:netrw_port") && g:netrw_port != ""
- put ='open '.g:netrw_machine.' '.g:netrw_port
- else
- put ='open '.g:netrw_machine
+ if !executable(g:netrw_dav_cmd)
+ call netrw#ErrorMsg(s:ERROR,g:netrw_dav_cmd." is not executable",73)
+ " call Dret("netrw#NetRead : ".g:netrw_dav_cmd." not executable")
+ return
endif
- put ='user '.g:netrw_uid.' '.s:netrw_passwd
- put ='get '.netrw_fname.' '.tmpfile
- put ='quit'
+ if g:netrw_dav_cmd =~ "curl"
+ " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1))
+ exe s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1)
+ else
+ " Construct execution string (four lines) which will be passed through filter
+ let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+ new
+ setlocal ff=unix
+ if exists("g:netrw_port") && g:netrw_port != ""
+ put ='open '.g:netrw_machine.' '.g:netrw_port
+ else
+ put ='open '.g:netrw_machine
+ endif
+ put ='user '.g:netrw_uid.' '.s:netrw_passwd
+ put ='get '.netrw_fname.' '.tmpfile
+ put ='quit'
- " perform cadaver operation:
- norm! 1Gdd
+ " perform cadaver operation:
+ norm! 1Gdd
" call Decho("executing: %!".g:netrw_dav_cmd)
- exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
- bd!
+ exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
+ bd!
+ endif
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
let b:netrw_lastfile = choice
".........................................
- " rsync: NetRead Method #7 {{{3
+ " NetRead: (rsync) NetRead Method #7 {{{3
elseif b:netrw_method == 7
" call Decho("read via rsync (method #7)")
" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
@@@ -898,7 -852,7 +852,7 @@@
let b:netrw_lastfile = choice
".........................................
- " fetch: NetRead Method #8 {{{3
+ " NetRead: (fetch) NetRead Method #8 {{{3
" fetch://[user@]host[:http]/path
elseif b:netrw_method == 8
" call Decho("read via fetch (method #8)")
@@@ -928,7 -882,7 +882,7 @@@
setlocal ro
".........................................
- " sftp: NetRead Method #9 {{{3
+ " NetRead: (sftp) NetRead Method #9 {{{3
elseif b:netrw_method == 9
" call Decho("read via sftp (method #9)")
" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile)
@@@ -937,13 -891,13 +891,13 @@@
let b:netrw_lastfile = choice
".........................................
- " Complain {{{3
+ " NetRead: Complain {{{3
else
call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",8)
endif
endwhile
- " cleanup {{{3
+ " NetRead: cleanup {{{3
if exists("b:netrw_method")
" call Decho("cleanup b:netrw_method and b:netrw_fname")
unlet b:netrw_method
@@@ -951,7 -905,7 +905,7 @@@
endif
if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't'
" call Decho("cleanup by deleting tmpfile<".tmpfile.">")
- call s:NetrwDelete(fnameescape(tmpfile))
+ call s:NetrwDelete(tmpfile)
endif
call s:NetrwOptionRestore("w:")
@@@ -963,12 -917,12 +917,12 @@@ endfu
fun! netrw#NetWrite(...) range
" call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw)
- " option handling
+ " NetWrite: option handling {{{3
let mod= 0
call s:NetrwOptionSave("w:")
call s:NetrwSafeOptions()
- " Get Temporary Filename {{{3
+ " NetWrite: Get Temporary Filename {{{3
let tmpfile= s:GetTempfile("")
if tmpfile == ""
" call Dret("netrw#NetWrite : unable to get a tempfile!")
@@@ -1007,7 -961,7 +961,7 @@@
0file!
endif
- " While choice loop: {{{3
+ " NetWrite: while choice loop: {{{3
while ichoice <= a:0
" Process arguments: {{{4
@@@ -1065,9 -1019,13 +1019,13 @@@
" Determine method of write (ftp, rcp, etc) {{{4
call s:NetrwMethod(choice)
+ if !exists("b:netrw_method") || b:netrw_method < 0
+ " call Dfunc("netrw#NetWrite : unsupported method")
+ return
+ endif
" =============
- " Perform Protocol-Based Write {{{4
+ " NetWrite: Perform Protocol-Based Write {{{3
" ============================
if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
echo "(netrw) Processing your write request..."
@@@ -1075,7 -1033,7 +1033,7 @@@
endif
".........................................
- " rcp: NetWrite Method #1 {{{4
+ " NetWrite: (rcp) NetWrite Method #1 {{{3
if b:netrw_method == 1
" call Decho("write via rcp (method #1)")
if s:netrw_has_nt_rcp == 1
@@@ -1096,7 -1054,7 +1054,7 @@@
let b:netrw_lastfile = choice
".........................................
- " ftp + <.netrc>: NetWrite Method #2 {{{4
+ " NetWrite: (ftp + <.netrc>) NetWrite Method #2 {{{3
elseif b:netrw_method == 2
" call Decho("write via ftp+.netrc (method #2)")
let netrw_fname= b:netrw_fname
@@@ -1130,7 -1088,7 +1088,7 @@@
let b:netrw_lastfile = choice
".........................................
- " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{4
+ " NetWrite: (ftp + machine, id, passwd, filename) NetWrite Method #3 {{{3
elseif b:netrw_method == 3
" Construct execution string (four lines) which will be passed through filter
" call Decho("read via ftp+mipf (method #3)")
@@@ -1175,7 -1133,7 +1133,7 @@@
bd!
".........................................
- " scp: NetWrite Method #4 {{{4
+ " NetWrite: (scp) NetWrite Method #4 {{{3
elseif b:netrw_method == 4
" call Decho("write via scp (method #4)")
if exists("g:netrw_port") && g:netrw_port != ""
@@@ -1188,7 -1146,7 +1146,7 @@@
let b:netrw_lastfile = choice
".........................................
- " http: NetWrite Method #5 {{{4
+ " NetWrite: (http) NetWrite Method #5 {{{3
elseif b:netrw_method == 5
" call Decho("write via http (method #5)")
if !exists("g:netrw_quiet")
@@@ -1196,7 -1154,7 +1154,7 @@@
endif
".........................................
- " dav: NetWrite Method #6 (cadaver) {{{4
+ " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3
elseif b:netrw_method == 6
" call Decho("write via cadaver (method #6)")
@@@ -1222,7 -1180,7 +1180,7 @@@
let b:netrw_lastfile = choice
".........................................
- " rsync: NetWrite Method #7 {{{4
+ " NetWrite: (rsync) NetWrite Method #7 {{{3
elseif b:netrw_method == 7
" call Decho("write via rsync (method #7)")
" call Decho("executing: !".g:netrw_rsync_cmd." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1))
@@@ -1230,7 -1188,7 +1188,7 @@@
let b:netrw_lastfile = choice
".........................................
- " sftp: NetWrite Method #9 {{{4
+ " NetWrite: (sftp) NetWrite Method #9 {{{3
elseif b:netrw_method == 9
" call Decho("read via sftp (method #9)")
let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
@@@ -1250,13 -1208,13 +1208,13 @@@
let b:netrw_lastfile= choice
".........................................
- " Complain {{{4
+ " NetWrite: Complain {{{3
else
call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",17)
endif
endwhile
- " Cleanup: {{{3
+ " NetWrite: Cleanup: {{{3
" call Decho("cleanup")
if s:FileReadable(tmpfile)
" call Decho("tmpfile<".tmpfile."> readable, will now delete it")
@@@ -1422,18 -1380,34 +1380,34 @@@ endfu
" ------------------------------------------------------------------------
" s:NetrwMethod: determine method of transfer {{{2
- " method == 1: rcp
- " 2: ftp + <.netrc>
- " 3: ftp + machine, id, password, and [path]filename
- " 4: scp
- " 5: http (wget)
- " 6: cadaver
- " 7: rsync
- " 8: fetch
- " 9: sftp
- fun! s:NetrwMethod(choice) " globals: method machine id passwd fname
+ " Input:
+ " choice = url [protocol:]//[userid@]hostname[:port]/[path-to-file]
+ " Output:
+ " b:netrw_method= 1: rcp
+ " 2: ftp + <.netrc>
+ " 3: ftp + machine, id, password, and [path]filename
+ " 4: scp
+ " 5: http (wget)
+ " 6: dav
+ " 7: rsync
+ " 8: fetch
+ " 9: sftp
+ " g:netrw_machine= hostname
+ " b:netrw_fname = filename
+ " g:netrw_port = optional port number (for ftp)
+ " g:netrw_choice = copy of input url (choice)
+ fun! s:NetrwMethod(choice)
" call Dfunc("NetrwMethod(a:choice<".a:choice.">)")
+ " record current g:netrw_machine, if any
+ " curmachine used if protocol == ftp and no .netrc
+ if exists("g:netrw_machine")
+ let curmachine= g:netrw_machine
+ " call Decho("curmachine<".curmachine.">")
+ else
+ let curmachine= "N O T A HOST"
+ endif
+
" initialization
let b:netrw_method = 0
let g:netrw_machine = ""
@@@ -1449,7 -1423,7 +1423,7 @@@
" rcphf : [user@]host:filename Use rcp
" scpurm : scp://[user@]host[[#:]port]/filename Use scp
" httpurm : http://[user@]host/filename Use wget
- " davurm : dav[s]://host[:port]/path Use cadaver
+ " davurm : dav[s]://host[:port]/path Use cadaver/curl
" rsyncurm : rsync://host[:port]/path Use rsync
" fetchurm : fetch://[user@]host[:http]/filename Use fetch (defaults to ftp, override for http)
" sftpurm : sftp://[user@]host/filename Use scp
@@@ -1518,9 -1492,14 +1492,14 @@@
let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"")
let g:netrw_port = substitute(a:choice,ftpurm,'\4',"")
let b:netrw_fname = substitute(a:choice,ftpurm,'\5',"")
+ " call Decho("g:netrw_machine<".g:netrw_machine.">")
if userid != ""
let g:netrw_uid= userid
endif
+ if exists("s:netrw_passwd") && curmachine != g:netrw_machine
+ " if there's a change in hostname, require password re-entry
+ unlet s:netrw_passwd
+ endif
if exists("g:netrw_uid") && exists("s:netrw_passwd")
let b:netrw_method = 3
else
@@@ -1592,7 -1571,7 +1571,7 @@@
else
if !exists("g:netrw_quiet")
- call netrw#ErrorMsg(s:WARNING,"cannot determine method",45)
+ call netrw#ErrorMsg(s:WARNING,"cannot determine method (format: protocol://[user@]hostname[:port]/[path])",45)
endif
let b:netrw_method = -1
endif
@@@ -1626,10 -1605,24 +1605,24 @@@ endfu
if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
fun! NetReadFixup(method, line1, line2)
" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
+
+ " sanity checks -- attempt to convert inputs to integers
+ let method = a:method + 0
+ let line1 = a:line1 + 0
+ let line2 = a:line2 + 0
+ if type(method) != 0 || type(line1) != 0 || type(line2) != 0 || method < 0 || line1 <= 0 || line2 <= 0
+ " call Dret("NetReadFixup")
+ return
+ endif
+
if method == 3 " ftp (no <.netrc>)
let fourblanklines= line2 - 3
- silent fourblanklines.",".line2."g/^\s*/d"
+ if fourblanklines >= line1
+ exe "silent ".fourblanklines.",".line2."g/^\s*$/d"
+ call histdel("/",-1)
+ endif
endif
+
" call Dret("NetReadFixup")
endfun
endif
@@@ -1678,7 -1671,7 +1671,7 @@@ fun! s:BrowserMaps(islocal
nnoremap <buffer> <silent> <cr> :call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
nnoremap <buffer> <silent> a :call <SID>NetrwHide(1)<cr>
- nnoremap <buffer> <silent> mb :<c-u>call <SID>NetrwBookmarkDir(0,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> mb :<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> mc :<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
nnoremap <buffer> <silent> md :<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
nnoremap <buffer> <silent> me :<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
@@@ -1694,7 -1687,7 +1687,7 @@@
nnoremap <buffer> <silent> mu :<c-u>call <SID>NetrwUnMarkFile(1)<cr>
nnoremap <buffer> <silent> mx :<c-u>call <SID>NetrwMarkFileExe(1)<cr>
nnoremap <buffer> <silent> mz :<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
- nnoremap <buffer> <silent> gb :<c-u>call <SID>NetrwBookmarkDir(1,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> gh :<c-u>call <SID>NetrwHidden(1)<cr>
nnoremap <buffer> <silent> c :exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
nnoremap <buffer> <silent> C :let g:netrw_chgwin= winnr()<cr>
@@@ -1704,15 -1697,15 +1697,15 @@@
nnoremap <buffer> <silent> O :call <SID>NetrwObtain(1)<cr>
nnoremap <buffer> <silent> p :call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
nnoremap <buffer> <silent> P :call <SID>NetrwPrevWinOpen(1)<cr>
- nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr>
- nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
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>
nnoremap <buffer> <silent> s :call <SID>NetrwSortStyle(1)<cr>
nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr>
nnoremap <buffer> <silent> t :call <SID>NetrwSplit(4)<cr>
- nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,expand("%"))<cr>
- nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,expand("%"))<cr>
+ nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
+ nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
nnoremap <buffer> <silent> v :call <SID>NetrwSplit(5)<cr>
nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(1)<cr>
@@@ -1754,7 -1747,7 +1747,7 @@@
nnoremap <buffer> <silent> <c-l> :call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr>
nnoremap <buffer> <silent> a :call <SID>NetrwHide(0)<cr>
- nnoremap <buffer> <silent> mb :<c-u>call <SID>NetrwBookmarkDir(0,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> mb :<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> mc :<c-u>call <SID>NetrwMarkFileCopy(0)<cr>
nnoremap <buffer> <silent> md :<c-u>call <SID>NetrwMarkFileDiff(0)<cr>
nnoremap <buffer> <silent> me :<c-u>call <SID>NetrwMarkFileEdit(0)<cr>
@@@ -1770,7 -1763,7 +1763,7 @@@
nnoremap <buffer> <silent> mu :<c-u>call <SID>NetrwUnMarkFile(0)<cr>
nnoremap <buffer> <silent> mx :<c-u>call <SID>NetrwMarkFileExe(0)<cr>
nnoremap <buffer> <silent> mz :<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
- nnoremap <buffer> <silent> gb :<c-u>call <SID>NetrwBookmarkDir(1,b:netrw_cur)<cr>
+ nnoremap <buffer> <silent> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr>
nnoremap <buffer> <silent> gh :<c-u>call <SID>NetrwHidden(0)<cr>
nnoremap <buffer> <silent> C :let g:netrw_chgwin= winnr()<cr>
nnoremap <buffer> <silent> i :call <SID>NetrwListStyle(0)<cr>
@@@ -1778,15 -1771,15 +1771,15 @@@
nnoremap <buffer> <silent> O :call <SID>NetrwObtain(0)<cr>
nnoremap <buffer> <silent> p :call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
nnoremap <buffer> <silent> P :call <SID>NetrwPrevWinOpen(0)<cr>
- nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr>
- nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> qf :<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr>
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>
nnoremap <buffer> <silent> s :call <SID>NetrwSortStyle(0)<cr>
nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr>
nnoremap <buffer> <silent> t :call <SID>NetrwSplit(1)<cr>
- nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,b:netrw_curdir)<cr>
- nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
+ nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr>
nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(0)<cr>
@@@ -1836,7 -1829,7 +1829,7 @@@ fun! s:ExplorePatHls(pattern
endfun
" ---------------------------------------------------------------------
- " s:NetrwBookmarkDir: {{{2
+ " s:NetrwBookHistHandler: {{{2
" 0: (user: <mb>) bookmark current directory
" 1: (user: <gb>) change to the bookmarked directory
" 2: (user: <qb>) list bookmarks
@@@ -1844,32 -1837,27 +1837,27 @@@
" 4: (user: <u>) go up (previous) bookmark
" 5: (user: <U>) go down (next) bookmark
" 6: (user: <mB>) delete bookmark
- fun! s:NetrwBookmarkDir(chg,curdir)
- " 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)
+ fun! s:NetrwBookHistHandler(chg,curdir)
+ " call Dfunc("NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax)
if a:chg == 0
" bookmark the current directory
" call Decho("(user: <b>) bookmark the current directory")
- if v:count > 0
- " handle bookmark# specified via the count
- let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
- if !exists("g:NETRW_BOOKMARKMAX")
- let g:NETRW_BOOKMARKMAX= v:count
- elseif v:count > g:NETRW_BOOKMARKMAX
- let g:NETRW_BOOKMARKMAX= v:count
- endif
- else
- " handle no count specified
- let g:NETRW_BOOKMARKMAX = g:NETRW_BOOKMARKMAX + 1
- let g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} = a:curdir
+ if !exists("g:netrw_bookmarklist")
+ let g:netrw_bookmarklist= []
+ endif
+ if index(g:netrw_bookmarklist,a:curdir) == -1
+ " curdir not currently in g:netrw_bookmarklist, so include it
+ call add(g:netrw_bookmarklist,a:curdir)
+ call sort(g:netrw_bookmarklist)
endif
echo "bookmarked the current directory"
elseif a:chg == 1
" change to the bookmarked directory
- " call Decho("(user: <B>) change to the bookmarked directory")
- if exists("g:NETRW_BOOKMARKDIR_{v:count}")
- exe "e ".fnameescape(g:NETRW_BOOKMARKDIR_{v:count})
+ " call Decho("(user: <".v:count."mb>) change to the bookmarked directory")
+ if exists("g:netrw_bookmarklist[v:count-1]")
+ exe "e ".fnameescape(g:netrw_bookmarklist[v:count-1])
else
echomsg "Sorry, bookmark#".v:count." doesn't exist!"
endif
@@@ -1879,29 -1867,27 +1867,27 @@@
let didwork= 0
" list user's bookmarks
" call Decho("(user: <q>) list user's bookmarks")
- if exists("g:NETRW_BOOKMARKMAX")
- " call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
- let cnt= 0
- while cnt <= g:NETRW_BOOKMARKMAX
- if exists("g:NETRW_BOOKMARKDIR_{cnt}")
- " call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
- echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
- let didwork= 1
- endif
- let cnt= cnt + 1
- endwhile
+ if exists("g:netrw_bookmarklist")
+ " call Decho('list '.len(g:netrw_bookmarklist).' bookmarks')
+ let cnt= 1
+ for bmd in g:netrw_bookmarklist
+ " call Decho("Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1])
+ echo "Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1]
+ let didwork = 1
+ let cnt = cnt + 1
+ endfor
endif
" list directory history
- let cnt = g:NETRW_DIRHIST_CNT
+ let cnt = g:netrw_dirhist_cnt
let first = 1
let histcnt = 0
- while ( first || cnt != g:NETRW_DIRHIST_CNT )
- " call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT)
+ while ( first || cnt != g:netrw_dirhist_cnt )
+ " call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:netrw_dirhist_cnt)
let histcnt= histcnt + 1
- if exists("g:NETRW_DIRHIST_{cnt}")
- " call Decho("Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt})
- echo "Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}
+ if exists("g:netrw_dirhist_{cnt}")
+ " call Decho("Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt})
+ echo "Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt}
let didwork= 1
endif
let first = 0
@@@ -1917,22 -1903,21 +1903,21 @@@
elseif a:chg == 3
" saves most recently visited directories (when they differ)
" call Decho("(browsing) record curdir history")
- if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir
- let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
- " let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e')
- let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= a:curdir
- " call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+ if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir
+ let g:netrw_dirhist_cnt = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+ let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir
+ " call Decho("save dirhist#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
endif
elseif a:chg == 4
" u: change to the previous directory stored on the history list
" call Decho("(user: <u>) chg to prev dir from history")
- let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
- if g:NETRW_DIRHIST_CNT < 0
- let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
+ let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
+ if g:netrw_dirhist_cnt < 0
+ let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
endif
- if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
- " call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+ if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
+ " call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
setlocal ma noro
" call Decho("setlocal ma noro")
@@@ -1940,19 -1925,19 +1925,19 @@@
setlocal nomod
" call Decho("setlocal nomod")
endif
- " " call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
- exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
+ " " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
+ exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
else
- let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
+ let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
echo "Sorry, no predecessor directory exists yet"
endif
elseif a:chg == 5
" U: change to the subsequent directory stored on the history list
" call Decho("(user: <U>) chg to next dir from history")
- let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
- if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
- " call Decho("changedir U#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+ let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+ if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
+ " call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
setlocal ma noro
" call Decho("setlocal ma noro")
@@@ -1961,57 -1946,108 +1946,108 @@@
setlocal nomod
" call Decho("setlocal nomod")
endif
- " call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
- exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
+ " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
+ exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
else
- let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
- if g:NETRW_DIRHIST_CNT < 0
- let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
+ let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
+ if g:netrw_dirhist_cnt < 0
+ let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
endif
echo "Sorry, no successor directory exists yet"
endif
elseif a:chg == 6
- if v:count > 0 && v:count == g:NETRW_BOOKMARKMAX
- " delete the v:count'th bookmark
- " call Decho("delete bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}.">")
- unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
- let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
-
- elseif v:count > 0
- " call Decho("delete by shifting bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{v:count}.">")
- let cnt= v:count
- while cnt < g:NETRW_BOOKMARKMAX
- let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)}
- let cnt = cnt + 1
- endwhile
- unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
- let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
+ " delete the v:count'th bookmark
+ " call Decho("delete bookmark#".v:count."<".g:netrw_bookmarklist[v:count-1].">")
+ let savefile= s:NetrwHome()."/.netrwbook"
+ if filereadable(savefile)
+ call s:NetrwBookHistSave() " done here to merge bookmarks first
+ call delete(savefile)
+ endif
+ call remove(g:netrw_bookmarklist,v:count-1)
+ endif
+ call s:NetrwBookmarkMenu()
+ " call Dret("NetrwBookHistHandler")
+ endfun
- elseif exists("b:netrw_curdir")
- " look for current directory amongst the bookmarks and remove that bookmark
- " call Decho("search for bookmark<".b:netrw_curdir.">")
- let cnt= 1
- while cnt <= g:NETRW_BOOKMARKMAX
- " call Decho("checking: g:NETRW_BOOKMARKDIR_".cnt."<".g:NETRW_BOOKMARKDIR_{cnt}.">")
- if g:NETRW_BOOKMARKDIR_{cnt} == b:netrw_curdir
- if cnt < g:NETRW_BOOKMARKMAX
- " call Decho("delete bookmark#".cnt."<".b:netrw_curdir.">")
- while cnt < g:NETRW_BOOKMARMAX
- let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)}
- let cnt = cnt + 1
- endwhile
- endif
- unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
- let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
+ " ---------------------------------------------------------------------
+ " s:NetrwBookHistRead: this function reads bookmarks and history {{{2
+ " Sister function: s:NetrwBookHistSave()
+ fun! s:NetrwBookHistRead()
+ " call Dfunc("s:NetrwBookHistRead()")
+ if !exists("s:netrw_initbookhist")
+ let home = s:NetrwHome()
+ let savefile= home."/.netrwbook"
+ if filereadable(savefile)
+ " call Decho("sourcing .netrwbook")
+ exe "so ".savefile
+ endif
+ let savefile= home."/.netrwhist"
+ if filereadable(savefile)
+ " call Decho("sourcing .netrwhist")
+ exe "so ".savefile
+ endif
+ let s:netrw_initbookhist= 1
+ au VimLeave * call s:NetrwBookHistSave()
+ endif
+ " call Dret("s:NetrwBookHistRead")
+ endfun
+
+ " ---------------------------------------------------------------------
+ " s:NetrwBookHistSave: this function saves bookmarks and history {{{2
+ " Sister function: s:NetrwBookHistRead()
+ " I used to do this via viminfo but that appears to
+ " be unreliable for long-term storage
+ " COMBAK: does $HOME work under windows???
+ fun! s:NetrwBookHistSave()
+ " call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax)
+ let savefile= s:NetrwHome()."/.netrwhist"
+ 1split
+ call s:NetrwEnew()
+ setlocal cino= com= cpo-=aA fo=nroql2 tw=0 report=10000 noswf
+ setlocal nocin noai noci magic nospell nohid wig= noaw
+ setlocal ma noro write
+ if exists("&acd") | setlocal noacd | endif
+ silent %d
+
+ " save .netrwhist -- no attempt to merge
+ silent! file .netrwhist
+ call setline(1,"let g:netrw_dirhistmax =".g:netrw_dirhistmax)
+ call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt)
+ let lastline = line("$")
+ let cnt = 1
+ while cnt <= g:netrw_dirhist_cnt
+ call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'")
+ let cnt= cnt + 1
+ endwhile
+ exe "silent! w! ".savefile
+
+ silent %d
+ if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
+ " merge and write .netrwbook
+ let savefile= s:NetrwHome()."/.netrwbook"
+
+ if filereadable(savefile)
+ let booklist= deepcopy(g:netrw_bookmarklist)
+ exe "silent so ".savefile
+ for bdm in booklist
+ if index(g:netrw_bookmarklist,bdm) == -1
+ call add(g:netrw_bookmarklist,bdm)
endif
- let cnt= cnt + 1
- endwhile
+ endfor
+ call sort(g:netrw_bookmarklist)
+ exe "silent! w! ".savefile
endif
+ " construct and save .netrwbook
+ call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist))
+ exe "silent! w! ".savefile
endif
- call s:NetrwBookmarkMenu()
- " call Dret("NetrwBookmarkDir")
+ let bgone= bufnr("%")
+ q!
+ exe bgone."bwipe!"
+
+ " call Dret("s:NetrwBookHistSave")
endfun
" ---------------------------------------------------------------------
@@@ -2024,6 -2060,16 +2060,16 @@@ fun! s:NetrwBrowse(islocal,dirname
" call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">")
" call Decho("tab#".tabpagenr()." win#".winnr())
" call Dredir("ls!")
+ if !exists("s:netrw_initbookhist")
+ call s:NetrwBookHistRead()
+ endif
+
+ " simplify the dirname (especially for ".."s in dirnames)
+ if a:dirname !~ '^\a\+://'
+ let dirname= simplify(a:dirname)
+ else
+ let dirname= a:dirname
+ endif
if exists("s:netrw_skipbrowse")
unlet s:netrw_skipbrowse
@@@ -2043,7 -2089,6 +2089,6 @@@
endif
call s:NetrwOptionSave("w:")
- call s:NetrwSafeOptions()
" re-instate any marked files
if exists("s:netrwmarkfilelist_{bufnr('%')}")
@@@ -2053,27 -2098,29 +2098,29 @@@
if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
" call Decho("handle w:netrw_acdkeep:")
- " call Decho("keepjumps lcd ".fnameescape(a:dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
- exe 'keepjumps lcd '.fnameescape(a:dirname)
+ " call Decho("keepjumps lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
+ exe 'keepjumps lcd '.fnameescape(dirname)
+ call s:NetrwSafeOptions()
" call Decho("getcwd<".getcwd().">")
- elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"'
+ elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"'
" looks like a regular file, attempt transfer
- " call Decho("attempt transfer as regular file<".a:dirname.">")
+ " call Decho("attempt transfer as regular file<".dirname.">")
" remove any filetype indicator from end of dirname, except for the {{{3
" "this is a directory" indicator (/).
" There shouldn't be one of those here, anyway.
- let path= substitute(a:dirname,'[*=@|]\r\=$','','e')
+ let path= substitute(dirname,'[*=@|]\r\=$','','e')
" call Decho("new path<".path.">")
- call s:RemotePathAnalysis(a:dirname)
+ call s:RemotePathAnalysis(dirname)
" remote-read the requested file into current buffer {{{3
mark '
- call s:NetrwEnew(a:dirname)
+ call s:NetrwEnew(dirname)
+ call s:NetrwSafeOptions()
setlocal ma noro
" call Decho("setlocal ma noro")
- let b:netrw_curdir= a:dirname
+ let b:netrw_curdir= dirname
" call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
exe "silent keepalt doau BufReadPre ".fnameescape(s:fname)
@@@ -2098,7 -2145,7 +2145,7 @@@
" set up some variables {{{3
let b:netrw_browser_active = 1
- let dirname = a:dirname
+ let dirname = dirname
let s:last_sort_by = g:netrw_sort_by
" set up menu {{{3
@@@ -2183,11 -2230,11 +2230,11 @@@
else
" call Decho("remote only:")
- " analyze a:dirname and g:netrw_list_cmd {{{4
- " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> a:dirname<".a:dirname.">")
- if a:dirname =~ "^NetrwTreeListing\>"
+ " analyze dirname and g:netrw_list_cmd {{{4
+ " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> dirname<".dirname.">")
+ if dirname =~ "^NetrwTreeListing\>"
let dirname= b:netrw_curdir
- " call Decho("(dirname was ".a:dirname.") dirname<".dirname.">")
+ " call Decho("(dirname was ".dirname.") dirname<".dirname.">")
elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
let dirname= substitute(b:netrw_curdir,'\\','/','g')
if dirname !~ '/$'
@@@ -2196,7 -2243,7 +2243,7 @@@
let b:netrw_curdir = dirname
" call Decho("(liststyle is TREELIST) dirname<".dirname.">")
else
- let dirname = substitute(a:dirname,'\\','/','g')
+ let dirname = substitute(dirname,'\\','/','g')
" call Decho("(normal) dirname<".dirname.">")
endif
@@@ -2221,6 -2268,14 +2268,14 @@@
call s:BrowserMaps(a:islocal)
call s:PerformListing(a:islocal)
+ " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd
+ " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed).
+ " However, s:NetrwBrowse() causes the ShellCmdPost event itself to fire once; setting
+ " the variable below avoids that second refresh of the screen. The s:LocalBrowseShellCmdRefresh()
+ " function gets called due to that autocmd; it notices that the following variable is set
+ " and skips the refresh and sets s:locbrowseshellcmd to zero. Oct 13, 2008
+ let s:locbrowseshellcmd= 1
+
" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwBrowse : did PerformListing")
return
@@@ -2280,7 -2335,7 +2335,7 @@@ fun! s:NetrwGetBuffer(islocal,dirname
set ei=all
exe "b ".w:netrw_treebufnr
let &ei= eikeep
- " call Dret("s:NetrwGetBuffer : bufnum#".bufnum."<NetrwTreeListing>")
+ " call Dret("s:NetrwGetBuffer : bufnum#".w:netrw_treebufnr."<NetrwTreeListing>")
return
endif
let bufnum= -1
@@@ -2446,7 -2501,7 +2501,7 @@@ endfu
" ---------------------------------------------------------------------
" s:NetrwGetWord: it gets the directory/file named under the cursor {{{2
fun! s:NetrwGetWord()
-" call Dfunc("s:NetrwGetWord() line#".line(".")." liststyle=".g:netrw_liststyle." virtcol=".virtcol("."))
+" call Dfunc("s:NetrwGetWord() line#".line(".")." liststyle=".g:netrw_liststyle." virtcol=".w:netrw_col)
call s:UseBufWinVars()
" insure that w:netrw_liststyle is set up
@@@ -2510,12 -2565,13 +2565,13 @@@
if !exists("b:netrw_cpf")
let b:netrw_cpf= 0
exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
+ call histdel("/",-1)
" call Decho("computed cpf=".b:netrw_cpf)
endif
" call Decho("buf#".bufnr("%")."<".bufname("%").">")
- let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf
-" call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart." bannercnt=".w:netrw_bannercnt)
+ let filestart = (w:netrw_col/b:netrw_cpf)*b:netrw_cpf
+" call Decho("filestart= ([virtcol=".w:netrw_col."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart." bannercnt=".w:netrw_bannercnt)
" call Decho("1: dirname<".dirname.">")
if filestart == 0
norm! 0ma
@@@ -2621,6 -2677,22 +2677,22 @@@ fun! s:NetrwListStyle(islocal
let svpos= netrw#NetrwSavePosn()
call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
call netrw#NetrwRestorePosn(svpos)
+ if w:netrw_liststyle != s:WIDELIST
+ if g:netrw_cursorline == 2
+ setlocal cursorline
+ let &cursorcolumn= s:netrw_usercuc
+ elseif g:netrw_cursorline
+ setlocal cursorline
+ " call Decho("setlocal cursorline")
+ endif
+ else
+ if g:netrw_cursorline == 2
+ setlocal cursorline cursorcolumn
+ " call Decho("setlocal cursorline cursorcolumn")
+ elseif g:netrw_cursorline
+ let &cursorline= s:netrw_usercul
+ endif
+ endif
" keep cursor on the filename
silent keepjumps $
@@@ -2642,37 -2714,47 +2714,47 @@@ fun! s:NetrwBookmarkMenu(
if !exists("s:netrw_menucnt")
return
endif
- " call Dfunc("NetrwBookmarkMenu() bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." menucnt=".s:netrw_menucnt)
+ " call Dfunc("NetrwBookmarkMenu() histcnt=".g:netrw_dirhist_cnt." menucnt=".s:netrw_menucnt)
" the following test assures that gvim is running, has menus available, and has menus enabled.
if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
if exists("g:NetrwTopLvlMenu")
" call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)")
exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
+ exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete'
+ endif
+ if !exists("s:netrw_initbookhist")
+ call s:NetrwBookHistRead()
endif
" show bookmarked places
- let cnt = 1
- while cnt <= g:NETRW_BOOKMARKMAX
- if exists("g:NETRW_BOOKMARKDIR_{cnt}")
- let bmdir= escape(g:NETRW_BOOKMARKDIR_{cnt},'. ')
- " call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmdir.' :e '.bmdir)
- exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmdir.' :e '.bmdir."\<cr>"
- endif
- let cnt= cnt + 1
- endwhile
+ if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
+ let cnt= 1
+ for bmd in g:netrw_bookmarklist
+ " call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.' :e '.bmd)
+ let bmd= escape(bmd,'. ')
+
+ " show bookmarks for goto menu
+ exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\<cr>"
+
+ " show bookmarks for deletion menu
+ exe 'silent! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB"
+ let cnt= cnt + 1
+ endfor
+
+ endif
" show directory browsing history
- let cnt = g:NETRW_DIRHIST_CNT
+ let cnt = g:netrw_dirhist_cnt
let first = 1
let histcnt = 0
- while ( first || cnt != g:NETRW_DIRHIST_CNT )
+ while ( first || cnt != g:netrw_dirhist_cnt )
let histcnt = histcnt + 1
- let priority = g:NETRW_DIRHIST_CNT + histcnt
- if exists("g:NETRW_DIRHIST_{cnt}")
- let bmdir= escape(g:NETRW_DIRHIST_{cnt},'/&? ')
- " call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir)
- exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir."\<cr>"
+ let priority = g:netrw_dirhist_cnt + histcnt
+ if exists("g:netrw_dirhist_{cnt}")
+ let histdir= escape(g:netrw_dirhist_{cnt},'./&? ')
+ " call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir)
+ exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>"
endif
let first = 0
let cnt = ( cnt - 1 ) % g:netrw_dirhistmax
@@@ -2680,6 -2762,7 +2762,7 @@@
let cnt= cnt + g:netrw_dirhistmax
endif
endwhile
+
endif
" call Dret("NetrwBookmarkMenu")
endfun
@@@ -2737,6 -2820,7 +2820,7 @@@ fun! s:NetrwBrowseChgDir(islocal,newdir
else
let dirname= s:NetrwTreeDir()."/".newdir
endif
+ " call Decho("dirname<".dirname.">")
" call Decho("tree listing")
elseif newdir =~ '^\(/\|\a:\)'
let dirname= newdir
@@@ -2782,6 -2866,9 +2866,9 @@@
endif
let dolockout= 1
endif
+ if exists("g:Netrw_funcref")
+ call g:Netrw_funcref()
+ endif
elseif newdir =~ '^/'
" ---------------------------------
@@@ -2887,15 -2974,16 +2974,16 @@@
" close tree listing for selected subdirectory
" call Decho("closing selected subdirectory<".dirname.">")
call remove(w:netrw_treedict,treedir)
- " call Decho("removed entry<".dirname."> from treedict")
+ " call Decho("removed entry<".treedir."> from treedict")
" call Decho("yielding treedict<".string(w:netrw_treedict).">")
- let dirname= w:netrw_treetop
+ let dirname = w:netrw_treetop
else
" go down one directory
let dirname= substitute(treedir,'/*$','/','')
" call Decho("go down one dir: treedir<".treedir.">")
endif
call s:SetRexDir(a:islocal,dirname)
+ let s:treeforceredraw = 1
else
" go down one directory
@@@ -2927,6 -3015,7 +3015,7 @@@ fun! netrw#NetrwBrowseX(fname,remote
if has("win32") || has("win95") || has("win64") || has("win16")
let exten= substitute(exten,'^.*$','\L&\E','')
endif
+ " call Decho("exten<".exten.">")
" seems kde systems often have gnome-open due to dependencies, even though
" gnome-open's subsidiary display tools are largely absent. Kde systems
@@@ -2945,16 -3034,25 +3034,25 @@@
if a:remote == 1
" create a local copy
- let fname= fnamemodify(tempname(),":r").".".exten
- " call Decho("a:remote=".a:remote.": create a local copy of <".fname."> as <".fname.">")
- exe "silent keepjumps bot 1new ".fnameescape(fname)
+ " call Decho("a:remote=".a:remote.": create a local copy of <".a:fname.">")
setlocal bh=delete
- " call Decho("read <".fnameescape(fname).">, now writing: exe w! ".fnameescape(fname))
- exe "silent! w! ".fnameescape(fname)
- q
+ call netrw#NetRead(3,a:fname)
+ " attempt to rename tempfile
+ let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','')
+ let newname= substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','')
+ " call Decho("basename<".basename.">")
+ " call Decho("newname <".newname.">")
+ if rename(s:netrw_tmpfile,newname) == 0
+ " renaming succeeded
+ let fname= newname
+ else
+ " renaming failed
+ let fname= s:netrw_tmpfile
+ endif
else
let fname= a:fname
endif
+ " call Decho("fname<".fname.">")
" call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
" set up redirection
@@@ -3061,10 -3159,21 +3159,21 @@@ endfu
" ---------------------------------------------------------------------
" netrw#Explore: launch the local browser in the directory of the current file {{{2
- " dosplit==0: the window will be split iff the current file has
- " been modified
- " dosplit==1: the window will be split before running the local
- " browser
+ " indx: == -1: Nexplore
+ " == -2: Pexplore
+ " == +: this is overloaded:
+ " * If Nexplore/Pexplore is in use, then this refers to the
+ " indx'th item in the w:netrw_explore_list[] of items which
+ " matched the */pattern **/pattern *//pattern **//pattern
+ " * If Hexplore or Vexplore, then this will override
+ " g:netrw_winsize to specify the qty of rows or columns the
+ " newly split window should have.
+ " dosplit==0: the window will be split iff the current file has been modified
+ " dosplit==1: the window will be split before running the local browser
+ " style == 0: Explore style == 1: Explore!
+ " == 2: Hexplore style == 3: Hexplore!
+ " == 4: Vexplore style == 5: Vexplore!
+ " == 6: Texplore
fun! netrw#Explore(indx,dosplit,style,...)
" call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0)
if !exists("b:netrw_curdir")
@@@ -3083,30 -3192,34 +3192,34 @@@
if a:dosplit || &modified || a:style == 6
" call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style)
call s:SaveWinVars()
+ let winsize= g:netrw_winsize
+ if a:indx > 0
+ let winsize= a:indx
+ endif
if a:style == 0 " Explore, Sexplore
" call Decho("style=0: Explore or Sexplore")
- exe g:netrw_winsize."wincmd s"
+ exe winsize."wincmd s"
elseif a:style == 1 "Explore!, Sexplore!
" call Decho("style=1: Explore! or Sexplore!")
- exe g:netrw_winsize."wincmd v"
+ exe winsize."wincmd v"
elseif a:style == 2 " Hexplore
" call Decho("style=2: Hexplore")
- exe "bel ".g:netrw_winsize."wincmd s"
+ exe "bel ".winsize."wincmd s"
elseif a:style == 3 " Hexplore!
" call Decho("style=3: Hexplore!")
- exe "abo ".g:netrw_winsize."wincmd s"
+ exe "abo ".winsize."wincmd s"
elseif a:style == 4 " Vexplore
" call Decho("style=4: Vexplore")
- exe "lefta ".g:netrw_winsize."wincmd v"
+ exe "lefta ".winsize."wincmd v"
elseif a:style == 5 " Vexplore!
" call Decho("style=5: Vexplore!")
- exe "rightb ".g:netrw_winsize."wincmd v"
+ exe "rightb ".winsize."wincmd v"
elseif a:style == 6 " Texplore
call s:SaveBufVars()
@@@ -3137,19 -3250,7 +3250,7 @@@
endif
else
" clear explore
- " call Decho("clearing explore variables")
- 2match none
- if exists("s:explore_match") |unlet s:explore_match |endif
- if exists("s:explore_indx") |unlet s:explore_indx |endif
- if exists("s:dirstarstar") |unlet s:dirstarstar |endif
- if exists("s:dirstarstar") |unlet s:dirstarstar |endif
- if exists("w:netrw_explore_indx") |unlet w:netrw_explore_indx |endif
- if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif
- if exists("w:netrw_explore_list") |unlet w:netrw_explore_list |endif
- if exists("w:netrw_explore_bufnr") |unlet w:netrw_explore_bufnr |endif
- " redraw!
- echo " "
- echo " "
+ call s:NetrwClearExplore()
" call Dret("netrw#Explore : cleared list")
return
endif
@@@ -3237,9 -3338,10 +3338,10 @@@
if !exists("w:netrw_explore_indx")
let w:netrw_explore_indx= 0
endif
+
let indx = a:indx
" call Decho("starpat=".starpat.": set indx= [a:indx=".indx."]")
- "
+
if indx == -1
" Nexplore
" call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")")
@@@ -3290,6 -3392,7 +3392,7 @@@
" Explore -- initialize
" build list of files to Explore with Nexplore/Pexplore
" call Decho("starpat=".starpat.": case Explore: initialize (indx=".indx.")")
+ call s:NetrwClearExplore()
let w:netrw_explore_indx= 0
if !exists("b:netrw_curdir")
let b:netrw_curdir= getcwd()
@@@ -3300,8 -3403,9 +3403,9 @@@
if starpat == 1
" starpat=1: Explore *//pattern (current directory only search for files containing pattern)
" call Decho("starpat=".starpat.": build *//pattern list")
+ " call Decho("pattern<".pattern.">")
exe "vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
- let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)')
+ let w:netrw_explore_list = s:NetrwExploreListUniq(map(getqflist(),'bufname(v:val.bufnr)'))
if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
elseif starpat == 2
@@@ -3320,19 -3424,22 +3424,22 @@@
endtry
let s:netrw_curdir = b:netrw_curdir
let w:netrw_explore_list = getqflist()
- let w:netrw_explore_list = map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)')
+ let w:netrw_explore_list = s:NetrwExploreListUniq(map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)'))
elseif starpat == 3
" starpat=3: Explore */filepat (search in current directory for filenames matching filepat)
" call Decho("starpat=".starpat.": build */filepat list")
- let dirname = substitute(dirname,'^\*/','','')
- let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
- if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
+ let filepat= substitute(dirname,'^\*/','','')
+ let filepat= substitute(filepat,'^[%#<]','\\&','')
+ " call Decho("b:netrw_curdir<".b:netrw_curdir.">")
+ " call Decho("filepat<".filepat.">")
+ let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".filepat),'\n'))
+ if &hls | let keepregslash= s:ExplorePatHls(filepat) | endif
elseif starpat == 4
" starpat=4: Explore **/filepat (recursive descent search for filenames matching filepat)
" call Decho("starpat=".starpat.": build **/filepat list")
- let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
+ let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".dirname),'\n'))
if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
endif " switch on starpat to build w:netrw_explore_list
@@@ -3352,7 -3459,7 +3459,7 @@@
" NetrwStatusLine support - for exploring support
let w:netrw_explore_indx= indx
- " call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
+ " call Decho("w:netrw_explore_list<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
" wrap the indx around, but issue a note
if indx >= w:netrw_explore_listlen || indx < 0
@@@ -3360,7 -3467,6 +3467,6 @@@
let indx = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0
let w:netrw_explore_indx= indx
call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43)
- sleep 1
endif
exe "let dirfile= w:netrw_explore_list[".indx."]"
@@@ -3411,12 -3517,16 +3517,16 @@@
endif
" visual display of **/ **// */ Exploration files
+ " call Decho("w:netrw_explore_indx=".w:netrw_explore_indx)
+ " call Decho("b:netrw_curdir<".b:netrw_curdir.">")
if exists("w:netrw_explore_indx") && exists("b:netrw_curdir")
+ " call Decho("s:explore_prvdir<".(exists("s:explore_prvdir")? s:explore_prvdir : "-doesn't exist-"))
if !exists("s:explore_prvdir") || s:explore_prvdir != b:netrw_curdir
" only update match list if current directory isn't the same as before
+ " call Decho("only update match list if current directory not the same as before")
let s:explore_prvdir = b:netrw_curdir
let s:explore_match = ""
- let dirlen = strlen(b:netrw_curdir)
+ let dirlen = s:Strlen(b:netrw_curdir)
if b:netrw_curdir !~ '/$'
let dirlen= dirlen + 1
endif
@@@ -3425,15 -3535,15 +3535,15 @@@
" call Decho("fname<".fname.">")
if fname =~ '^'.b:netrw_curdir
if s:explore_match == ""
- let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+ let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>'
else
- let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+ let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>'
endif
elseif fname !~ '^/' && fname != prvfname
if s:explore_match == ""
- let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+ let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc).'\>'
else
- let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+ let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc).'\>'
endif
endif
let prvfname= fname
@@@ -3457,6 -3567,44 +3567,44 @@@
endfun
" ---------------------------------------------------------------------
+ " s:NetrwClearExplore: clear explore variables (if any) {{{2
+ fun! s:NetrwClearExplore()
+ " call Dfunc("s:NetrwClearExplore()")
+ 2match none
+ if exists("s:explore_match") |unlet s:explore_match |endif
+ if exists("s:explore_indx") |unlet s:explore_indx |endif
+ if exists("s:netrw_explore_prvdir") |unlet s:netrw_explore_prvdir |endif
+ if exists("s:dirstarstar") |unlet s:dirstarstar |endif
+ if exists("s:explore_prvdir") |unlet s:explore_prvdir |endif
+ if exists("w:netrw_explore_indx") |unlet w:netrw_explore_indx |endif
+ if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif
+ if exists("w:netrw_explore_list") |unlet w:netrw_explore_list |endif
+ if exists("w:netrw_explore_bufnr") |unlet w:netrw_explore_bufnr |endif
+ " redraw!
+ echo " "
+ echo " "
+ " call Dret("s:NetrwClearExplore")
+ endfun
+
+ " ---------------------------------------------------------------------
+ " s:NetrwExploreListUniq: {{{2
+ fun! s:NetrwExploreListUniq(explist)
+ " call Dfunc("s:NetrwExploreListUniq(explist)")
+
+ " this assumes that the list is already sorted
+ let newexplist= []
+ for member in a:explist
+ if !exists("uniqmember") || member != uniqmember
+ let uniqmember = member
+ let newexplist = newexplist + [ member ]
+ endif
+ endfor
+
+ " call Dret("s:NetrwExploreListUniq")
+ return newexplist
+ endfun
+
+ " ---------------------------------------------------------------------
" s:NetrwHide: this function is invoked by the "a" map for browsing {{{2
" and switches the hiding mode. The actual hiding is done by
" s:NetrwListHide().
@@@ -3490,9 -3638,7 +3638,7 @@@ fun! s:NetrwHide(islocal
" call Decho("hide: g:netrw_list_hide<".g:netrw_list_hide.">")
endif
endfor
- unlet s:netrwmarkfilelist_{bufnr("%")}
- unlet s:netrwmarkfilemtch_{bufnr("%")}
- 2match none
+ call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
let g:netrw_hide= 1
else
@@@ -3522,7 -3668,7 +3668,7 @@@ fun! s:NetrwHidden(islocal
if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+'
" remove pattern from hiding list
let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','')
- elseif strlen(g:netrw_list_hide) >= 1
+ elseif s:Strlen(g:netrw_list_hide) >= 1
let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+'
else
let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
@@@ -3535,6 -3681,48 +3681,48 @@@
endfun
" ---------------------------------------------------------------------
+ " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2
+ fun! s:NetrwHome()
+ " call Dfunc("s:NetrwHome()")
+ if exists("g:netrw_home")
+ let home= g:netrw_home
+ else
+ " go to vim plugin home
+ for home in split(&rtp,',') + ['']
+ if isdirectory(home) && filewritable(home) | break | endif
+ let basehome= substitute(home,'[/\\]\.vim$','','')
+ if isdirectory(basehome) && filewritable(basehome)
+ let home= basehome."/.vim"
+ break
+ endif
+ endfor
+ if home == ""
+ " just pick the first directory
+ " call Decho("just pick first directory in &rtp")
+ let home= substitute(&rtp,',.*$','','')
+ endif
+ if (has("win32") || has("win95") || has("win64") || has("win16"))
+ let home= substitute(home,'/','\\','g')
+ endif
+ endif
+ " insure that the home directory exists
+ " call Decho("picked home<".home.">")
+ if !isdirectory(home)
+ if exists("g:netrw_mkdir")
+ " call Decho("home<".home."> isn't a directory -- making it now with g:netrw_mkdir<".g:netrw_mkdir.">")
+ " call Decho("system(".g:netrw_mkdir." ".s:Escape(home).")")
+ call system(g:netrw_mkdir." ".s:Escape(home))
+ else
+ " call Decho("home<".home."> isn't a directory -- making it now with mkdir()")
+ call mkdir(home)
+ endif
+ endif
+ let g:netrw_home= home
+ " call Dret("s:NetrwHome <".home.">")
+ return home
+ endfun
+
+ " ---------------------------------------------------------------------
" s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
fun! s:NetrwLeftmouse(islocal)
" call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
@@@ -3767,7 -3955,7 +3955,7 @@@ fun! s:NetrwMarkFile(islocal,fname
call filter(s:netrwmarkfilelist_{curbufnr},'v:val != a:fname')
if s:netrwmarkfilelist_{curbufnr} == []
" local markfilelist is empty; remove it entirely
- " call Decho("markfile list now empty, unlet s:netrwmarkfilelist_".curbufnr." and ...mtch_".curbufnr)
+ " call Decho("markfile list now empty")
call s:NetrwUnmarkList(curbufnr,curdir)
else
" rebuild match list to display markings correctly
@@@ -3982,7 -4170,9 +4170,9 @@@ fun! s:NetrwMarkFileCopy(islocal
if a:islocal
call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
endif
- call s:LocalBrowseShellCmdRefresh()
+ if g:netrw_fastbrowse <= 1
+ call s:LocalBrowseShellCmdRefresh()
+ endif
" call Dret("s:NetrwMarkFileCopy 1")
return 1
@@@ -4290,7 -4480,9 +4480,9 @@@ fun! s:NetrwMarkFileMove(islocal
if a:islocal
call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
endif
- call s:LocalBrowseShellCmdRefresh()
+ if g:netrw_fastbrowse <= 1
+ call s:LocalBrowseShellCmdRefresh()
+ endif
" call Dret("s:NetrwMarkFileMove")
endfun
@@@ -4371,7 -4563,8 +4563,8 @@@ fun! s:NetrwMarkFileRegexp(islocal
set ei=all ma
" call Decho("set ei=all ma")
1split
- enew
+ call s:NetrwEnew()
+ call s:NetrwSafeOptions()
silent norm! "ap
2
let bannercnt= search('^" =====','W')
@@@ -4379,16 -4572,21 +4572,21 @@@
set bt=nofile
if g:netrw_liststyle == s:LONGLIST
silent %s/\s\{2,}\S.*$//e
+ call histdel("/",-1)
elseif g:netrw_liststyle == s:WIDELIST
silent %s/\s\{2,}/\r/ge
+ call histdel("/",-1)
elseif g:netrw_liststyle == s:TREELIST
silent %s/^| //e
silent! g/^ .*$/d
+ call histdel("/",-1)
+ call histdel("/",-1)
endif
" convert regexp into the more usual glob-style format
let regexp= substitute(regexp,'\*','.*','g')
" call Decho("regexp<".regexp.">")
exe "silent! v/".escape(regexp,'/')."/d"
+ call histdel("/",-1)
let filelist= getline(1,line("$"))
q!
for filename in filelist
@@@ -4459,6 -4657,7 +4657,7 @@@ fun! s:NetrwMarkFileTag(islocal
let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','')
" call Decho("curdir<".curdir."> path<".path.">")
exe '%s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e'
+ call histdel("/",-1)
wq!
endif
2match none
@@@ -4518,7 -4717,7 +4717,7 @@@ fun! s:NetrwMarkFileTgt(islocal
endif
let s:netrwmftgt_islocal= a:islocal
- if g:netrw_fastbrowse > 0
+ if g:netrw_fastbrowse <= 1
call s:LocalBrowseShellCmdRefresh()
endif
call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
@@@ -4653,20 -4852,17 +4852,17 @@@ fun! s:NetrwMenu(domenu
" call Decho("initialize menu")
let s:netrw_menu_enabled= 1
exe 'silent! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help<tab><F1> <F1>'
- call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4
exe 'silent! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :'
exe 'silent! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>- -'
exe 'silent! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x'
exe 'silent! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb mb'
exe 'silent! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u u'
exe 'silent! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U U'
exe 'silent! menu '.g:NetrwMenuPriority.'.8.6 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb qb'
- exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab>'."<ctrl-h> \<Plug>NetrwHideEdit"
+ exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'." \<c-h>'"
exe 'silent! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S S'
exe 'silent! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh gh"
- exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<Plug>NetrwRefresh"
+ exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<c-l>"
exe 'silent! menu '.g:NetrwMenuPriority.'.9.5 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>"
exe 'silent! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D'
exe 'silent! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr> '."\<cr>"
@@@ -4704,6 -4900,7 +4900,7 @@@
exe 'silent! menu '.g:NetrwMenuPriority.'.16.4 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s s'
exe 'silent! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R R'
exe 'silent! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c c'
+ call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4, 8.2.x
let s:netrw_menucnt= 28
elseif !a:domenu
@@@ -4731,8 -4928,8 +4928,8 @@@ fun! s:NetrwObtain(islocal
" call Dfunc("NetrwObtain(islocal=".a:islocal.")")
if exists("s:netrwmarkfilelist_{bufnr('%')}")
- let islocal= s:netrwmarkfilelist_{bufnr("%")}[1] !~ '^\a\+://'
- call netrw#NetrwObtain(islocal,s:netrwmarkfilelist_{bufnr("%")})
+ let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\+://'
+ call netrw#NetrwObtain(islocal,s:netrwmarkfilelist_{bufnr('%')})
call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir)
else
call netrw#NetrwObtain(a:islocal,expand("<cWORD>"))
@@@ -4769,7 -4966,7 +4966,7 @@@ fun! netrw#NetrwObtain(islocal,fname,..
endif
" call Decho("tgtdir<".tgtdir.">")
- if b:netrw_islocal
+ if exists("b:netrw_islocal") && b:netrw_islocal
" obtain a file from local b:netrw_curdir to (local) tgtdir
" call Decho("obtain a file from local ".b:netrw_curdir." to ".tgtdir)
if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir
@@@ -4921,6 -5118,14 +5118,14 @@@
call netrw#ErrorMsg(s:ERROR,getline(1),5)
endif
endif
+ elseif !exists("b:netrw_method") || b:netrw_method < 0
+ " call Dfunc("netrw#NetrwObtain : unsupported method")
+ return
+ endif
+
+ " restore status line
+ if type(a:fname) == 1 && exists("s:netrw_users_stl")
+ call s:SetupNetrwStatusLine(s:netrw_users_stl)
endif
endif
@@@ -5138,6 -5343,7 +5343,7 @@@ fun! s:NetrwUpload(fname,tgt,...
endif
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
silent g/Local directory now/d
+ call histdel("/",-1)
if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
call netrw#ErrorMsg(s:ERROR,getline(1),14)
else
@@@ -5196,6 -5402,7 +5402,7 @@@
exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
silent g/Local directory now/d
+ call histdel("/",-1)
if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
let debugkeep= &debug
setlocal debug=msg
@@@ -5205,6 -5412,9 +5412,9 @@@
else
bw!|q
endif
+ elseif !exists("b:netrw_method") || b:netrw_method < 0
+ " call Dfunc("netrw#NetrwUpload : unsupported method")
+ return
endif
else
call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63)
@@@ -5325,13 -5535,12 +5535,12 @@@ fun! s:NetrwSetSort(
let seq = seqlist
let seqlist = ""
endif
- let sepchr= "\<Char-0xff>"
if priority < 10
- let spriority= "00".priority.sepchr
+ let spriority= "00".priority.g:netrw_sepchr
elseif priority < 100
- let spriority= "0".priority.sepchr
+ let spriority= "0".priority.g:netrw_sepchr
else
- let spriority= priority.sepchr
+ let spriority= priority.g:netrw_sepchr
endif
" call Decho("priority=".priority." spriority<".spriority."> seq<".seq."> seqlist<".seqlist.">")
@@@ -5345,14 -5554,17 +5554,17 @@@
let starpriority= spriority
else
exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/'
+ call histdel("/",-1)
" sometimes multiple sorting patterns will match the same file or directory.
" The following substitute is intended to remove the excess matches.
- exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.sepchr.'\d\{3}\//s/^\d\{3}'.sepchr.'\(\d\{3}\/\).\@=/\1/e'
+ exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e'
+ call histdel("/",-1)
endif
let priority = priority + 1
endwhile
if exists("starpriority")
- exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.sepchr.'/s/^/'.starpriority.'/'
+ exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/'
+ call histdel("/",-1)
endif
" Following line associated with priority -- items that satisfy a priority
@@@ -5361,7 -5573,8 +5573,8 @@@
" priority pattern needs to be retained. So, at this point, these excess
" priority prefixes need to be removed, but not directories that happen to
" be just digits themselves.
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.sepchr.'\)\%(\d\{3}'.sepchr.'\)\+\ze./\1/e'
+ exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e'
+ call histdel("/",-1)
" call Dret("SetSort")
endfun
@@@ -5405,12 -5618,12 +5618,12 @@@ fun! s:NetrwSplit(mode
elseif a:mode == 1
" remote and t
- let cursorword = s:NetrwGetWord()
+ let newdir = s:NetrwBrowseChgDir(0,s:NetrwGetWord())
" call Decho("tabnew")
tabnew
let s:didsplit= 1
call s:RestoreWinVars()
- call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,cursorword))
+ call s:NetrwBrowse(0,newdir)
unlet s:didsplit
elseif a:mode == 2
@@@ -5433,8 -5646,8 +5646,8 @@@
elseif a:mode == 4
" local and t
- let netrw_curdir= b:netrw_curdir
let cursorword = s:NetrwGetWord()
+ let netrw_curdir= s:NetrwTreeDir()
" call Decho("tabnew")
tabnew
let b:netrw_curdir= netrw_curdir
@@@ -5505,12 -5718,13 +5718,13 @@@ fun! s:NetrwTreeDir(
if w:netrw_liststyle == s:TREELIST
" call Decho("w:netrrw_liststyle is TREELIST:")
" call Decho("line#".line(".")." getline(.)<".getline('.')."> treecurpos<".string(s:treecurpos).">")
+
+ " extract tree directory if on a line specifying a subdirectory (ie. ends with "/")
if getline('.') =~ '/$'
let treedir= substitute(getline('.'),'^\%(| \)*\([^|].\{-}\)$','\1','e')
else
let treedir= ""
endif
-
" call Decho("treedir<".treedir.">")
" detect user attempting to close treeroot
@@@ -5525,11 -5739,11 +5739,11 @@@
" elide all non-depth information
let depth = substitute(getline('.'),'^\(\%(| \)*\)[^|].\{-}$','\1','e')
- " call Decho("depth<".depth."> 1st subst")
+ " call Decho("depth<".depth."> 1st subst (non-depth info removed)")
" elide first depth
let depth = substitute(depth,'^| ','','')
- " call Decho("depth<".depth."> 2nd subst")
+ " call Decho("depth<".depth."> 2nd subst (first depth removed)")
" construct treedir by searching backwards at correct depth
" call Decho("constructing treedir<".treedir."> depth<".depth.">")
@@@ -5548,11 -5762,6 +5762,6 @@@
endif
let treedir= substitute(treedir,'//$','/','')
- " " now force a refresh
- "" call DECHO("clear buffer<".expand("%")."> with :%d")
- " setlocal ma noro
- " keepjumps %d
-
" call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
return treedir
endfun
@@@ -5663,30 -5872,32 +5872,32 @@@ fun! s:NetrwWideListing(
if w:netrw_liststyle == s:WIDELIST
" call Dfunc("NetrwWideListing() w:netrw_liststyle=".w:netrw_liststyle.' fo='.&fo.' l:fo='.&l:fo)
" look for longest filename (cpf=characters per filename)
- " cpf: characters per file
- " fpl: files per line
- " fpc: files per column
+ " cpf: characters per filename
+ " fpl: filenames per line
+ " fpc: filenames per column
setlocal ma noro
" call Decho("setlocal ma noro")
let b:netrw_cpf= 0
if line("$") >= w:netrw_bannercnt
exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
+ call histdel("/",-1)
else
" call Dret("NetrwWideListing")
return
endif
- " call Decho("max file strlen+1=".b:netrw_cpf)
- let b:netrw_cpf= b:netrw_cpf + 1
+ let b:netrw_cpf= b:netrw_cpf + 2
+ " call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf)
" determine qty files per line (fpl)
let w:netrw_fpl= winwidth(0)/b:netrw_cpf
if w:netrw_fpl <= 0
let w:netrw_fpl= 1
endif
- " call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
+ " call Decho("fpl= [winwidth=".winwidth(0)."]/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
" make wide display
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
+ call histdel("/",-1)
let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
let newcolstart = w:netrw_bannercnt + fpc
let newcolend = newcolstart + fpc - 1
@@@ -5706,6 -5917,7 +5917,7 @@@
endwhile
silent! let @*= keepregstar
exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
+ call histdel("/",-1)
setlocal noma nomod ro
" call Dret("NetrwWideListing")
endif
@@@ -5733,7 -5945,7 +5945,7 @@@ fun! s:PerformListing(islocal
endif
" save current directory on directory history list
- call s:NetrwBookmarkDir(3,b:netrw_curdir)
+ call s:NetrwBookHistHandler(3,b:netrw_curdir)
" Set up the banner {{{3
" call Decho("set up banner")
@@@ -5844,8 -6056,8 +6056,8 @@@
endif
" remove priority pattern prefix
" call Decho("remove priority pattern prefix")
- let sepchr= "\<Char-0xff>"
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.sepchr.'//e'
+ exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
+ call histdel("/",-1)
elseif a:islocal
if w:netrw_bannercnt < line("$")
@@@ -5857,13 -6069,17 +6069,17 @@@
" call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!')
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
endif
- endif
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+ call histdel("/",-1)
+ endif
endif
elseif g:netrw_sort_direction =~ 'r'
" call Decho('reverse the sorted listing')
- exe 'silent keepjumps '.w:netrw_bannercnt.'g/^/m '.w:netrw_bannercnt
+ if w:netrw_bannercnt < line('$')
+ exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt
+ call histdel("/",-1)
+ endif
endif
endif
@@@ -6006,8 -6222,10 +6222,10 @@@ fun! s:NetrwRemoteListing(
" cleanup
if g:netrw_ftp_browse_reject != ""
exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
+ call histdel("/",-1)
endif
silent! keepjumps %s/\r$//e
+ call histdel("/",-1)
" if there's no ../ listed, then put ./ and ../ in
let line1= line(".")
@@@ -6025,11 -6243,15 +6243,15 @@@
if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
" call Decho("M$ ftp cleanup")
exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//'
+ call histdel("/",-1)
else " normal ftp cleanup
" call Decho("normal ftp cleanup")
exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
+ call histdel("/",-1)
+ call histdel("/",-1)
+ call histdel("/",-1)
endif
endif
@@@ -6045,8 -6267,12 +6267,12 @@@
g/^Listing directory/d
g/^d[-rwx][-rwx][-rwx]/s+$+/+e
silent g/^l[-rwx][-rwx][-rwx]/s+$+ at +e
+ call histdel("/",-1)
+ call histdel("/",-1)
+ call histdel("/",-1)
if g:netrw_liststyle != s:LONGLIST
g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e
+ call histdel("/",-1)
endif
else
if s:path == ""
@@@ -6063,6 -6289,7 +6289,7 @@@
if g:netrw_ftp_browse_reject != ""
" call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d")
exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d"
+ call histdel("/",-1)
endif
endif
@@@ -6099,6 -6326,9 +6326,9 @@@
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
exe 'silent keepjumps '.w:netrw_bannercnt
+ call histdel("/",-1)
+ call histdel("/",-1)
+ call histdel("/",-1)
endif
endif
@@@ -6118,6 -6348,7 +6348,7 @@@ fun! s:NetrwRemoteRm(usrhost,path) rang
let all= 0
if exists("s:netrwmarkfilelist_{bufnr('%')}")
" remove all marked files
+ " call Decho("remove all marked files with bufnr#".bufnr("%"))
for fname in s:netrwmarkfilelist_{bufnr("%")}
let ok= s:NetrwRemoteRmFile(a:path,fname,all)
if ok =~ 'q\%[uit]'
@@@ -6126,12 -6357,11 +6357,11 @@@
let all= 1
endif
endfor
- unlet s:netrwmarkfilelist_{bufnr("%")}
- unlet s:netrwmarkfilemtch_{bufnr("%")}
- 2match none
+ call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
else
" remove files specified by range
+ " call Decho("remove files specified by range")
" preparation for removing multiple files/directories
let ctr= a:firstline
@@@ -6353,13 -6583,17 +6583,17 @@@ fun! s:NetrwRemoteFtpCmd(path,listcmd
" cleanup for Windows
if has("win32") || has("win95") || has("win64") || has("win16")
silent! keepjumps %s/\r$//e
+ call histdel("/",-1)
endif
if a:listcmd == "dir"
" infer directory/link based on the file permission string
silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
+ call histdel("/",-1)
+ call histdel("/",-1)
if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
exe "silent! keepjumps ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e'
+ call histdel("/",-1)
endif
endif
@@@ -6466,13 -6700,16 +6700,16 @@@ fun! netrw#LocalBrowseCheck(dirname
" The &ft == "netrw" test was installed because the BufEnter event
" would hit when re-entering netrw windows, creating unexpected
" refreshes (and would do so in the middle of NetrwSaveOptions(), too)
- " call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname))
+ " call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname).((exists("s:treeforceredraw")? " treeforceredraw" : "")))
if isdirectory(a:dirname)
" call Decho(" ft<".&ft."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : " doesn't exist")."> dirname<".a:dirname.">"." line($)=".line("$"))
if &ft != "netrw" || (exists("b:netrw_curdir") && b:netrw_curdir != a:dirname)
silent! call s:NetrwBrowse(1,a:dirname)
elseif &ft == "netrw" && line("$") == 1
silent! call s:NetrwBrowse(1,a:dirname)
+ elseif exists("s:treeforceredraw")
+ unlet s:treeforceredraw
+ silent! call s:NetrwBrowse(1,a:dirname)
endif
endif
" not a directory, ignore it
@@@ -6492,7 -6729,7 +6729,7 @@@ fun! s:LocalListing(
" get the list of files contained in the current directory
let dirname = escape(b:netrw_curdir,g:netrw_glob_escape)
- let dirnamelen = strlen(b:netrw_curdir)
+ let dirnamelen = s:Strlen(b:netrw_curdir)
let filelist = glob(s:ComposePath(dirname,"*"))
" call Decho("glob(dirname<".dirname."/*>)=".filelist)
if filelist != ""
@@@ -6608,7 -6845,7 +6845,7 @@@
if w:netrw_liststyle == s:LONGLIST
let sz = getfsize(filename)
- let fsz = strpart(" ",1,15-s:Strlen(sz)).sz
+ let fsz = strpart(" ",1,15-strlen(sz)).sz
let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
" call Decho("sz=".sz." fsz=".fsz)
endif
@@@ -6617,7 -6854,7 +6854,7 @@@
" sort by time (handles time up to 1 quintillion seconds, US)
" call Decho("getftime(".filename.")=".getftime(filename))
let t = getftime(filename)
- let ft = strpart("000000000000000000",1,18-s:Strlen(t)).t
+ let ft = strpart("000000000000000000",1,18-strlen(t)).t
" call Decho("exe keepjumps put ='".ft.'/'.filename."'")
let ftpfile= ft.'/'.pfile
keepjumps silent! put=ftpfile
@@@ -6626,7 -6863,7 +6863,7 @@@
" sort by size (handles file sizes up to 1 quintillion bytes, US)
" call Decho("getfsize(".filename.")=".getfsize(filename))
let sz = getfsize(filename)
- let fsz = strpart("000000000000000000",1,18-s:Strlen(sz)).sz
+ let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz
" call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
let fszpfile= fsz.'/'.pfile
keepjumps silent! put =fszpfile
@@@ -6640,6 -6877,7 +6877,7 @@@
" cleanup any windows mess at end-of-line
silent! keepjumps %s/\r$//e
+ call histdel("/",-1)
exe "setlocal ts=".g:netrw_maxfilenamelen
" call Decho("setlocal ts=".g:netrw_maxfilenamelen)
@@@ -6659,9 -6897,17 +6897,17 @@@ fun! s:LocalBrowseShellCmdRefresh(
return
endif
if !exists("w:netrw_bannercnt")
- " call Dret("LocalBrowseShellCmdRefresh : don't refresh when focus not on netrw windwo")
+ " call Dret("LocalBrowseShellCmdRefresh : don't refresh when focus not on netrw window")
return
endif
+ if exists("s:locbrowseshellcmd")
+ if s:locbrowseshellcmd
+ let s:locbrowseshellcmd= 0
+ " call Dret("LocalBrowseShellCmdRefresh : NetrwBrowse itself caused the refresh")
+ return
+ endif
+ let s:locbrowseshellcmd= 0
+ endif
let itab = 1
let buftablist = []
while itab <= tabpagenr("$")
@@@ -6874,9 -7120,7 +7120,7 @@@ fun! s:NetrwLocalRename(path) rang
endif
call rename(oldname,newname)
endfor
- 2match none
- unlet s:netrwmarkfilelist_{bufnr("%")}
- unlet s:netrwmarkfilemtch_{bufnr("%")}
+ call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
else
@@@ -6955,9 -7199,11 +7199,11 @@@ fun! s:LocalFastBrowser(
augroup AuNetrwShellCmd
au!
if (has("win32") || has("win95") || has("win64") || has("win16"))
+ " call Decho("autocmd: ShellCmdPost * call s:LocalBrowseShellCmdRefresh()")
au ShellCmdPost * call s:LocalBrowseShellCmdRefresh()
else
au ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh()
+ " call Decho("autocmd: ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh()")
endif
augroup END
endif
@@@ -6984,7 -7230,7 +7230,7 @@@ endfu
" 0=note = s:NOTE
" 1=warning = s:WARNING
" 2=error = s:ERROR
- " Jul 08, 2008 : max errnum currently is 71
+ " Oct 12, 2008 : max errnum currently is 73
fun! netrw#ErrorMsg(level,msg,errnum)
" call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
@@@ -7017,7 -7263,8 +7263,8 @@@
else
" call Decho("create a NetrwMessage buffer window")
bo 1split
- enew
+ call s:NetrwEnew()
+ call s:NetrwSafeOptions()
setlocal bt=nofile
file NetrwMessage
" call Decho("setlocal ma noro")
@@@ -7130,7 -7377,7 +7377,7 @@@ fun! s:ComposePath(base,subdir
if(has("amiga"))
" call Decho("amiga")
- let ec = a:base[strlen(a:base)-1]
+ let ec = a:base[s:Strlen(a:base)-1]
if ec != '/' && ec != ':'
let ret = a:base . "/" . a:subdir
else
@@@ -7212,7 -7459,7 +7459,7 @@@ fun! s:GetTempfile(fname
endif
" let netrw#NetSource() know about the tmpfile
- let s:netrw_tmpfile= tmpfile " used by netrw#NetSource()
+ let s:netrw_tmpfile= tmpfile " used by netrw#NetSource() and netrw#NetrwBrowseX()
" call Decho("tmpfile<".tmpfile."> s:netrw_tmpfile<".s:netrw_tmpfile.">")
" o/s dependencies
@@@ -7317,7 -7564,7 +7564,7 @@@ fun! s:NetrwDelete(path
let result= delete(path)
endif
if result < 0
- call Netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
+ call netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
endif
" call Dret("s:NetrwDelete ".result)
@@@ -7326,8 -7573,9 +7573,9 @@@ endfu
" ---------------------------------------------------------------------
" s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
- fun! s:NetrwEnew(curdir)
- " call Dfunc("s:NetrwEnew(curdir<".a:curdir.">) buf#".bufnr("%")."<".bufname("%").">")
+ fun! s:NetrwEnew(...)
+ " call Dfunc("s:NetrwEnew() a:0=".a:0)
+ " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">")
" grab a function-local-variable copy of buffer variables
if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif
@@@ -7370,14 -7618,16 +7618,16 @@@
if exists("netrw_option") |let b:netrw_option = netrw_option |endif
if exists("netrw_prvdir") |let b:netrw_prvdir = netrw_prvdir |endif
- let b:netrw_curdir= a:curdir
- if b:netrw_curdir =~ '/$'
- if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
- file NetrwTreeListing
- nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr>
- nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr>
- else
- exe "silent! keepalt file ".fnameescape(b:netrw_curdir)
+ if a:0 > 0
+ let b:netrw_curdir= a:1
+ if b:netrw_curdir =~ '/$'
+ if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+ file NetrwTreeListing
+ nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr>
+ nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr>
+ else
+ exe "silent! keepalt file ".fnameescape(b:netrw_curdir)
+ endif
endif
endif
@@@ -7511,13 -7761,16 +7761,16 @@@ fun! s:NetrwRexplore(islocal,dirname
call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')})
unlet s:nbcd_curpos_{bufnr('%')}
endif
+ if exists("s:explore_match")
+ exe "2match netrwMarkFile /".s:explore_match."/"
+ endif
" call Dret("s:NetrwRexplore")
endfun
" ---------------------------------------------------------------------
" s:SaveBufVars: {{{2
fun! s:SaveBufVars()
- " call Dfunc("s:SaveBufVars()")
+ " call Dfunc("s:SaveBufVars() buf#".bufnr("%"))
if exists("b:netrw_curdir") |let s:netrw_curdir = b:netrw_curdir |endif
if exists("b:netrw_lastfile") |let s:netrw_lastfile = b:netrw_lastfile |endif
@@@ -7532,7 -7785,7 +7785,7 @@@ endfu
" ---------------------------------------------------------------------
" s:SaveWinVars: (used by Explore() and NetrwSplit()) {{{2
fun! s:SaveWinVars()
- " call Dfunc("s:SaveWinVars()")
+ " call Dfunc("s:SaveWinVars() win#".winnr())
if exists("w:netrw_bannercnt") |let s:bannercnt = w:netrw_bannercnt |endif
if exists("w:netrw_col") |let s:col = w:netrw_col |endif
if exists("w:netrw_curdir") |let s:curdir = w:netrw_curdir |endif
@@@ -7562,7 -7815,7 +7815,7 @@@ endfu
" variables are not inherited by the new window. SetBufWinVars() and
" UseBufWinVars() get around that.
fun! s:SetBufWinVars()
- " call Dfunc("s:SetBufWinVars()")
+ " call Dfunc("s:SetBufWinVars() win#".winnr())
if exists("w:netrw_liststyle") |let b:netrw_liststyle = w:netrw_liststyle |endif
if exists("w:netrw_bannercnt") |let b:netrw_bannercnt = w:netrw_bannercnt |endif
if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif
@@@ -7584,8 -7837,7 +7837,7 @@@ fun! s:SetRexDir(islocal,dirname
if a:islocal
exe 'com! Rexplore call s:NetrwRexplore(1,"'.escape(a:dirname,'"\').'")'
if g:netrw_retmap
- silent! unmap <2-leftmouse>
- if !hasmapto("<Plug>NetrwReturn")
+ if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
nmap <unique> <silent> <2-leftmouse> <Plug>NetrwReturn
endif
let dir = escape(a:dirname, s:netrw_map_escape)
@@@ -7594,8 -7846,7 +7846,7 @@@
else
exe 'com! Rexplore call s:NetrwRexplore(0,"'.escape(a:dirname,'"\').'")'
if g:netrw_retmap
- silent! unmap <2-leftmouse>
- if !hasmapto("<Plug>NetrwReturn")
+ if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
nmap <unique> <silent> <2-leftmouse> <Plug>NetrwReturn
endif
let dir = escape(a:dirname, s:netrw_map_escape)
@@@ -7608,9 -7859,9 +7859,9 @@@ endfu
" ---------------------------------------------------------------------
" s:Strlen: this function returns the length of a string, even if its {{{2
" using two-byte etc characters.
- " Currently, its only used if g:Align_xstrlen is set to a
- " nonzero value. Solution from Nicolai Weibull, vim docs
- " (:help strlen()), Tony Mechelynck, and my own invention.
+ " Solution from Nicolai Weibull, vim docs (:help strlen()), Tony Mechelynck,
+ " and a bit from me.
+ " if g:netrw_xstrlen is zero (default), then the builtin strlen() function is used.
fun! s:Strlen(x)
" call Dfunc("s:Strlen(x<".a:x.">")
if g:netrw_xstrlen == 1
@@@ -7638,7 -7889,7 +7889,7 @@@
else
" at least give a decent default
- ret= strlen(a:x)
+ let ret= strlen(a:x)
endif
" call Dret("s:Strlen ".ret)
return ret
@@@ -7737,12 -7988,14 +7988,14 @@@ fun! s:UseBufWinVars(
endfun
" ---------------------------------------------------------------------
- " s:WinPath: {{{2
+ " s:WinPath: tries to insure that the path is windows-acceptable, whether cygwin is used or not {{{2
fun! s:WinPath(path)
" call Dfunc("s:WinPath(path<".a:path.">)")
- if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
+ if (!g:netrw_cygwin || &shell !~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$') && (has("win32") || has("win95") || has("win64") || has("win16"))
+ " remove cygdrive prefix, if present
+ let path = substitute(a:path,'/cygdrive/\(.\)','\1:','')
" remove trailing slash (Win95)
- let path = substitute(a:path, '\(\\\|/\)$', '', 'g')
+ let path = substitute(path, '\(\\\|/\)$', '', 'g')
" remove escaped spaces
let path = substitute(path, '\ ', ' ', 'g')
" convert slashes to backslashes
diff --combined runtime/doc/options.txt
index 904d6aa,2bfa614..ced2841
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@@ -1,4 -1,4 +1,4 @@@
- *options.txt* For Vim version 7.2. Last change: 2008 Nov 25
+ *options.txt* For Vim version 7.2. Last change: 2009 Apr 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@@ -743,8 -743,8 +743,8 @@@ A jump table for the options with a sho
within a word (initial, medial, final and stand-alone).
b) the enabling of the ability to compose characters
c) the enabling of the required combining of some characters
- When disabled the character display reverts back to each character's
- true stand-alone form.
+ When disabled the display shows each character's true stand-alone
+ form.
Arabic is a complex language which requires other settings, for
further details see |arabic.txt|.
@@@ -959,7 -959,8 +959,8 @@@
{not in Vi}
List of directories for the backup file, separated with commas.
- The backup file will be created in the first directory in the list
- where this is possible.
+ where this is possible. The directory must exist, Vim will not
+ create it for you.
- Empty means that no backup file will be created ('patchmode' is
impossible!). Writing may fail because of this.
- A directory "." means to put the backup file in the same directory
@@@ -1143,7 -1144,7 +1144,7 @@@
Some applications use the BOM to recognize the encoding of the file.
Often used for UCS-2 files on MS-Windows. For other applications it
causes trouble, for example: "cat file1 file2" makes the BOM of file2
- appear halfway the resulting file.
+ appear halfway the resulting file. Gcc doesn't accept a BOM.
When Vim reads a file and 'fileencodings' starts with "ucs-bom", a
check for the presence of the BOM is done and 'bomb' set accordingly.
Unless 'binary' is set, it is removed from the first line, so that you
@@@ -2378,6 -2379,10 +2379,10 @@@
This is specified with 'fileencoding'. The conversion is done with
iconv() or as specified with 'charconvert'.
+ If you need to know whether 'encoding' is a multi-byte encoding, you
+ can use: >
+ if has("multi_byte_encoding")
+ <
Normally 'encoding' will be equal to your current locale. This will
be the default if Vim recognizes your environment settings. If
'encoding' is not set to the current locale, 'termencoding' must be
@@@ -2835,6 -2840,8 +2840,8 @@@
The expression may be evaluated in the |sandbox|, see
|sandbox-option|.
+ This option can't be set from a |modeline| when the 'diff' option is
+ on.
It is not allowed to change text or jump to another window while
evaluating 'foldexpr' |textlock|.
@@@ -3236,8 -3243,13 +3243,13 @@@
For the GTK+ 2 GUI the font name looks like this: >
:set guifont=Andale\ Mono\ 11
- < That's all. XLFDs are no longer accepted.
-
+ < That's all. XLFDs are not used. For Chinese this is reported to work
+ well: >
+ if has("gui_gtk2")
+ set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12
+ set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12
+ endif
+ <
For Mac OSX you can use something like this: >
:set guifont=Monaco:h10
< Also see 'macatsui', it can help fix display problems.
@@@ -3483,7 -3495,9 +3495,9 @@@
When nonempty describes the text to use in a tooltip for the GUI tab
pages line. When empty Vim will use a default tooltip.
This option is otherwise just like 'guitablabel' above.
-
+ You can include a line break. Simplest method is to use |:let|: >
+ :let &guitabtooltip = "line one\nline two"
+ <
*'helpfile'* *'hf'*
'helpfile' 'hf' string (default (MSDOS) "$VIMRUNTIME\doc\help.txt"
@@@ -4322,10 -4336,17 +4336,17 @@@
*'list'* *'nolist'*
'list' boolean (default off)
local to window
- List mode: Show tabs as CTRL-I, show end of line with $. Useful to
- see the difference between tabs and spaces and for trailing blanks.
- Note that this will also affect formatting (set with 'textwidth' or
- 'wrapmargin') when 'cpoptions' includes 'L'. See 'listchars' for
+ List mode: Show tabs as CTRL-I is displayed, display $ after end of
+ line. Useful to see the difference between tabs and spaces and for
+ trailing blanks. Further changed by the 'listchars' option.
+
+ The cursor is displayed at the start of the space a Tab character
+ occupies, not at the end as usual in Normal mode. To get this cursor
+ position while displaying Tabs with spaces, use: >
+ :set list lcs=tab\ \
+ <
+ Note that list mode will also affect formatting (set with 'textwidth'
+ or 'wrapmargin') when 'cpoptions' includes 'L'. See 'listchars' for
changing the way tabs are displayed.
*'listchars'* *'lcs'*
@@@ -4508,15 -4529,15 +4529,15 @@@
{not in Vi}
Maximum amount of memory (in Kbyte) to use for one buffer. When this
limit is reached allocating extra memory for a buffer will cause
- other memory to be freed. Maximum value 2000000. Use this to work
- without a limit. Also see 'maxmemtot'.
+ other memory to be freed. Maximum usable value about 2000000. Use
+ this to work without a limit. Also see 'maxmemtot'.
*'maxmempattern'* *'mmp'*
'maxmempattern' 'mmp' number (default 1000)
global
{not in Vi}
Maximum amount of memory (in Kbyte) to use for pattern matching.
- Maximum value 2000000. Use this to work without a limit.
+ Maximum value about 2000000. Use this to work without a limit.
*E363*
When Vim runs into the limit it gives an error message and mostly
behaves like CTRL-C was typed.
@@@ -4532,8 -4553,8 +4553,8 @@@
global
{not in Vi}
Maximum amount of memory (in Kbyte) to use for all buffers together.
- Maximum value 2000000. Use this to work without a limit. Also see
- 'maxmem'.
+ Maximum usable value 2000000. Use this to work without a limit. Also
+ see 'maxmem'.
*'menuitems'* *'mis'*
'menuitems' 'mis' number (default 25)
@@@ -4586,7 -4607,7 +4607,7 @@@
*'modeline'* *'ml'* *'nomodeline'* *'noml'*
'modeline' 'ml' boolean (Vim default: on (off for root),
- Vi default: off)
+ Debian: off, Vi default: off)
local to buffer
*'modelines'* *'mls'*
'modelines' 'mls' number (default 5)
@@@ -5599,8 -5620,8 +5620,8 @@@
winsize window sizes
Don't include both "curdir" and "sesdir".
- When "curdir" nor "sesdir" is included, file names are stored with
- absolute paths.
+ When neither "curdir" nor "sesdir" is included, file names are stored
+ with absolute paths.
"slash" and "unix" are useful on Windows when sharing session files
with Unix. The Unix version of Vim cannot source dos format scripts,
but the Windows version of Vim can source unix format scripts.
@@@ -5898,7 -5919,8 +5919,8 @@@
In Visual mode the size of the selected area is shown:
- When selecting characters within a line, the number of characters.
- When selecting more than one line, the number of lines.
- - When selecting a block, the size in screen characters: linesxcolumns.
+ - When selecting a block, the size in screen characters:
+ {lines}x{columns}.
NOTE: This option is set to the Vi default value when 'compatible' is
set and to the Vim default value when 'compatible' is reset.
@@@ -6633,8 -6655,9 +6655,9 @@@
of '2' in the "!_TAG_FILE_SORTED" line for this. A tag file can be
case-fold sorted with the -f switch to "sort" in most unices, as in
the command: "sort -f -o tags tags". For "Exuberant ctags" version
- 5.3 or higher the -f or --fold-case-sort switch can be used for this
- as well. Note that case must be folded to uppercase for this to work.
+ 5.x or higher (at least 5.5) the --sort=foldcase switch can be used
+ for this as well. Note that case must be folded to uppercase for this
+ to work.
When 'tagbsearch' is off, tags searching is slower when a full match
exists, but faster when no full match exists. Tags in unsorted tags
@@@ -7244,9 -7267,9 +7267,9 @@@
*'viminfo'* *'vi'* *E526* *E527* *E528*
'viminfo' 'vi' string (Vi default: "", Vim default for MS-DOS,
- Windows and OS/2: '20,<50,s10,h,rA:,rB:,
- for Amiga: '20,<50,s10,h,rdf0:,rdf1:,rdf2:
- for others: '20,<50,s10,h)
+ Windows and OS/2: '100,<50,s10,h,rA:,rB:,
+ for Amiga: '100,<50,s10,h,rdf0:,rdf1:,rdf2:
+ for others: '100,<50,s10,h)
global
{not in Vi}
{not available when compiled without the |+viminfo|
@@@ -7719,6 -7742,8 +7742,8 @@@
:set sidescroll=5
:set listchars+=precedes:<,extends:>
< See 'sidescroll', 'listchars' and |wrap-off|.
+ This option can't be set from a |modeline| when the 'diff' option is
+ on.
*'wrapmargin'* *'wm'*
'wrapmargin' 'wm' number (default 0)
diff --combined runtime/filetype.vim
index 4d9413f,6d30abf..5f1b8d5
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@@ -1,7 -1,7 +1,7 @@@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram at vim.org>
- " Last Change: 2008 Aug 03
+ " Last Change: 2008 Dec 14
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@@ -116,6 -116,9 +116,9 @@@ au BufNewFile,BufRead httpd.conf*,srm.c
" XA65 MOS6510 cross assembler
au BufNewFile,BufRead *.a65 setf a65
+ " Applescript
+ au BufNewFile,BufRead *.scpt setf applescript
+
" Applix ELF
au BufNewFile,BufRead *.am
\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
@@@ -350,10 -353,9 +353,9 @@@ au BufNewFile,BufRead *.cp
\ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
" C++
+ au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp
if has("fname_case")
- au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
- else
- au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+ au BufNewFile,BufRead *.C,*.H setf cpp
endif
" .h files can be C, Ch C++, ObjC or ObjC++.
@@@ -364,9 -366,9 +366,9 @@@ au BufNewFile,BufRead *.h call s:FThe
func! s:FTheader()
if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
setf objc
- elseif exists("c_syntax_for_h")
+ elseif exists("g:c_syntax_for_h")
setf c
- elseif exists("ch_syntax_for_h")
+ elseif exists("g:ch_syntax_for_h")
setf ch
else
setf cpp
@@@ -669,8 -671,9 +671,9 @@@ au BufNewFile,BufRead *.factor setf f
" Fetchmail RC file
au BufNewFile,BufRead .fetchmailrc setf fetchmail
- " FlexWiki
- au BufNewFile,BufRead *.wiki setf flexwiki
+ " FlexWiki - disabled, because it has side effects when a .wiki file
+ " is not actually FlexWiki
+ "au BufNewFile,BufRead *.wiki setf flexwiki
" Focus Executable
au BufNewFile,BufRead *.fex,*.focexec setf focexec
@@@ -704,7 -707,7 +707,7 @@@ au BufNewFile,BufRead .gdbinit setf g
au BufNewFile,BufRead *.mo,*.gdmo setf gdmo
" Gedcom
- au BufNewFile,BufRead *.ged setf gedcom
+ au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom
" Git
autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit
@@@ -1043,7 -1046,7 +1046,7 @@@ func! s:FTm(
let n = 1
while n < 10
let line = getline(n)
- if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
+ if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\|//\)'
setf objc
return
endif
@@@ -1070,6 -1073,9 +1073,9 @@@ au BufNewFile,BufRead *.nb setf mm
" Maya Extension Language
au BufNewFile,BufRead *.mel setf mel
+ " Mercurial config (looks like generic config file)
+ au BufNewFile,BufRead *.hgrc,*hgrc setf cfg
+
" Messages
au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9] setf messages
@@@ -1260,7 -1266,7 +1266,7 @@@ if has("fname_case"
else
au BufNewFile,BufRead *.pl call s:FTpl()
endif
- au BufNewFile,BufRead *.plx setf perl
+ au BufNewFile,BufRead *.plx,*.al setf perl
func! s:FTpl()
if exists("g:filetype_pl")
@@@ -1980,7 -1986,7 +1986,7 @@@ func! s:FTtex(
call cursor(1,1)
let firstNC = search('^\s*[^[:space:]%]', 'c', 1000)
if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword.
- let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>'
+ let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>\|part\>\|chapter\>\|section\>\|subsection\>\|subsubsection\>\|paragraph\>\|subparagraph\>\|subsubparagraph'
let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>'
let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)',
\ 'cnp', firstNC + 1000)
@@@ -2079,8 -2085,13 +2085,13 @@@ au BufNewFile,BufRead *.vim,*.vba,.exrc
" Viminfo file
au BufNewFile,BufRead .viminfo,_viminfo setf viminfo
- " Virata Config Script File
- au BufRead,BufNewFile *.hw,*.module,*.pkg setf virata
+ " Virata Config Script File or Drupal module
+ au BufRead,BufNewFile *.hw,*.module,*.pkg
+ \ if getline(1) =~ '<?php' |
+ \ setf php |
+ \ else |
+ \ setf virata |
+ \ endif
" Visual Basic (also uses *.bas) or FORM
au BufNewFile,BufRead *.frm call s:FTVB("form")
@@@ -2325,6 -2336,9 +2336,9 @@@ au BufNewFile,BufRead *fvwm2rc
\| let b:fvwm_version = 2 | call s:StarSetf('fvwm')
\|endif
+ " Gedcom
+ au BufNewFile,BufRead /tmp/lltmp* call s:StarSetf('gedcom')
+
" GTK RC
au BufNewFile,BufRead .gtkrc*,gtkrc* call s:StarSetf('gtkrc')
diff --combined runtime/scripts.vim
index aed27cd,1872f58..1639e0d
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@@ -1,7 -1,7 +1,7 @@@
" Vim support file to detect file types in scripts
"
" Maintainer: Bram Moolenaar <Bram at vim.org>
- " Last change: 2008 Aug 09
+ " Last change: 2008 Sep 05
" This file is called by an autocommand for every file that has just been
" loaded into a buffer. It checks if the type of file can be recognized by
@@@ -317,39 -317,32 +317,40 @@@ els
elseif s:line1 =~ 'exec\s\+\S*scheme' || s:line2 =~ 'exec\s\+\S*scheme'
set ft=scheme
+ " rst files
+ elseif s:line1 =~ '^\.\.\s\|^\s*restindex\s*$'
+ \ || s:line2 =~ '^\.\.\s\|^\s*restindex\s*$'
+ \ || s:line3 =~ '^\.\.\s\|^\s*restindex\s*$'
+ \ || s:line4 =~ '^\.\.\s\|^\s*restindex\s*$'
+ \ || s:line5 =~ '^\.\.\s\|^\s*restindex\s*$'
+ set ft=rst
+
" Git output
elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}$\|^tag \S\+$'
set ft=git
" CVS diff
else
- let lnum = 1
- while getline(lnum) =~ "^? " && lnum < line("$")
- let lnum = lnum + 1
+ let s:lnum = 1
+ while getline(s:lnum) =~ "^? " && s:lnum < line("$")
+ let s:lnum += 1
endwhile
- if getline(lnum) =~ '^Index:\s\+\f\+$'
+ if getline(s:lnum) =~ '^Index:\s\+\f\+$'
set ft=diff
" locale input files: Formal Definitions of Cultural Conventions
" filename must be like en_US, fr_FR at euro or en_US.UTF-8
elseif expand("%") =~ '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_'
- let lnum = 1
- while lnum < 100 && lnum < line("$")
- if getline(lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
+ let s:lnum = 1
+ while s:lnum < 100 && s:lnum < line("$")
+ if getline(s:lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
setf fdcc
break
endif
- let lnum = lnum + 1
+ let s:lnum += 1
endwhile
endif
+ unlet s:lnum
endif
diff --combined runtime/syntax/po.vim
index 1a3e670,4475417..459efe6
--- a/runtime/syntax/po.vim
+++ b/runtime/syntax/po.vim
@@@ -1,10 -1,10 +1,10 @@@
" Vim syntax file
" Language: po (gettext)
" Maintainer: Dwayne Bailey <dwayne at translate.org.za>
- " Last Change: 2008 Jan 08
+ " Last Change: 2008 Sep 17
" Contributors: Dwayne Bailey (Most advanced syntax highlighting)
" Leonardo Fontenelle (Spell checking)
- " Nam SungHyun <namsh at kldp.org> (Original maintainer)
+ " SungHyun Nam <goweol at gmail.com> (Original maintainer)
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@@ -14,9 -14,6 +14,9 @@@ elseif exists("b:current_syntax"
finish
endif
+let s:cpo_save = &cpo
+set cpo-=C " Allow line continuations
+
syn sync minlines=10
" Identifiers
@@@ -133,7 -130,6 +133,7 @@@ if version >= 508 || !exists("did_po_sy
delcommand HiLink
endif
+let &cpo = s:cpo_save
let b:current_syntax = "po"
" vim:set ts=8 sts=2 sw=2 noet:
diff --combined runtime/syntax/tex.vim
index f73e0e4,d9e81bc..a34dbeb
--- a/runtime/syntax/tex.vim
+++ b/runtime/syntax/tex.vim
@@@ -1,8 -1,8 +1,8 @@@
" Vim syntax file
" Language: TeX
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrchipO at ScampbellPfamily.AbizM>
- " Last Change: Jun 03, 2008
- " Version: 41
+ " Last Change: Feb 05, 2009
+ " Version: 45
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Notes: {{{1
@@@ -103,6 -103,7 +103,7 @@@ endi
syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone, at texMathZones,texTitle,texAbstract
syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption, at Spell
+ syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement, at Spell,texStyleMatcher
syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
if !exists("tex_no_math")
syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
@@@ -188,7 -189,7 +189,7 @@@ syn region texDocTypeArgs matchgroup=De
" Preamble syntax-based folding support: {{{1
if g:tex_fold_enabled && has("folding")
- syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=@texMatchGroup
+ syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle, at texMatchGroup
endif
" TeX input: {{{1
@@@ -309,7 -310,7 +310,7 @@@ if !exists("tex_no_math"
exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
- exe 'HiLink '.grpname.' texMath'
+ exe 'hi def link '.grpname.' texMath'
if a:starform
let grpname = "texMathZone".a:sfx.'S'
let syncname = "texSyncMathZone".a:sfx.'S'
@@@ -317,7 -318,7 +318,7 @@@
exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
- exe 'HiLink '.grpname.' texMath'
+ exe 'hi def link '.grpname.' texMath'
endif
endfun
@@@ -399,17 -400,13 +400,13 @@@ endi
" Separate lines used for verb` and verb# so that the end conditions {{{1
" will appropriately terminate. Ideally vim would let me save a
" character from the start pattern and re-use it in the end-pattern.
- if version < 600
- syn region texZone start="\\begin{verbatim}" end="\\end{verbatim}\|%stopzone\>"
- " moreverb package:
- syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>"
- syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>"
- syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>"
- else
- syn region texZone start="\\begin{\z(boxedverbatim\|verbatim\%(tab\|write\)\=\)}" end="\\end{\z1}\|%stopzone\>"
- endif
-syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell
++syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>"
" listings package:
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell
+ " moreverb package:
-syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>" contains=@Spell
-syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>" contains=@Spell
-syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>" contains=@Spell
++syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>"
++syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>"
++syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>"
if version < 600
syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>"
syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>"
@@@ -460,6 -457,14 +457,14 @@@ syn match texLength "\<\d\+\([.,]\d\+
" TeX String Delimiters: {{{1
syn match texString "\(``\|''\|,,\)"
+ " makeatletter -- makeatother sections
+ if !exists("g:tex_no_error")
+ syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained
+ syn match texStyleStatement "\\[a-zA-Z@]\+" contained
+ syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained
+ syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained
+ endif
+
" LaTeX synchronization: {{{1
syn sync maxlines=200
syn sync minlines=50
@@@ -511,6 -516,7 +516,7 @@@ if did_tex_syntax_inits ==
HiLink texMathDelimSet2 texMathDelim
HiLink texMathDelimKey texMathDelim
HiLink texMathMatcher texMath
+ HiLink texMathZoneV texMath
HiLink texMathZoneW texMath
HiLink texMathZoneX texMath
HiLink texMathZoneY texMath
@@@ -520,6 -526,7 +526,7 @@@
HiLink texSectionMarker texCmdName
HiLink texSectionName texSection
HiLink texSpaceCode texStatement
+ HiLink texStyleStatement texStatement
HiLink texTypeSize texType
HiLink texTypeStyle texType
--
Vim packaging
More information about the pkg-vim-maintainers
mailing list