From: Bram Moolenaar Date: Mon, 1 Aug 2005 21:58:57 +0000 (+0000) Subject: updated for version 7.0122 X-Git-Tag: v7.0122~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=83bab71b3cc435eb5551167d02949dbfc90c1bcd;p=vim updated for version 7.0122 --- diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index be0b0ec3b..b7896be3e 100644 --- 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. diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index 8389fe5a3..087a0bfdb 100644 --- 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-line* *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. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index b15d7c40f..3ad65d181 100644 --- 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 short description can be found at |Q_op|. - 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. diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt index 3d48b7728..f1144a5f5 100644 --- 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 variable g:netrw_scp_cmd, 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 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 the <.netrc> file on its own, however. 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 untrusted servers, one may pull 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 itself: ============================================================================== 7. Directory Browser *netrw-browse* *netrw-dir* *netrw-list* *netrw-help* - ?..........Help....................................|netrw-help| - .......Browsing................................|netrw-cr| - ......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| - ......Edit File/Directory Hiding List.........|netrw-h| - i..........Long Listing............................|netrw-i| - ......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| + .............Browsing...................................|netrw-cr| + ............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| + ............Edit File/Directory Hiding List............|netrw-h| + i................Long Listing...............................|netrw-i| + ............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-browse-var* < 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 interpreted as a request to list a directory: 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 () or @@ -677,6 +793,7 @@ Hitting the (the return key) will select the file or directory. 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 at that point will abort the making of the 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 directories by selecting them with 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 map. As an example, to hide files +which begin with a ".", one may use the 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 "" 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 directories satisfying these patterns will 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 . 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 bottom, have 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 (either manually or in your <.vimrc>) 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; by default, its ten). With the 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 right, have 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 of the bookmarks. See |netrw-b| 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 (assuming :set nocp). ============================================================================== 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. + * used instead of 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 @@ which is loaded automatically at startup (assuming :set nocp). 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 diff --git a/runtime/doc/tags b/runtime/doc/tags index 580a6f171..20ed1bf82 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -4864,7 +4864,6 @@ fcs_reason-variable eval.txt /*fcs_reason-variable* 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* diff --git a/runtime/plugin/netrw.vim b/runtime/plugin/netrw.vim index f1da4b072..52220120a 100644 --- 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 -" 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 LocalBrowse(expand("")) + au BufEnter * call LocalBrowse(expand("")) 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("")|exe 'e '.substitute(expand(""),"file:/*","","")|exe "silent doau BufReadPost ".expand("") + au BufReadCmd file://* exe "silent doau BufReadPre ".expand("")|exe 'e '.substitute(expand(""),"file:/*","","")|exe "silent doau BufReadPost ".expand("") else - au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("")|exe 'e /'.substitute(expand(""),"file:/*","","")|exe "silent doau BufReadPost ".expand("") - au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("")|exe 'e /'.substitute(expand(""),"file:/*","","")|exe "silent doau BufReadPost ".expand("") + au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("")|exe 'e /'.substitute(expand(""),"file:/*","","")|exe "silent doau BufReadPost ".expand("") + au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("")|exe 'e /'.substitute(expand(""),"file:/*","","")|exe "silent doau BufReadPost ".expand("") endif - au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("")|exe "Nread 0r ".expand("")|exe "silent doau BufReadPost ".expand("") - au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("")|exe "Nread " .expand("")|exe "silent doau FileReadPost ".expand("") - au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("")|exe "Nwrite " .expand("")|exe "silent doau BufWritePost ".expand("") - au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("")|exe "'[,']Nwrite " .expand("")|exe "silent doau FileWritePost ".expand("") + au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("")|exe "Nread 0r ".expand("")|exe "silent doau BufReadPost ".expand("") + au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("")|exe "Nread " .expand("")|exe "silent doau FileReadPost ".expand("") + au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("")|exe "Nwrite " .expand("")|exe "silent doau BufWritePost ".expand("") + au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("")|exe "'[,']Nwrite " .expand("")|exe "silent doau FileWritePost ".expand("") augroup END endif " ------------------------------------------------------------------------ -" Commands: :Nread, :Nwrite, and :NetUserPass {{{1 -com! -nargs=* Nread call NetSavePosn()call NetRead()call NetRestorePosn() -com! -range=% -nargs=* Nwrite call NetSavePosn(),call NetWrite()call NetRestorePosn() +" Commands: :Nread, :Nwrite, :NetUserPass {{{1 +com! -nargs=* Nread call s:NetSavePosn()call s:NetRead()call s:NetRestorePosn() +com! -range=% -nargs=* Nwrite call s:NetSavePosn(),call s:NetWrite()call s:NetRestorePosn() com! -nargs=* NetUserPass call NetUserPass() +" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{1 +com! -nargs=? -bar -bang Explore call s:Explore(0,0+0,) +com! -nargs=? -bar -bang Sexplore call s:Explore(1,0+0,) +com! -nargs=? -bar -bang Hexplore call s:Explore(1,2+0,) +com! -nargs=? -bar -bang Vexplore call s:Explore(1,4+0,) + " ------------------------------------------------------------------------ " 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 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 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 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 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 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 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 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 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 does not support writing using http:" + echoerr "***netrw*** currently does not support writing using http:" call inputsave()|call input("Press 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! 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! 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 to continue")|call inputrestore() endif " call Dret("NetBrowse : badly formatted dirname<".dirname.">") @@ -1080,7 +1087,7 @@ fun! 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 to continue")|call inputrestore() else if g:netrw_sort_by =~ "^t" @@ -1185,7 +1192,7 @@ fun! NetBrowse(dirname) exe 'nnoremap R :exe "norm! 0"call NetBrowseRename("'.user.machine.'","'.path.'")' exe 'vnoremap R :call NetBrowseRename("'.user.machine.'","'.path.'")' nnoremap ? :he netrw-browse-cmds - 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! 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! 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! NetBrowseRm(usrhost,path) range " 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 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! 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! NetMakeDir(usrhost) " call Dfunc("NetMakeDir(usrhost<".a:usrhost.">)") @@ -1825,7 +1836,7 @@ fun! 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 to continue")|call inputrestore() endif " call Dret("NetMakeDir : directory<".newdirname."> exists previously") @@ -1833,14 +1844,25 @@ fun! 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 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! NetMakeDir(usrhost) exe "norm! ".hline."G0z\" 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 to continue")|call inputrestore() endif redraw! @@ -1872,7 +1894,7 @@ fun! NetMakeDir(usrhost) exe "norm! ".hline."G0z\" 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 to continue")|call inputrestore() endif redraw! @@ -1882,7 +1904,7 @@ fun! NetMakeDir(usrhost) endfun " --------------------------------------------------------------------- -" NetBookmarkDir: +" NetBookmarkDir: {{{2 " 0: bookmark the current directory " 1: change to the bookmarked directory fun! NetBookmarkDir(chg,curdir) @@ -1974,8 +1996,9 @@ fun! 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! 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 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 NetBookmarkDir(3,s:NetGetcwd(0)) + call 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 :exe "norm! 0"call LocalBrowse(LocalBrowseChgDir(b:netrw_curdir,NetGetWord())) nnoremap :exe "norm! 0"call LocalBrowse(LocalBrowseChgDir(b:netrw_curdir,'./')) nnoremap - :exe "norm! 0"call LocalBrowse(LocalBrowseChgDir(b:netrw_curdir,'../')) @@ -2131,7 +2090,7 @@ fun! 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! 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! 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! 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! LocalBrowseChgDir(dirname,newdir,...) " 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! LocalBrowseChgDir(dirname,newdir,...) " 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! 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! 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 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 to continue")|call inputrestore() endif endif @@ -2475,8 +2450,8 @@ fun! 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,16 +2472,54 @@ fun! 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 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 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. @@ -2559,7 +2572,7 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname 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: method machine id passwd fname " 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: method machine id passwd fname 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: method machine id passwd fname else if !exists("g:netrw_quiet") - echoerr "***error*** cannot determine method" + echoerr "***netrw*** cannot determine method" call inputsave()|call input("Press 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! NetSort() range -" call Dfunc("NetSort()") - +if v:version < 700 + fun! 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! 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! 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 diff --git a/src/misc2.c b/src/misc2.c index d677b1b4c..93b3bbe56 100644 --- 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. */ diff --git a/src/version.h b/src/version.h index cd5bf8b54..2c5193ec2 100644 --- 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 "