mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	vim9script <scriptcmd> mappings relying on imports cannot be evaluated outside of the script file with the imports, so do not work with plugins like vim-which-key, which applies the mappings using feedkeys(). Using <Plug> mappings is one way to address this, and has the added benefit of reading like a description for users finding the mappings. related: #17563 Signed-off-by: Mark Woods <mwoods.online.ie@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| vim9script
 | |
| 
 | |
| # Vim runtime support library
 | |
| #
 | |
| # Maintainer:   The Vim Project <https://github.com/vim/vim>
 | |
| # Last Change:  2025 Jun 22
 | |
| 
 | |
| if exists("g:loaded_openPlugin") || &cp
 | |
|   finish
 | |
| endif
 | |
| g:loaded_openPlugin = 1
 | |
| 
 | |
| import autoload 'dist/vim9.vim'
 | |
| 
 | |
| command -complete=shellcmd -nargs=1 Launch vim9.Launch(trim(<f-args>))
 | |
| 
 | |
| # technically, -nargs=1 is correct, but this throws E480: No match
 | |
| # when the argument contains a wildchar on Windows
 | |
| command -complete=file -nargs=* Open vim9.Open(trim(<f-args>))
 | |
| # Use URLOpen when you don't want completion to happen
 | |
| # (or because you want to avoid cmdline-special)
 | |
| command -nargs=1 URLOpen vim9.Open(trim(<f-args>))
 | |
| 
 | |
| const no_gx = get(g:, "nogx", get(g:, "netrw_nogx", false))
 | |
| if !no_gx
 | |
|   def GetWordUnderCursor(): string
 | |
|     const url = matchstr(expand("<cWORD>"), '\%(\%(http\|ftp\|irc\)s\?\|file\)://\S\{-}\ze[^A-Za-z0-9/]*$')
 | |
|     if !empty(url)
 | |
|       return url
 | |
|     endif
 | |
| 
 | |
|     const user_var = get(g:, 'gx_word', get(g:, 'netrw_gx', '<cfile>'))
 | |
|     return expand(user_var)
 | |
|   enddef
 | |
| 
 | |
|   if maparg('gx', 'n') == ""
 | |
|     nnoremap <Plug>(open-word-under-cursor) <scriptcmd>vim9.Open(GetWordUnderCursor())<CR>
 | |
|     nmap gx <Plug>(open-word-under-cursor)
 | |
|   endif
 | |
|   if maparg('gx', 'x') == ""
 | |
|     xnoremap <Plug>(open-word-under-cursor) <scriptcmd>vim9.Open(getregion(getpos('v'), getpos('.'), { type: mode() })->join())<CR>
 | |
|     xmap gx <Plug>(open-word-under-cursor)
 | |
|   endif
 | |
| endif
 | |
| 
 | |
| # vim: ts=8 sts=2 sw=2 et
 |