Mercurial > vim
changeset 459:d9d38102399f
updated for version 7.0122
author | vimboss |
---|---|
date | Mon, 01 Aug 2005 21:58:57 +0000 |
parents | f99544c85670 |
children | 7f2d3b3c15a2 |
files | runtime/doc/eval.txt runtime/doc/insert.txt runtime/doc/options.txt runtime/doc/pi_netrw.txt runtime/doc/tags runtime/plugin/netrw.vim src/misc2.c src/version.h |
diffstat | 8 files changed, 482 insertions(+), 310 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.0aa. Last change: 2005 Jul 30 +*eval.txt* For Vim version 7.0aa. Last change: 2005 Aug 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3460,7 +3460,7 @@ printf({fmt}, {expr1} ...) *printf()* automatically to fit the conversion specifier. Any other argument type results in an error message. - *E766* *767* + *E766* *E767* The number of {exprN} arguments must exactly match the number of "%" items. If there are not sufficient or too many arguments an error is given. Up to 18 arguments can be used.
--- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.0aa. Last change: 2005 Jul 29 +*insert.txt* For Vim version 7.0aa. Last change: 2005 Aug 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -614,12 +614,12 @@ Completing whole lines *compl-whole- *i_CTRL-X_CTRL-L* CTRL-X CTRL-L Search backwards for a line that starts with the - same characters as in the current line before the - cursor. Indent is ignored. The found line is + same characters as those in the current line before + the cursor. Indent is ignored. The matching line is inserted in front of the cursor. - The 'complete' option is used to decide in which - buffers a match is searched for. But only loaded - buffers are used. + The 'complete' option is used to decide which buffers + are searched for a match. Only loaded buffers are + used. CTRL-L or CTRL-P Search backwards for next matching line. This line replaces the previous matching line.
--- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.0aa. Last change: 2005 Jul 30 +*options.txt* For Vim version 7.0aa. Last change: 2005 Aug 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2176,10 +2176,10 @@ A jump table for the options with a shor - A directory starting with "./" (or ".\" for MS-DOS et al.) means to put the swap file relative to where the edited file is. The leading "." is replaced with the path name of the edited file. - - For Unix and Win32, if a directory ends in two path separators, the - swap file name will be built from the complete path to the file - with all path separators substituted to percent '%' signs. This will - ensure file name uniqueness in the preserve directory. + - For Unix and Win32, if a directory ends in two path separators "//" + or "\\", the swap file name will be built from the complete path to + the file with all path separators substituted to percent '%' signs. + This will ensure file name uniqueness in the preserve directory. - Spaces after the comma are ignored, other spaces are considered part of the directory name. To have a space at the start of a directory name, precede it with a backslash.
--- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 6.3. Last change: Oct 08, 2004 +*pi_netrw.txt* For Vim version 6.3. Last change: Jul 09, 2005 VIM REFERENCE MANUAL by Charles E. Campbell, Jr. @@ -10,17 +10,48 @@ ============================================================================== 0. Contents *netrw-contents* -1. Netrw Reference.....................................|netrw-ref| -2. Network-Oriented File Transfer......................|netrw-xfer| -3. Activation..........................................|netrw-activate| -4. Transparent File Transfer...........................|netrw-transparent| -5. Ex Commands.........................................|netrw-ex| -6. Variables and Options...............................|netrw-var| -7. Directory Browser...................................|netrw-browse| -8. Problems and Fixes..................................|netrw-problems| -9. Debugging...........................................|netrw-debug| -10. History.............................................|netrw-history| -11. Credits.............................................|netrw-credits| +1. Netrw Reference......................................|netrw-ref| +2. Network-Oriented File Transfer.......................|netrw-xfer| + NETRC..............................................|netrw-netrc| + PASSWORD...........................................|netrw-passwd| +3. Activation...........................................|netrw-activate| +4. Transparent File Transfer............................|netrw-transparent| +5. Ex Commands..........................................|netrw-ex| +6. Variables and Options................................|netrw-var| +7. Directory Browser....................................|netrw-browse| {{{1 + Maps...............................................|netrw-maps| + Exploring..........................................|netrw-explore-cmds| + Quick Reference Commands Table.....................|netrw-browse-cmds| + Netrw Browser Variables............................|netrw-browse-var| + Introduction To Directory Browsing.................|netrw-browse-intro| + Directory Exploring Commands.......................|netrw-explore| + Refreshing The Listing.............................|netrw-ctrl-l| + Going Up...........................................|netrw--| + Browsing...........................................|netrw-cr| + Long Vs Short Listing..............................|netrw-i| + Making A New Directory.............................|netrw-d| + Deleting Files Or Directories......................|netrw-delete| + Renaming Files Or Directories......................|netrw-move| + Hiding Files Or Directories........................|g:netrw-a| + Edit File Or Directory Hiding List.................|netrw-h| + Browsing With A Horizontally Split Window..........|netrw-o| + Preview Window.....................................|netrw-p| + Selecting Sorting Style............................|netrw-s| + Editing The Sorting Sequence.......................|netrw-S| + Reversing Sorting Order............................|netrw-r| + Changing To A Predecessor Directory................|netrw-u| + Changing To A Successor Directory..................|netrw-U| + Browsing With A Vertically Split Window............|netrw-v| + Customizing Browsing With A User Function..........|netrw-x| + Making The Browsing Directory The Current Directory|netrw-c| + Bookmarking A Directory............................|netrw-b| + Changing To A Bookmarked Directory.................|netrw-B| + Listing Bookmarks And History......................|netrw-q| + Improving Directory Browsing.......................|netrw-list-hack| }}}1 +8. Problems and Fixes...................................|netrw-problems| +9. Debugging............................................|netrw-debug| +10. History..............................................|netrw-history| +11. Credits..............................................|netrw-credits| The functionality mentioned here is done via using |standard-plugin| techniques. This plugin is only available if @@ -177,16 +208,16 @@ by setting a variable (ex. scp uses the which is defaulted to "scp -q"). Ftp, an old protocol, seems to be blessed by numerous implementations. -Unfortunately, some implementations are noisy (i.e., add junk to the end +Unfortunately, some implementations are noisy (ie., add junk to the end of the file). Thus, concerned users may decide to write a NetReadFixup() function that will clean up after reading with their ftp. Some Unix systems -(i.e., FreeBSD) provide a utility called "fetch" which uses the ftp protocol +(ie., FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is not noisy and more convenient, actually, for <netrw.vim> to use. Consequently, if "fetch" is executable, it will be used to do reads for ftp://... (and http://...) . See |netrw-var| for more about this. For rcp, scp, sftp, and http, one may use network-oriented file transfers -transparently; i.e. +transparently; ie. > vim rcp://[user@]machine/path vim scp://[user@]machine/path @@ -198,7 +229,7 @@ that file. Your ftp must be able to use vim ftp://[user@]machine[[:#]portnumber]/path < However, ftp will often need to query the user for the userid and password. -The latter will be done "silently"; i.e. asterisks will show up instead of +The latter will be done "silently"; ie. asterisks will show up instead of the actually-typed-in password. Netrw will retain the userid and password for subsequent read/writes from the most recent transfer so subsequent transfers (read/write) to or from that machine will take place without @@ -482,7 +513,7 @@ To handle the SSL certificate dialog for down the certificate and place it into /usr/ssl/cert.pem. This operation renders the server treatment as "trusted". - *netrw-fixup* + *netrw-fixup* *netreadfixup* If your ftp for whatever reason generates unwanted lines (such as AUTH messages) you may write a NetReadFixup(tmpfile) function: > @@ -521,30 +552,38 @@ from <netrw.vim> itself: ============================================================================== 7. Directory Browser *netrw-browse* *netrw-dir* *netrw-list* *netrw-help* - ?..........Help....................................|netrw-help| - <cr>.......Browsing................................|netrw-cr| - <del>......Deleting Files or Directories...........|netrw-delete| - -..........Going Up................................|netrw--| - a..........Hiding Files or Directories.............|netrw-a| - b..........Bookmarking a Directory.................|netrw-b| - B..........Changing to a Bookmarked Directory......|netrw-B| - c..........Make Browsing Directory The Current Dir.|netrw-c| - d..........Make A New Directory....................|netrw-d| - D..........Deleting Files or Directories...........|netrw-D| - <c-h>......Edit File/Directory Hiding List.........|netrw-h| - i..........Long Listing............................|netrw-i| - <c-l>......Refreshing the Listing..................|netrw-ctrl-l| - o..........Browsing with a Horizontal Split........|netrw-o| - p..........Preview Window..........................|netrw-p| - q..........Listing Bookmarks and History...........|netrw-q| - r..........Reversing Sorting Order.................|netrw-r| - R..........Renaming Files or Directories...........|netrw-R| - s..........Selecting Sorting Style.................|netrw-s| - S..........Editing the Sorting Sequence............|netrw-S| - u..........Changing to a Predecessor Directory.....|netrw-u| - U..........Changing to a Successor Directory.......|netrw-U| - v..........Browsing with a Vertical Split..........|netrw-v| - x..........Customizing Browsing....................|netrw-x| + +MAPS *netrw-maps* + ?................Help.......................................|netrw-help| + <cr>.............Browsing...................................|netrw-cr| + <del>............Deleting Files or Directories..............|netrw-delete| + -................Going Up...................................|netrw--| + a................Hiding Files or Directories................|netrw-a| + b................Bookmarking a Directory....................|netrw-b| + B................Changing to a Bookmarked Directory.........|netrw-B| + c................Make Browsing Directory The Current Dir....|netrw-c| + d................Make A New Directory.......................|netrw-d| + D................Deleting Files or Directories..............|netrw-D| + <c-h>............Edit File/Directory Hiding List............|netrw-h| + i................Long Listing...............................|netrw-i| + <c-l>............Refreshing the Listing.....................|netrw-ctrl-l| + o................Browsing with a Horizontal Split...........|netrw-o| + p................Preview Window.............................|netrw-p| + q................Listing Bookmarks and History..............|netrw-q| + r................Reversing Sorting Order....................|netrw-r| + R................Renaming Files or Directories..............|netrw-R| + s................Selecting Sorting Style....................|netrw-s| + S................Editing the Sorting Sequence...............|netrw-S| + u................Changing to a Predecessor Directory........|netrw-u| + U................Changing to a Successor Directory..........|netrw-U| + v................Browsing with a Vertical Split.............|netrw-v| + x................Customizing Browsing.......................|netrw-x| + + COMMANDS *netrw-explore-cmds* + :Explore[!] [dir].Explore directory of current file........|netrw-explore| + :Sexplore[!] [dir].Split & Explore directory of current file|netrw-explore| + :Hexplore[!] [dir].Horizontal Split & Explore...............|netrw-explore| + :Vexplore[!] [dir].Vertical Split & Explore.................|netrw-explore| QUICK REFERENCE COMMANDS TABLE *netrw-browse-cmds* > @@ -581,51 +620,103 @@ NETRW BROWSER VARIABLES *netrw-brows < g:netrw_alto change from above splitting to below splitting by setting this variable (see |netrw-o|) + default: =0 + g:netrw_altv change from left splitting to right splitting by setting this variable (see |netrw-v|) + default: =0 + g:netrw_ftp_browse_reject ftp can produce a number of errors and warnings that can show up as "directories" and "files" in the listing. This pattern is used to - remove such embedded messages. + remove such embedded messages. By + default its value is: + '^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$' + + g:netrw_ssh_browse_reject ssh can sometimes produce unwanted + lines/messages/banners/and whatnot + that one doesn't want masquerading + as "directories" and "files". Use + this pattern to remove such embedded + messages. By default its value is: + '^total\s\+\d\+$' + g:netrw_keepdir =1 (default) keep current directory immune from the browsing directory. =0 keep the current directory the same as the browsing directory. The browsing directory is contained in b:netrw_curdir + g:netrw_list_cmd command for listing remote directories + default: (if ssh is executable) + "ssh HOSTNAME ls -FLa" + g:netrw_longlist if =1, then long listing will be default + g:netrw_ftp_list_cmd options for passing along to ftp for directory listing. Defaults: unix or g:netrw_cygwin set: : "ls -lF" otherwise "dir" + g:netrw_list_hide comma separated list of patterns for hiding files + default: "" + g:netrw_local_mkdir command for making a local directory + default: "ssh HOSTNAME mkdir" + g:netrw_local_rmdir remove directory command (rmdir) - g:netrw_local_rename rename file/directory command - unix-default: rm win32-default: ren + default: "rmdir" + g:netrw_maxfilenamelen =32 by default, selected so as to make long listings fit on 80 column displays. If your screen is wider, and you have file/directory names longer than 32 bytes, you may set this option to keep listings columnar. + g:netrw_mkdir_cmd command for making a remote directory + default: "ssh HOSTNAME mkdir" + g:netrw_rm_cmd command for removing files + default: "ssh HOSTNAME rm" + g:netrw_rmdir_cmd command for removing directories + default: "ssh HOSTNAME rmdir" + g:netrw_rmf_cmd command for removing softlinks + default: "ssh HOSTNAME rm -f" + g:netrw_hide if true, the hiding list is used + default: =0 + g:netrw_sort_by sort by "name", "time", or "size" + default: "name" + g:netrw_sort_direction sorting direction: "normal" or "reverse" + default: "normal" + g:netrw_sort_sequence when sorting by name, first sort by the comma-separated pattern sequence + default: '[\/]$,*,\.bak$,\.o$,\.h$, + \.info$,\.swp$,\.obj$' + g:netrw_timefmt specify format string to strftime() (%c) + default: "%c" + g:netrw_winsize specify initial size of new o/v windows + default: "" -INTRODUCTION TO DIRECTORY BROWSING *file-explorer* +INTRODUCTION TO DIRECTORY BROWSING *netrw-browse-intro* Netrw supports the browsing of directories on the local system and on remote hosts, including generating listing directories, entering directories, editing @@ -647,6 +738,31 @@ trailing slash and it will be interprete If you'd like to avoid entering the password in for directory listings, scp, ssh interaction, etc, see |netrw-list-hack|. + +DIRECTORY EXPLORING COMMANDS *netrw-explore* + + :Explore[!] [dir].Explore directory of current file + :Sexplore[!] [dir].Split & Explore directory of current file + :Hexplore[!] [dir].Horizontal Split & Explore + :Vexplore[!] [dir].Vertical Split & Explore + +The Explore command will open the local-directory browser on the current +file's directory (or on directory [dir] if specified). The window +will be split only if the file has been modified, otherwise the +browsing window will take over that window. Normally the splitting is +taken horizontally; the optional ! will use vertical splitting. + +Sexplore will always split the window before invoking the local-directory +browser. As with Explore, the splitting is normally done horizontally, +but with the optional ! the splitting will be done vertically. + +Hexplore does an Explore with |belowright| horizontal splitting; the +optional ! does the Explore with |aboveleft| horizontal splitting. + +Vexplore does an Explore with |leftabove| vertical splitting; the optiona +! does an Explore with |topleft| vertical splitting. + + REFRESHING THE LISTING *netrw-ctrl-l* To refresh either a local or remote directory listing, press ctrl-l (<c-l>) or @@ -677,6 +793,7 @@ Hitting the <cr> (the return key) will s Directories will themselves be listed, and files will be opened using the protocol given in the original read request. + LONG VS SHORT LISTING *netrw-i* The short listing format gives just the files' and directories' names. @@ -694,6 +811,7 @@ new directory's name. A bare <CR> at th directory. Attempts to make a local directory that already exists (as either a file or a directory) will be detected, reported on, and ignored. + DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D* Deleting/removing files and directories involves moving the cursor to the @@ -740,15 +858,22 @@ One may rename a block of files and dire the V (|linewise-visual|). -HIDING FILES OR DIRECTORIES *netrw-a* *g:netrw_list_hide* +HIDING FILES OR DIRECTORIES *g:netrw-a* *g:netrw_list_hide* Netrw's browsing facility allows one to use the hiding list in one of three ways: ignore it, hide files which match, and show only those files -which match. The g:netrw_list_hide variable holds a comma delimited list -of patterns (ex. \.obj) which specify the hiding list. (also see |netrw-h|) +which match. The "a" map allows the user to cycle about these three ways. + +The g:netrw_list_hide variable holds a comma delimited list of patterns +(ex. \.obj) which specify the hiding list. (also see |netrw-h|) To +set the hiding list, use the <c-h> map. As an example, to hide files +which begin with a ".", one may use the <c-h> map to set the hiding +list to '^\..*' (or one may put let g:netrw_list_hide= '^\..*' in +one's <.vimrc>). One may then use the "a" key to show all files, +hide matching files, or to show only the matching files. -EDIT FILE OR DIRECTORY HIDING LIST *netrw-h* +EDIT FILE OR DIRECTORY HIDING LIST *netrw-h* *netrw-edithide* The "<ctrl-h>" map brings up a requestor allowing the user to change the file/directory hiding list. The hiding list consists of one or more patterns @@ -756,7 +881,7 @@ delimited by commas. Files and/or direc either be hidden (ie. not shown) or be the only ones displayed (see |netrw-a|). -BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* +BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz* Normally one enters a file or directory using the <cr>. However, the "o" map allows one to open a new window to hold the new directory listing or file. A @@ -770,20 +895,21 @@ with the new window and cursor at the bo in your <.vimrc>. -PREVIEW WINDOW + +PREVIEW WINDOW *netrw-p* *netrw-preview* One may use a preview window (currently only for local browsing) by using the "p" key when the cursor is atop the desired filename to be previewed. -SELECTING SORTING STYLE *netrw-s* +SELECTING SORTING STYLE *netrw-s* *netrw-sort* One may select the sorting style by name, time, or (file) size. The "s" map allows one to circulate among the three choices; the directory listing will automatically be refreshed to reflect the selected style. -EDITING THE SORTING SEQUENCE *netrw-S* +EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence* When "Sorted by" is name, one may specify priority via the sorting sequence (g:netrw_sort_sequence). The sorting sequence typically @@ -798,13 +924,13 @@ the g:netrw_sort_sequence variable (eith or by using the "S" map. -REVERSING SORTING ORDER *netrw-r* +REVERSING SORTING ORDER *netrw-r* *netrw-reverse* One may toggle between normal and reverse sorting order by pressing the "r" key. -CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* +CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir* Every time you change to a new directory (new for the current session), netrw will save the directory in a recently-visited directory history @@ -813,7 +939,7 @@ list (unless g:netrw_dirhistmax is zero; the opposite, see |netrw-U|. -CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* +CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* With the "U" map, one can change to a later directory (successor). This map is the opposite of the "u" map. (see |netrw-u|) Use the @@ -835,7 +961,7 @@ with the new window and cursor at the ri in your <.vimrc>. -CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* +CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* *netrw-handler* One may "enter" a file with a special handler, thereby firing up a browser or other application, for example, on a file by hitting the "x" key. Presumably @@ -886,13 +1012,13 @@ Any count may be used to reference any o for how to bookmark a directory and |netrw-q| for how to list them. -LISTING BOOKMARKS AND HISTORY *netrw-q* +LISTING BOOKMARKS AND HISTORY *netrw-q* *netrw-listbookmark* Pressing "q" will list the bookmarked directories and directory traversal history (query). (see |netrw-b|, |netrw-B|, |netrw-u|, and |netrw-U|) -IMPROVING DIRECTORY BROWSING *netrw-list-hack* +IMPROVING DIRECTORY BROWSING *netrw-listhack* Especially with the remote directory browser, constantly entering the password is tedious. @@ -1017,6 +1143,23 @@ which is loaded automatically at startup ============================================================================== 10. History *netrw-history* + v56: * LocalBrowse now saves autochdir setting, unsets it, and + restores it before returning. + * using vim's rename() instead of system + local_rename variable + v55: * -bar used with :Explore :Sexplore etc to allow multiple + commands to be separated by |s + * browser listings now use the "nowrap" option + * browser: some unuseful error messages now suppressed + v54: * For backwards compatibility, Explore and Sexplore have been + implemented. In addition, Hexplore and Vexplore commands + are available, too. + * <amatch> used instead of <afile> in the transparency + support (BufReadCmd, FileReadCmd, FileWriteCmd) + * ***netrw*** prepended to various error messages netrw may emit + * g:netrw_port used instead of b:netrw_port for scp + * any leading [:#] is removed from port numbers + v53: * backslashes as well as slashes placed in various patterns + (ex. g:netrw_sort_sequence) to better support Windows v52: * nonumber'ing now set for browsing buffers * when the hiding list hid all files, error messages ensued. Fixed * when browsing, swf is set, but directory is not set, when netrw @@ -1120,4 +1263,4 @@ 11. Credits *netrw-credits* Doug Claar -- modifications to test for success with ftp operation ============================================================================== - vim:tw=78:ts=8:ft=help:norl: + vim:tw=78:ts=8:ft=help:norl:fdm=marker
--- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -4864,7 +4864,6 @@ fcs_reason-variable eval.txt /*fcs_reaso feature-list eval.txt /*feature-list* fetch pi_netrw.txt /*fetch* file-browser-5.2 version5.txt /*file-browser-5.2* -file-explorer pi_netrw.txt /*file-explorer* file-formats editing.txt /*file-formats* file-pattern autocmd.txt /*file-pattern* file-read insert.txt /*file-read* @@ -4980,6 +4979,7 @@ g'a motion.txt /*g'a* g, motion.txt /*g,* g0 motion.txt /*g0* g8 various.txt /*g8* +g:netrw-a pi_netrw.txt /*g:netrw-a* g:netrw_list_cmd pi_netrw.txt /*g:netrw_list_cmd* g:netrw_list_hide pi_netrw.txt /*g:netrw_list_hide* g:netrw_rm_cmd pi_netrw.txt /*g:netrw_rm_cmd* @@ -5162,7 +5162,6 @@ hebrew hebrew.txt /*hebrew* hebrew.txt hebrew.txt /*hebrew.txt* help various.txt /*help* help-context help.txt /*help-context* -help-tags tags 1 help-translated various.txt /*help-translated* help-xterm-window various.txt /*help-xterm-window* help.txt help.txt /*help.txt* @@ -5723,6 +5722,7 @@ netbeans-run netbeans.txt /*netbeans-run netbeans-setup netbeans.txt /*netbeans-setup* netbeans-support netbeans.txt /*netbeans-support* netbeans.txt netbeans.txt /*netbeans.txt* +netreadfixup pi_netrw.txt /*netreadfixup* netrw pi_netrw.txt /*netrw* netrw-- pi_netrw.txt /*netrw--* netrw-B pi_netrw.txt /*netrw-B* @@ -5730,13 +5730,13 @@ netrw-D pi_netrw.txt /*netrw-D* netrw-R pi_netrw.txt /*netrw-R* netrw-S pi_netrw.txt /*netrw-S* netrw-U pi_netrw.txt /*netrw-U* -netrw-a pi_netrw.txt /*netrw-a* netrw-activate pi_netrw.txt /*netrw-activate* netrw-b pi_netrw.txt /*netrw-b* netrw-bookmark pi_netrw.txt /*netrw-bookmark* netrw-bookmarks pi_netrw.txt /*netrw-bookmarks* netrw-browse pi_netrw.txt /*netrw-browse* netrw-browse-cmds pi_netrw.txt /*netrw-browse-cmds* +netrw-browse-intro pi_netrw.txt /*netrw-browse-intro* netrw-browse-var pi_netrw.txt /*netrw-browse-var* netrw-c pi_netrw.txt /*netrw-c* netrw-cadaver pi_netrw.txt /*netrw-cadaver* @@ -5749,24 +5749,34 @@ netrw-d pi_netrw.txt /*netrw-d* netrw-debug pi_netrw.txt /*netrw-debug* netrw-delete pi_netrw.txt /*netrw-delete* netrw-dir pi_netrw.txt /*netrw-dir* +netrw-downdir pi_netrw.txt /*netrw-downdir* +netrw-edithide pi_netrw.txt /*netrw-edithide* netrw-ex pi_netrw.txt /*netrw-ex* +netrw-explore pi_netrw.txt /*netrw-explore* +netrw-explore-cmds pi_netrw.txt /*netrw-explore-cmds* netrw-file pi_netrw.txt /*netrw-file* netrw-fixup pi_netrw.txt /*netrw-fixup* netrw-ftp pi_netrw.txt /*netrw-ftp* netrw-h pi_netrw.txt /*netrw-h* +netrw-handler pi_netrw.txt /*netrw-handler* netrw-help pi_netrw.txt /*netrw-help* netrw-history pi_netrw.txt /*netrw-history* +netrw-horiz pi_netrw.txt /*netrw-horiz* netrw-i pi_netrw.txt /*netrw-i* netrw-list pi_netrw.txt /*netrw-list* -netrw-list-hack pi_netrw.txt /*netrw-list-hack* +netrw-listbookmark pi_netrw.txt /*netrw-listbookmark* +netrw-listhack pi_netrw.txt /*netrw-listhack* +netrw-maps pi_netrw.txt /*netrw-maps* netrw-move pi_netrw.txt /*netrw-move* netrw-netrc pi_netrw.txt /*netrw-netrc* netrw-nread pi_netrw.txt /*netrw-nread* netrw-nwrite pi_netrw.txt /*netrw-nwrite* netrw-o pi_netrw.txt /*netrw-o* netrw-options pi_netrw.txt /*netrw-options* +netrw-p pi_netrw.txt /*netrw-p* netrw-passwd pi_netrw.txt /*netrw-passwd* netrw-path pi_netrw.txt /*netrw-path* +netrw-preview pi_netrw.txt /*netrw-preview* netrw-problems pi_netrw.txt /*netrw-problems* netrw-protocol pi_netrw.txt /*netrw-protocol* netrw-q pi_netrw.txt /*netrw-q* @@ -5774,10 +5784,14 @@ netrw-r pi_netrw.txt /*netrw-r* netrw-read pi_netrw.txt /*netrw-read* netrw-ref pi_netrw.txt /*netrw-ref* netrw-rename pi_netrw.txt /*netrw-rename* +netrw-reverse pi_netrw.txt /*netrw-reverse* netrw-s pi_netrw.txt /*netrw-s* +netrw-sort pi_netrw.txt /*netrw-sort* +netrw-sortsequence pi_netrw.txt /*netrw-sortsequence* netrw-transparent pi_netrw.txt /*netrw-transparent* netrw-u pi_netrw.txt /*netrw-u* netrw-uidpass pi_netrw.txt /*netrw-uidpass* +netrw-updir pi_netrw.txt /*netrw-updir* netrw-urls pi_netrw.txt /*netrw-urls* netrw-v pi_netrw.txt /*netrw-v* netrw-var pi_netrw.txt /*netrw-var*
--- a/runtime/plugin/netrw.vim +++ b/runtime/plugin/netrw.vim @@ -1,7 +1,7 @@ " netrw.vim: Handles file transfer and remote directory listing across a network -" last change: Dec 29, 2004 +" Last Change: Aug 01, 2005 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> -" Version: 54 +" Version: 56 " License: Vim License (see vim's :help license) " " But be doers of the Word, and not only hearers, deluding your own selves @@ -10,13 +10,13 @@ " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " --------------------------------------------------------------------- -" Prevent Reloading: {{{1 +" Load Once: {{{1 if exists("g:loaded_netrw") || &cp finish endif -let g:loaded_netrw = "v54" -let s:save_cpo = &cpo +let g:loaded_netrw = "v56" let loaded_explorer = 1 +let s:keepcpo = &cpo set cpo&vim " --------------------------------------------------------------------- @@ -43,7 +43,7 @@ if !exists("g:netrw_list_cmd") " provide a default listing command let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa" else -" call Decho("ssh is not executable, can't do remote directory exploring") +" call Decho("ssh is not executable, can't do remote directory exploring with ssh") let g:netrw_list_cmd= "" endif endif @@ -100,15 +100,6 @@ endif if !exists("g:netrw_local_rmdir") let g:netrw_local_rmdir= "rmdir" endif -if !exists("g:netrw_local_rename") - if g:netrw_cygwin - let g:netrw_local_rename= "mv" - elseif has("win32") || has("win95") || has("win64") || has("win16") - let g:netrw_local_rename= "rename" - elseif has("unix") - let g:netrw_local_rename= "mv" - endif -endif if !exists("g:netrw_local_mkdir") let g:netrw_local_mkdir= "mkdir" endif @@ -216,30 +207,36 @@ endif if version >= 600 augroup FileExplorer au! - au BufEnter * call <SID>LocalBrowse(expand("<afile>")) + au BufEnter * call <SID>LocalBrowse(expand("<amatch>")) augroup END " Network Handler: {{{2 augroup Network au! if has("win32") || has("win95") || has("win64") || has("win16") - au BufReadCmd file://* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e '.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>") + au BufReadCmd file://* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e '.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>") else - au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>") - au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>") + au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>") + au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>") endif - au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>") - au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau FileReadPost ".expand("<afile>") - au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>") - au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau FileWritePost ".expand("<afile>") + au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread 0r ".expand("<amatch>")|exe "silent doau BufReadPost ".expand("<amatch>") + au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread " .expand("<amatch>")|exe "silent doau FileReadPost ".expand("<amatch>") + au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<amatch>")|exe "Nwrite " .expand("<amatch>")|exe "silent doau BufWritePost ".expand("<amatch>") + au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<amatch>")|exe "'[,']Nwrite " .expand("<amatch>")|exe "silent doau FileWritePost ".expand("<amatch>") augroup END endif " ------------------------------------------------------------------------ -" Commands: :Nread, :Nwrite, and :NetUserPass {{{1 -com! -nargs=* Nread call <SID>NetSavePosn()<bar>call <SID>NetRead(<f-args>)<bar>call <SID>NetRestorePosn() -com! -range=% -nargs=* Nwrite call <SID>NetSavePosn()<bar><line1>,<line2>call <SID>NetWrite(<f-args>)<bar>call <SID>NetRestorePosn() +" Commands: :Nread, :Nwrite, :NetUserPass {{{1 +com! -nargs=* Nread call s:NetSavePosn()<bar>call s:NetRead(<f-args>)<bar>call s:NetRestorePosn() +com! -range=% -nargs=* Nwrite call s:NetSavePosn()<bar><line1>,<line2>call s:NetWrite(<f-args>)<bar>call s:NetRestorePosn() com! -nargs=* NetUserPass call NetUserPass(<f-args>) +" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{1 +com! -nargs=? -bar -bang Explore call s:Explore(0,0+<bang>0,<q-args>) +com! -nargs=? -bar -bang Sexplore call s:Explore(1,0+<bang>0,<q-args>) +com! -nargs=? -bar -bang Hexplore call s:Explore(1,2+<bang>0,<q-args>) +com! -nargs=? -bar -bang Vexplore call s:Explore(1,4+<bang>0,<q-args>) + " ------------------------------------------------------------------------ " NetSavePosn: saves position of cursor on screen {{{1 fun! s:NetSavePosn() @@ -352,7 +349,7 @@ fun! s:NetRead(...) let ichoice = ichoice + 1 if ichoice > a:0 if !exists("g:netrw_quiet") - echoerr "Unbalanced string in filename '". wholechoice ."'" + echoerr "***netrw*** Unbalanced string in filename '". wholechoice ."'" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif " call Dret("NetRead") @@ -436,10 +433,10 @@ fun! s:NetRead(...) exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine endif " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) - if getline(1) !~ "^$" && !exists("g:netrw_quiet") + if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' let debugkeep= &debug set debug=msg - echoerr getline(1) + echoerr "***netrw*** ".getline(1) call inputsave()|call input("Press <cr> to continue")|call inputrestore() let &debug= debugkeep endif @@ -485,7 +482,7 @@ fun! s:NetRead(...) if getline(1) !~ "^$" " call Decho("error<".getline(1).">") if !exists("g:netrw_quiet") - echoerr getline(1) + echoerr "***netrw*** ".getline(1) call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif endif @@ -518,7 +515,7 @@ fun! s:NetRead(...) " call Decho("read via http (method #5)") if g:netrw_http_cmd == "" if !exists("g:netrw_quiet") - echoerr "neither wget nor fetch command is available" + echoerr "***netrw*** neither wget nor fetch command is available" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif exit @@ -596,7 +593,7 @@ fun! s:NetRead(...) elseif b:netrw_method == 8 " read with fetch if g:netrw_fetch_cmd == "" if !exists("g:netrw_quiet") - echoerr "fetch command not available" + echoerr "***netrw*** fetch command not available" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif exit @@ -678,17 +675,23 @@ fun! s:NetGetFile(readcmd, fname, method if a:readcmd[0] == '0' " get file into buffer + " record remote filename - let rfile= bufname("%") -" call Decho("edit remotefile<".rfile.">") + let rfile= bufname(".") +" call Decho("remotefile<".rfile.">") +" call Dredir("ls!","starting buffer list") + " rename the current buffer to the temp file (ie. fname) - exe "keepalt file ".fname + keepalt exe "file ".fname +" call Dredir("ls!","after renaming current buffer to <".fname.">") + " edit temporary file e +" call Dredir("ls!","after editing temporary file") + " rename buffer back to remote filename - exe "keepalt file ".rfile - " wipe out the buffer with the temp file name - exe "bwipe ".fname + keepalt exe "file ".rfile +" call Dredir("ls!","renaming buffer back to remote filename<".rfile.">") let line1 = 1 let line2 = line("$") @@ -712,6 +715,8 @@ fun! s:NetGetFile(readcmd, fname, method if exists("*NetReadFixup") " call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")") call NetReadFixup(a:method, line1, line2) +" else " Decho +" call Decho("NetReadFixup() not called, doesn't exist") endif " update the Buffers menu @@ -787,7 +792,7 @@ fun! s:NetWrite(...) range let ichoice = ichoice + 1 if choice > a:0 if !exists("g:netrw_quiet") - echoerr "Unbalanced string in filename '". wholechoice ."'" + echoerr "***netrw*** Unbalanced string in filename '". wholechoice ."'" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif " call Dret("NetWrite") @@ -858,7 +863,7 @@ fun! s:NetWrite(...) range " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" if !exists("g:netrw_quiet") - echoerr getline(1) + echoerr "***netrw*** ".getline(1) call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif let mod=1 @@ -898,7 +903,7 @@ fun! s:NetWrite(...) range " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" if !exists("g:netrw_quiet") - echoerr getline(1) + echoerr "***netrw*** ".getline(1) call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif let mod=1 @@ -927,7 +932,7 @@ fun! s:NetWrite(...) range " http: NetWrite Method #5 elseif b:netrw_method == 5 if !exists("g:netrw_quiet") - echoerr "***warning*** currently <netrw.vim> does not support writing using http:" + echoerr "***netrw*** currently <netrw.vim> does not support writing using http:" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif @@ -1010,8 +1015,10 @@ fun! s:NetWrite(...) range " call Dret("NetWrite") endfun -" ------------------------------------------------------------------------ -" Browsing Support For Remote Directories And Files: {{{1 +" =========================================== +" Remote Directory Browsing Support: {{{1 +" =========================================== + " NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2 " of the contents of a remote directory. It is assumed that the " g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted @@ -1040,7 +1047,7 @@ fun! <SID>NetBrowse(dirname) endif " make this buffer modifiable - setlocal ma + setlocal ma nonu nowrap " analyze a:dirname and g:netrw_list_cmd let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' @@ -1048,7 +1055,7 @@ fun! <SID>NetBrowse(dirname) " call Decho("dirpat<".dirpat.">") if dirname !~ dirpat if !exists("g:netrw_quiet") - echoerr "NetBrowse: I don't understand your dirname<".dirname.">" + echoerr "***netrw*** netrw doesn't understand your dirname<".dirname.">" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif " call Dret("NetBrowse : badly formatted dirname<".dirname.">") @@ -1080,7 +1087,7 @@ fun! <SID>NetBrowse(dirname) " optionally sort by time (-t) or by size (-S) if listcmd == "dir" && g:netrw_sort_by =~ "^[ts]" - echoerr "***warning*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)" + echoerr "***netrw*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)" call inputsave()|call input("Press <cr> to continue")|call inputrestore() else if g:netrw_sort_by =~ "^t" @@ -1185,7 +1192,7 @@ fun! <SID>NetBrowse(dirname) exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>' exe 'vnoremap <buffer> <silent> R :call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>' nnoremap <buffer> ? :he netrw-browse-cmds<cr> - setlocal ma nonu + setlocal ma nonu nowrap " Set up the banner " call Decho("set up the banner: sortby<".g:netrw_sort_by."> method<".method.">") @@ -1251,9 +1258,9 @@ fun! <SID>NetBrowse(dirname) keepjumps norm! 0 " more cleanup - exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' - exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#' - exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#' + exe 'keepjumps silent! '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' + exe "keepjumps silent! ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e' + exe "keepjumps silent! ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e' endif else @@ -1307,7 +1314,11 @@ fun! <SID>NetBrowse(dirname) if line("$") >= s:netrw_bannercnt if g:netrw_sort_by =~ "^n" call s:SetSort() - exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' + if v:version < 700 + exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' + else + exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' + endif exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e' endif if g:netrw_longlist @@ -1459,7 +1470,7 @@ fun! <SID>NetBrowseRm(usrhost,path) rang " call Decho("returned=".ret." errcode=".v:shell_error) if v:shell_error != 0 && !exists("g:netrw_quiet") - echoerr "unable to remove directory<".rmfile."> -- is it empty?" + echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif endif @@ -1669,14 +1680,14 @@ fun! NetBrowseFtpCmd(path,cmd) " cleanup for Windows if has("win32") || has("win95") || has("win64") || has("win16") - keepjumps silent! %s/\r$// + keepjumps silent!! %s/\r$//e endif if a:cmd == "dir" " infer directory/link based on the file permission string - keepjumps silent g/d\%([-r][-w][-x]\)\{3}/s@$@/@ - keepjumps silent g/l\%([-r][-w][-x]\)\{3}/s/$/@/ + keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@ + keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/ if !g:netrw_longlist - exe "keepjumps silent ".curline.',$s/^\%(\S\+\s\+\)\{8}//' + exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e' endif endif @@ -1782,7 +1793,7 @@ fun! <SID>NetLongList(mode) endfun " --------------------------------------------------------------------- -" NetSaveWordPosn: used by the "s" command in both remote and local +" NetSaveWordPosn: used by the "s" command in both remote and local {{{2 " browsing. Along with NetRestoreWordPosn(), it keeps the cursor on " the same word even though the sorting has changed its order of appearance. fun! s:NetSaveWordPosn() @@ -1792,7 +1803,7 @@ fun! s:NetSaveWordPosn() endfun " --------------------------------------------------------------------- -" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above +" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above {{{2 fun! s:NetRestoreWordPosn() " call Dfunc("NetRestoreWordPosn()") silent! call search(s:netrw_saveword,'w') @@ -1800,7 +1811,7 @@ fun! s:NetRestoreWordPosn() endfun " --------------------------------------------------------------------- -" NetMakeDir: this function makes a directory (both local and remote) +" NetMakeDir: this function makes a directory (both local and remote) {{{2 fun! <SID>NetMakeDir(usrhost) " call Dfunc("NetMakeDir(usrhost<".a:usrhost.">)") @@ -1825,7 +1836,7 @@ fun! <SID>NetMakeDir(usrhost) " call Decho("fullnewdir<".fullnewdir.">") if isdirectory(fullnewdir) if !exists("g:netrw_quiet") - echoerr "***warning*** <".newdirname."> is already a directory!" + echoerr "***netrw*** <".newdirname."> is already a directory!" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif " call Dret("NetMakeDir : directory<".newdirname."> exists previously") @@ -1833,14 +1844,25 @@ fun! <SID>NetMakeDir(usrhost) endif if filereadable(fullnewdir) if !exists("g:netrw_quiet") - echoerr "***warning*** <".newdirname."> is already a file!" + echoerr "***netrw*** <".newdirname."> is already a file!" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif " call Dret("NetMakeDir : file<".newdirname."> exists previously") return endif -" call Decho("exe silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"') - exe "silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"' + + " requested new local directory is neither a pre-existing file or + " directory, so make it! + if exists("*mkdir") + call mkdir(fullnewdir,"p") + else + let netrw_origdir= s:NetGetcwd(1) + exe 'cd '.b:netrw_curdir +" call Decho("netrw_origdir<".netrw_origdir."> b:netrw_curdir<".b:netrw_curdir.">") +" call Decho("exe silent! !".g:netrw_local_mkdir.' "'.newdirname.'"') + exe "silent! !".g:netrw_local_mkdir.' "'.newdirname.'"' + if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif + endif if v:shell_error == 0 " refresh listing @@ -1852,7 +1874,7 @@ fun! <SID>NetMakeDir(usrhost) exe "norm! ".hline."G0z\<CR>" exe linenum elseif !exists("g:netrw_quiet") - echoerr "***warning*** unable to make directory<".newdirname.">" + echoerr "***netrw*** unable to make directory<".newdirname.">" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif redraw! @@ -1872,7 +1894,7 @@ fun! <SID>NetMakeDir(usrhost) exe "norm! ".hline."G0z\<CR>" exe linenum elseif !exists("g:netrw_quiet") - echoerr "***warning*** unable to make directory<".newdirname.">" + echoerr "***netrw*** unable to make directory<".newdirname.">" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif redraw! @@ -1882,7 +1904,7 @@ fun! <SID>NetMakeDir(usrhost) endfun " --------------------------------------------------------------------- -" NetBookmarkDir: +" NetBookmarkDir: {{{2 " 0: bookmark the current directory " 1: change to the bookmarked directory fun! <SID>NetBookmarkDir(chg,curdir) @@ -1974,8 +1996,9 @@ fun! <SID>NetBookmarkDir(chg,curdir) " call Dret("NetBookmarkDir") endfun -" --------------------------------------------------------------------- -" Browsing Support For Local Directories And Files: {{{1 +" ========================================== +" Local Directory Browsing Support: {{{1 +" ========================================== " --------------------------------------------------------------------- " LocalBrowse: supports local file/directory browsing {{{2 @@ -1995,107 +2018,43 @@ fun! <SID>LocalBrowse(dirname) if v:version < 603 if !exists("g:netrw_quiet") - echoerr "vim version<".v:version."> too old for browsing with netrw" + echoerr "***netrw*** vim version<".v:version."> too old for browsing with netrw" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif " call Dret("LocalBrowse : vim version<".v:version."> too old") return endif + " record autochdir setting and then insure its unset (tnx to David Fishburn) + let keep_autochdir= &autochdir + set noautochdir + " record and change current directory - let netrw_origdir= s:NetGetcwd(1) - try - cd - - let netrw_altdir= s:NetGetcwd(1) - cd - - catch - let netrw_altdir= '' - endtry - exe 'cd '.escape(substitute(a:dirname,'\\','/','ge'),s:netrw_cd_escape) -" call Decho("dirname<".a:dirname."> buf#".bufnr("%")." winnr=".winnr()) + let b:netrw_curdir= substitute(a:dirname,'\\','/','ge') + if b:netrw_curdir =~ '[/\\]$' + let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e') + endif +" call Decho("b:netrw_curdir<".b:netrw_curdir.">") + " make netrw's idea of the current directory vim's if the user wishes + if g:netrw_keepdir +" call Decho("change directory: cd ".b:netrw_curdir) + exe 'cd '.b:netrw_curdir + endif + + " change the name of the buffer to reflect the b:netrw_curdir + exe 'silent file '.escape(b:netrw_curdir,s:netrw_cd_escape) " make this buffer modifiable setlocal ma - " disable 'autochdir', it breaks things - set noautochdir - " --------------------------- " Perform Directory Listing: -" call Decho("Perform directory listing...") - " set up new buffer and map - " dirname : current working directory, no escapes, has trailing / - " dirnamens : dirname, but with no trailing slash - " dirnamenr : buffer number containing dirnamens - " dirnamebuf: buffer's idea of dirname, with all \ -> / - let dirname = s:NetGetcwd(0) - let dirnamens = substitute(dirname,'[\/]$','','e') - let dirnamenr = bufnr(dirnamens.'$') - let dirnamebuf = substitute(bufname(dirnamenr),'\\','/','ge') -" call Decho("dirnamenr= bufnr(".dirnamens.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)) - - if dirnamenr != 0 && dirnamebuf != dirnamens - " try keeping the trailing slash - let dirnamenr = bufnr(dirname.'$') -" call Decho("dirnamenr= bufnr(".dirname.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)." (retry with /)") - endif - - if dirnamenr != -1 - " buffer already exists (hidden), so switch to it! -" call Decho("buffer already exists: dirnamenr=".dirnamenr." dirname<".dirname."> pre-exists") -" call Dredir("ls!") - exe "b ".dirnamenr - exe 'silent! cd '.escape(dirname,s:netrw_cd_escape) -" call Decho("changed directory to<".dirname.">") - if a:dirname != "." && line("$") >= 5 && exists("b:netrw_curdir") - if b:netrw_curdir == dirname -" call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr) - if g:netrw_keepdir - if netrw_altdir != '' - exe 'keepjumps cd '.netrw_altdir - endif - exe 'keepjumps cd '.netrw_origdir - endif - return - endif - endif -" call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")") -" call Decho("buffer name<".bufname("%")."> dirname<".dirname.">") - setlocal ma - keepjumps %d - let curdir= substitute(substitute(expand("%"),'\\','/','ge'),'[^/]$','&/','e') - if curdir != dirname - " set standard browser options on buffer - setlocal bt=nofile bh=hide nobl noswf - exe 'silent file '.escape(dirname,s:netrw_cd_escape) -" call Decho("errmsg1<".v:errmsg.">") -" call Decho("renamed buffer to<".escape(dirname,s:netrw_cd_escape).">") -" call Decho("yielding actual bufname<".bufname("%").">") - endif - else -" call Decho("generate new buffer named<".escape(dirname,' #').">") - silent! enew! - " set standard browser options on buffer - setlocal bt=nofile bh=hide nobl noswf nonu - exe 'silent file '.substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e') -" call Decho("errmsg2<".v:errmsg.">") -" call Decho("renamed buffer to<".substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e').">") -" call Decho("yielding actual bufname<".bufname("%").">") - endif - exe "setlocal ts=".g:netrw_maxfilenamelen - - if bufname("#") == "" && bufnr("#") != -1 - " the file command produces a lot of [No File] buffers -" call Decho("wiping out nofile buffer#".bufnr("#")) - exe bufnr("#")."bwipe" - endif " save current directory on directory history list - call <SID>NetBookmarkDir(3,s:NetGetcwd(0)) + call <SID>NetBookmarkDir(3,b:netrw_curdir) " set up all the maps " call Decho("Setting up local browser maps") - let b:netrw_curdir= s:NetGetcwd(1) nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr> @@ -2131,7 +2090,7 @@ fun! <SID>LocalBrowse(dirname) keepjumps put ='\" ============================================================================' keepjumps 1d keepjumps put ='\" Directory Listing (netrw '.g:loaded_netrw.')' - keepjumps put ='\" '.dirname + keepjumps put ='\" '.b:netrw_curdir let s:netrw_bannercnt= 3 let sortby= g:netrw_sort_by @@ -2171,7 +2130,7 @@ fun! <SID>LocalBrowse(dirname) " call Decho("bannercnt=".s:netrw_bannercnt) " generate the requested directory listing - call LocalBrowseList(dirname) + call LocalBrowseList() " manipulate the directory listing (hide, sort) setlocal ft=netrwlist @@ -2182,10 +2141,18 @@ fun! <SID>LocalBrowse(dirname) if line("$") >= s:netrw_bannercnt if g:netrw_sort_by =~ "^n" call s:SetSort() - exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' + if v:version < 700 + exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' + else + exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' + endif exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e' else - exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' + if v:version < 700 + exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' + else + exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' + endif exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{-}\///e' endif endif @@ -2193,30 +2160,25 @@ fun! <SID>LocalBrowse(dirname) exe s:netrw_bannercnt setlocal noma nomod nonu - if g:netrw_keepdir - if netrw_altdir != '' - exe 'keepjumps cd '.netrw_altdir - endif - exe 'keepjumps cd '.netrw_origdir - endif + let &autochdir= keep_autochdir " call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">") endfun " --------------------------------------------------------------------- " LocalBrowseList: does the job of "ls" for local directories {{{2 -fun! LocalBrowseList(dirname) -" call Dfunc("LocalBrowseList(dirname<".a:dirname.">)") +fun! LocalBrowseList() +" call Dfunc("LocalBrowseList() b:netrw_curdir<".b:netrw_curdir.">") " get the list of files contained in the current directory - let dirname = escape(a:dirname,s:netrw_glob_escape) - let dirnamelen = strlen(a:dirname) - let filelist = glob(dirname."*") + let dirname = escape(b:netrw_curdir,s:netrw_glob_escape) + let dirnamelen = strlen(b:netrw_curdir) + let filelist = glob(dirname."/*") " call Decho("glob(dirname<".dirname.">,*)=".filelist) if filelist != "" let filelist= filelist."\n" endif - let filelist= filelist.glob(dirname.".*") + let filelist= filelist.glob(dirname."/.*") " call Decho("glob(dirname<".dirname.">,.*)=".glob(dirname.".*")) " if the directory name includes a "$", and possibly other characters, @@ -2226,13 +2188,13 @@ fun! LocalBrowseList(dirname) if filelist == "" let filelist= dirname."." else - let filelist= filelist."\n".a:dirname."." + let filelist= filelist."\n".b:netrw_curdir."." endif " call Decho("filelist<".filelist.">") endif if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)' " call Decho("forcibly tacking on ..") - let filelist= filelist."\n".a:dirname.".." + let filelist= filelist."\n".b:netrw_curdir.".." " call Decho("filelist<".filelist.">") endif let filelist= substitute(filelist,'\n\{2,}','\n','ge') @@ -2243,41 +2205,47 @@ fun! LocalBrowseList(dirname) while filelist != "" if filelist =~ '\n' - let file = substitute(filelist,'\n.*$','','e') + let filename = substitute(filelist,'\n.*$','','e') let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e') else - let file = filelist + let filename = filelist let filelist = "" endif - let pfile= file - if isdirectory(file) - let pfile= file."/" + let pfile= filename + if isdirectory(filename) + let pfile= filename."/" endif + let pfile= substitute(pfile,'^/','','e') if pfile =~ '//$' let pfile= substitute(pfile,'//$','/','e') endif let pfile= strpart(pfile,dirnamelen) +" call Decho(" ") +" call Decho("filename<".filename.">") +" call Decho("pfile <".pfile.">") + if g:netrw_longlist - let sz = getfsize(file) + let sz = getfsize(filename) let fsz = strpart(" ",1,15-strlen(sz)).sz - let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(file)) + let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) +" call Decho("sz=".sz." fsz=".fsz) endif if g:netrw_sort_by =~ "^t" " sort by time (handles time up to 1 quintillion seconds, US) -" call Decho("getftime(".file.")=".getftime(file)) - let t = getftime(file) +" call Decho("getftime(".filename.")=".getftime(filename)) + let t = getftime(filename) let ft = strpart("000000000000000000",1,18-strlen(t)).t -" call Decho("exe keepjumps put ='".ft.'/'.file."'") +" call Decho("exe keepjumps put ='".ft.'/'.filename."'") let ftpfile= ft.'/'.pfile keepjumps put=ftpfile elseif g:netrw_sort_by =~ "^s" " sort by size (handles file sizes up to 1 quintillion bytes, US) -" call Decho("getfsize(".file.")=".getfsize(file)) - let sz = getfsize(file) +" call Decho("getfsize(".filename.")=".getfsize(filename)) + let sz = getfsize(filename) let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz -" call Decho("exe keepjumps put ='".fsz.'/'.file."'") +" call Decho("exe keepjumps put ='".fsz.'/'.filename."'") let fszpfile= fsz.'/'.pfile keepjumps put =fszpfile @@ -2287,6 +2255,7 @@ fun! LocalBrowseList(dirname) keepjumps put=pfile endif endwhile + setlocal ts=32 " call Dret("LocalBrowseList") endfun @@ -2305,6 +2274,8 @@ fun! <SID>LocalBrowseChgDir(dirname,newd " is removing the "/". Bad idea, so I have to put it back. let dirname= dirname.'/' " call Decho("adjusting dirname<".dirname.">") + setlocal ma + %d endif if newdir !~ '[\/]$' @@ -2313,24 +2284,28 @@ fun! <SID>LocalBrowseChgDir(dirname,newd " call Decho("handling a file: dirname<".dirname.">") " this lets NetBrowseX avoid the edit if a:0 < 1 - exe "e ".escape(dirname,s:netrw_cd_escape) +" call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape.">") +" call Decho("about to edit<".escape(dirname,s:netrw_cd_escape).">") + exe "e! ".escape(dirname,s:netrw_cd_escape) endif elseif newdir == './' " refresh the directory list " call Decho("refresh directory listing") - setlocal ma - %d elseif newdir == '../' " go up one directory let dirname= substitute(dirname,'^\(.*/\)\([^/]\+[\/]$\)','\1','e') " call Decho("go up one dir: dirname<".dirname.">") + setlocal ma + %d else " go down one directory let dirname= dirname.newdir " call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">") + setlocal ma + %d endif " call Dret("LocalBrowseChgDir <".dirname.">") @@ -2364,7 +2339,7 @@ fun! <SID>LocalBrowseRm(path) range endif norm! 0 - let rmfile= a:path.curword + let rmfile= a:path."/".curword " call Decho("rmfile<".rmfile.">") if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$') @@ -2417,11 +2392,11 @@ fun! <SID>LocalBrowseRm(path) range " call Decho("3rd attempt to remove directory<".rmfile.">") call system("rm ".rmfile) if v:shell_error != 0 && !exists("g:netrw_quiet") - echoerr "unable to remove directory<".rmfile."> -- is it empty?" + echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif elseif !exists("g:netrw_quiet") - echoerr "unable to remove directory<".rmfile."> -- is it empty?" + echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif endif @@ -2475,8 +2450,8 @@ fun! <SID>LocalBrowseRename(path) range let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e')) call inputrestore() - let ret= system(g:netrw_local_rename.' "'.oldname.'" "'.newname.'"') -" call Decho("executing system(".g:netrw_local_rename." ".oldname." ".newname) + let ret= rename(oldname,newname) +" call Decho("renaming <".oldname."> to <".newname.">") let ctr= ctr + 1 endwhile @@ -2497,17 +2472,55 @@ fun! <SID>LocalPreview(path) range if !isdirectory(a:path) exe "pedit ".a:path elseif !exists("g:netrw_quiet") - echoerr "sorry, cannot preview a directory such as <".a:path.">" + echoerr "***netrw*** sorry, cannot preview a directory such as <".a:path.">" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif elseif !exists("g:netrw_quiet") - echoerr "sorry, to preview your vim needs the quickfix feature compiled in" + echoerr "***netrw*** sorry, to preview your vim needs the quickfix feature compiled in" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif " call Dret("LocalPreview") endfun " --------------------------------------------------------------------- +" 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 +fun! s:Explore(dosplit,style,...) +" call Dfunc("Explore(dosplit=".a:dosplit." style=".a:style.")") + + " if dosplit or file has been modified + if a:dosplit || &modified + if a:style == 0 " Explore, Sexplore + exe g:netrw_winsize."wincmd s" + elseif a:style == 1 "Explore!, Sexplore! + exe g:netrw_winsize."wincmd v" + elseif a:style == 2 " Hexplore + exe "bel ".g:netrw_winsize."wincmd s" + elseif a:style == 3 " Hexplore! + exe "abo ".g:netrw_winsize."wincmd s" + elseif a:style == 4 " Vexplore + exe "lefta ".g:netrw_winsize."wincmd v" + elseif a:style == 5 " Vexplore! + exe "rightb ".g:netrw_winsize."wincmd v" + endif + endif + norm! 0 + + if a:1 == "" + let newdir= substitute(expand("%:p"),'^\(.*\)[/\\][^/\\]*$','\1','e') + else + let newdir= a:1 + endif +" call Decho("newdir<".newdir.">") + call s:LocalBrowse(newdir) + +" call Dret("Explore") +endfun + +" --------------------------------------------------------------------- " NetGetcwd: get the current directory. {{{2 " Change backslashes to forward slashes, if any. " If doesc is true, escape certain troublesome characters @@ -2559,7 +2572,7 @@ fun! s:NetMethod(choice) " globals: met let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$' let mf = '^\(\S\+\)\s\+\(\S\+\)$' let ftpurm = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$' - let rcpurm = '^rcp://\(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$' + let rcpurm = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$' let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$' let scpurm = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$' let httpurm = '^http://\([^/]\{-}\)\(/.*\)\=$' @@ -2573,10 +2586,10 @@ fun! s:NetMethod(choice) " globals: met " rcp://user@hostname/...path-to-file if match(a:choice,rcpurm) == 0 " call Decho("rcp://...") - let b:netrw_method = 1 - let userid = substitute(a:choice,rcpurm,'\2',"") - let g:netrw_machine= substitute(a:choice,rcpurm,'\3',"") - let b:netrw_fname = substitute(a:choice,rcpurm,'\4',"") + let b:netrw_method = 1 + let userid = substitute(a:choice,rcpurm,'\1',"") + let g:netrw_machine = substitute(a:choice,rcpurm,'\2',"") + let b:netrw_fname = substitute(a:choice,rcpurm,'\3',"") if userid != "" let g:netrw_uid= userid endif @@ -2585,9 +2598,9 @@ fun! s:NetMethod(choice) " globals: met elseif match(a:choice,scpurm) == 0 " call Decho("scp://...") let b:netrw_method = 4 - let g:netrw_machine= substitute(a:choice,scpurm,'\1',"") - let g:netrw_port = substitute(a:choice,scpurm,'\2',"") - let b:netrw_fname = substitute(a:choice,scpurm,'\3',"") + let g:netrw_machine = substitute(a:choice,scpurm,'\1',"") + let g:netrw_port = substitute(a:choice,scpurm,'\2',"") + let b:netrw_fname = substitute(a:choice,scpurm,'\3',"") " http://user@hostname/...path-to-file elseif match(a:choice,httpurm) == 0 @@ -2699,7 +2712,7 @@ fun! s:NetMethod(choice) " globals: met else if !exists("g:netrw_quiet") - echoerr "***error*** cannot determine method" + echoerr "***netrw*** cannot determine method" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif let b:netrw_method = -1 @@ -2840,9 +2853,10 @@ endif " --------------------------------------------------------------------- " NetSort: Piet Delport's BISort2() function, modified to take a range {{{1 -fun! <SID>NetSort() range -" call Dfunc("NetSort()") - +if v:version < 700 + fun! <SID>NetSort() range +" " call Dfunc("NetSort()") + let i = a:firstline + 1 while i <= a:lastline " find insertion point via binary search @@ -2850,36 +2864,37 @@ fun! <SID>NetSort() range let lo = a:firstline let hi = i while lo < hi - let mid = (lo + hi) / 2 - let mid_val = getline(mid) - if g:netrw_sort_direction =~ '^n' - " normal sorting order - if i_val < mid_val - let hi = mid - else - let lo = mid + 1 - if i_val == mid_val | break | endif - endif + let mid = (lo + hi) / 2 + let mid_val = getline(mid) + if g:netrw_sort_direction =~ '^n' + " normal sorting order + if i_val < mid_val + let hi = mid else - " reverse sorting order - if i_val > mid_val - let hi = mid - else - let lo = mid + 1 - if i_val == mid_val | break | endif - endif + let lo = mid + 1 + if i_val == mid_val | break | endif endif + else + " reverse sorting order + if i_val > mid_val + let hi = mid + else + let lo = mid + 1 + if i_val == mid_val | break | endif + endif + endif endwhile " do insert if lo < i - exe 'keepjumps '.i.'d_' - keepjumps call append(lo - 1, i_val) + exe 'keepjumps '.i.'d_' + keepjumps call append(lo - 1, i_val) endif let i = i + 1 endwhile - -" call Dret("NetSort") -endfun + +" " call Dret("NetSort") + endfun +endif " --------------------------------------------------------------------- " SetSort: sets up the sort based on the g:netrw_sort_sequence {{{1 @@ -2938,8 +2953,8 @@ fun! <SID>SetSort() " call Dret("SetSort") endfun +let &cpo= s:keepcpo +unlet s:keepcpo " ------------------------------------------------------------------------ -" Restore {{{1 -let &cpo= s:save_cpo -unlet s:save_cpo +" Modelines: {{{1 " vim:ts=8 fdm=marker
--- a/src/misc2.c +++ b/src/misc2.c @@ -1384,7 +1384,7 @@ vim_strncpy(to, from, len) /* * Isolate one part of a string option where parts are separated with * "sep_chars". - * The part is copied into buf[maxlen]. + * The part is copied into "buf[maxlen]". * "*option" is advanced to the next part. * The length is returned. */
--- a/src/version.h +++ b/src/version.h @@ -36,5 +36,5 @@ #define VIM_VERSION_NODOT "vim70aa" #define VIM_VERSION_SHORT "7.0aa" #define VIM_VERSION_MEDIUM "7.0aa ALPHA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 31)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 31, compiled " +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 1)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 1, compiled "