From 35e07a24a329fdd7f35640843c9bc983185ca04e Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 31 Oct 2024 18:59:44 +0800 Subject: vim-patch:8b0fa7a: runtime(netrw): make :Launch/Open autoloadable fixes: vim/vim#15959 closes: vim/vim#15962 https://github.com/vim/vim/commit/8b0fa7a565d8aec306e5755307d182fa7d81e65f Co-authored-by: Christian Brabandt Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com> --- runtime/doc/pi_netrw.txt | 95 ++++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 44 deletions(-) (limited to 'runtime/doc') diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt index ed95cbb851..ccc899cd6d 100644 --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -1465,7 +1465,6 @@ With either form of the command, netrw will first ask for confirmation that the removal is in fact what you want to do. If netrw doesn't have permission to remove a file, it will issue an error message. - *netrw-gx* *Open* *Launch* CUSTOMIZING BROWSING WITH A SPECIAL HANDLER *netrw-x* *netrw-handler* {{{2 Certain files, such as html, gif, jpeg, (word/office) doc, etc, files, are @@ -1475,7 +1474,7 @@ operating system). Netrw allows one to invoke such special handlers by: * hitting gx with the cursor atop the file path or alternatively x in a netrw buffer; the former can be disabled by defining the |g:netrw_nogx| variable - * when in command line, typing :Open + * when in command line, typing :Open , see |:Open| below. One may also use visual mode (see |visual-start|) to select the text that the special handler will use. Normally gx checks for a close-by URL or file name @@ -1486,47 +1485,54 @@ select the text to be used by gx by making a visual selection (see |visual-block|) and then pressing gx. The selection function can be adapted for each filetype by adding a function -Netrw_get_URL_, where is given by &filetype. +`Netrw_get_URL_`, where is given by the 'filetype'. The function should return the URL or file name to be used by gx, and will fall back to the default behavior if it returns an empty string. For example, special handlers for links Markdown and HTML are -> -" make gx work on concealed links regardless of exact cursor position -function Netrw_get_URL_markdown() - " markdown URL such as [link text](http://ya.ru 'yandex search') - try - let save_view = winsaveview() - if searchpair('\[.\{-}\](', '', ')\zs', 'cbW', '', line('.')) > 0 - return matchstr(getline('.')[col('.')-1:], '\[.\{-}\](\zs' .. g:netrw_regex_url .. '\ze\(\s\+.\{-}\)\?)') - endif - finally - call winrestview(save_view) - return '' - endtry -endfunction - -function Netrw_get_URL_html() - " HTML URL such as Python is here - " - try - let save_view = winsaveview() - if searchpair('\|/>\)\zs', 'cbW', '', line('.')) > 0 - return matchstr(getline('.')[col('.') - 1 : ], - \ 'href=["'.."'"..']\?\zs\S\{-}\ze["'.."'"..']\?/\?>') - endif - finally - call winrestview(save_view) - return '' - endtry -endfunction -< +" make gx work on concealed links regardless of exact cursor position: > + + function Netrw_get_URL_markdown() + " markdown URL such as [link text](http://ya.ru 'yandex search') + try + let save_view = winsaveview() + if searchpair('\[.\{-}\](', '', ')\zs', 'cbW', '', line('.')) > 0 + return matchstr(getline('.')[col('.')-1:], + \ '\[.\{-}\](\zs' .. g:netrw_regex_url .. '\ze\(\s\+.\{-}\)\?)') + endif + finally + call winrestview(save_view) + return '' + endtry + endfunction + + function Netrw_get_URL_html() + " HTML URL such as Python is here + " + try + let save_view = winsaveview() + if searchpair('\|/>\)\zs', 'cbW', '', line('.')) > 0 + return matchstr(getline('.')[col('.') - 1 : ], + \ 'href=["'.."'"..']\?\zs\S\{-}\ze["'.."'"..']\?/\?>') + endif + finally + call winrestview(save_view) + return '' + endtry + endfunction +< Other than a file path, the text under the cursor may be a URL. Netrw uses by default the following regular expression to determine if the text under the cursor is a URL: > - g:netrw_regex_url = '\%(\%(http\|ftp\|irc\)s\?\|file\)://\S\{-}' + :let g:netrw_regex_url = '\%(\%(http\|ftp\|irc\)s\?\|file\)://\S\{-}' < +Associated setting variables: + |g:netrw_gx| control how gx picks up the text under the cursor + |g:netrw_nogx| prevent gx map while editing + |g:netrw_suppress_gx_mesg| controls gx's suppression of browser messages + +OPENING FILES AND LAUNCHING APPS *netrw-gx* *:Open* *:Launch* {{{2 Netrw determines which special handler by the following method: @@ -1540,24 +1546,25 @@ Netrw determines which special handler by the following method: * for Mac OS X : open is used. * for Linux : xdg-open is used. -To open a file by the appropriate handler, type - - :Open +To open a path (or URL) by the appropriate handler, type > -No escaping, neither for the shell, nor for Vim's command-line is needed. + :Open +< +No escaping, neither for the shell nor for Vim's command-line, is needed. -To launch a specific application , often being , +To launch a specific application , often being > - :Launch . + :Launch . Since can be arbitrarily complex, in particular contain many file paths, the escaping is left to the user. -Associated setting variables: - |g:netrw_gx| control how gx picks up the text under the cursor - |g:netrw_nogx| prevent gx map while editing - |g:netrw_suppress_gx_mesg| controls gx's suppression of browser messages +If you disabled the netrw plugin by setting g:loaded_netrwPlugin (see +|netrw-noload|), then you can use > + :call netrw#Launch(' ') + :call netrw#Open('') +< *netrw-curdir* DELETING BOOKMARKS *netrw-mB* {{{2 -- cgit