mirror of
				https://github.com/vim/vim.git
				synced 2025-10-28 09:27:14 -04:00 
			
		
		
		
	And anticipate occasional multibyte line wrapping owing to:
> A poorly rendered line may otherwise become wrapped when enough of
> spurious U+FFFD (0xEF 0xBF 0xBD) characters claim more columns than
> are available (75) and then invalidate line correspondence under test.
Observe that for "vim_ex_command.vim" another workaround is
chosen: the long line containing an only multibyte character
near its EOL is conversely made longer by padding and moving
the character to a separate _tail_ part of the wrapped line.
That is, the _head_ part of the line is all ASCII characters
and the wrapped _tail_ part is a mix of various characters
whose total byte count is within bounds.
Other unmodified tracked files of interest:
  java_lambda_expressions.java,
  java_lambda_expressions_signature.java,
  java_numbers.java,
  markdown_conceal.markdown,
  vim9_generic_function_example_set.vim
Also, remove stray U+FFFC (0xEF 0xBF 0xBC) characters.
Related to #16559 and #17704.
Reference:
0fde6aebdd/runtime/syntax/testdir/README.txt (L120-L123)
closes: #17868
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
		
	
		
			
				
	
	
		
			350 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			350 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim :function command
 | |
| " VIM_TEST_SETUP let g:vimsyn_folding = "f"
 | |
| " VIM_TEST_SETUP setl fdc=2 fdl=999 fdm=syntax
 | |
| 
 | |
| 
 | |
| " List
 | |
| 
 | |
| function
 | |
| function Foo
 | |
| function /Foo.*
 | |
| 
 | |
| function | echo "Foo"
 | |
| function " comment
 | |
| function Foo | echo "Foo"
 | |
| function Foo " comment
 | |
| 
 | |
| 
 | |
| " Definition
 | |
| 
 | |
| " empty definition
 | |
| function Foo()
 | |
| endfunction
 | |
| 
 | |
| " curly-brace names
 | |
| function {"F"}oo()
 | |
| endfunction
 | |
| 
 | |
| function F{"o"}o()
 | |
| endfunction
 | |
| 
 | |
| function Fo{"o"}()
 | |
| endfunction
 | |
| 
 | |
| function {"F"}o{"o"}()
 | |
| endfunction
 | |
| 
 | |
| function {"F"}{"o"}{"o"}()
 | |
| endfunction
 | |
| 
 | |
| function Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| " trailing whitespace
 | |
| function Foo()  
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo() " comment
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function! Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function g:Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function s:Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function <SID>Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function b:dict.Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function w:dict.Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function t:dict.Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function g:dict.Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function s:dict.Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function v:dict.Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo(arg)
 | |
|   let l:dict = {}
 | |
|   function l:dict.BAR()
 | |
|     return 42
 | |
|   endfunction
 | |
|   function a:arg.BAR()
 | |
|     return 42
 | |
|   endfunction
 | |
| endfunction
 | |
| 
 | |
| function foo#bar#Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function g:foo#bar#Foo()
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| " same name as an Ex command
 | |
| function s:ls()
 | |
| endfunction
 | |
| 
 | |
| 
 | |
| " Modifiers
 | |
| 
 | |
| function Foo() range
 | |
| endfunction
 | |
| 
 | |
| function Foo() range " comment
 | |
| endfunction
 | |
| 
 | |
| function Foo() range
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo() abort
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo() dict
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo() closure
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo() range abort dict closure
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function! Foo() range
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function! Foo() abort
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function! Foo() dict
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function! Foo() closure
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function! Foo() range abort dict closure
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| 
 | |
| " :endfunction trailing
 | |
| 
 | |
| function Foo()
 | |
|   return 42
 | |
|   " trailing whitespace
 | |
| endfunction  
 | |
| 
 | |
| function Foo()
 | |
|   return 42
 | |
| endfunction | echo "Foo"
 | |
| 
 | |
| function Foo()
 | |
|   return 42
 | |
| endfunction " comment
 | |
| 
 | |
| 
 | |
| " Parameters
 | |
| 
 | |
| function Foo(x, y, z, ...)
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo(
 | |
|       \ x,
 | |
|       \ y,
 | |
|       \ z,
 | |
|       \ ...)
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo(
 | |
|         x,
 | |
|         y,
 | |
|         z,
 | |
|         ...)
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo(x, y = 42, z = "zed")
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo(
 | |
|       \ x,
 | |
|       \ y = 42,
 | |
|       \ z = "zed")
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| function Foo(
 | |
|         x,
 | |
|         y = 42,
 | |
|         z = "zed")
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| 
 | |
| " Arguments
 | |
| 
 | |
| function Foo(a, b, c)
 | |
|   echo a:a a:b a:c
 | |
| endfunction
 | |
| 
 | |
| function Foo(...)
 | |
|   echo a:000
 | |
|   echo a:0
 | |
|   echo a:1 a:2 a:3 a:4 a:5 a:6 a:7 a:8 a:9 a:10 a:11 a:12 a:13 a:14 a:15 a:16 a:17 a:18 a:19 a:20
 | |
| endfunction
 | |
| 
 | |
| 
 | |
| " Issue #16243 (Vim script def parameters syntax highlight is wrong)
 | |
| 
 | |
| function Test(lines = [line('.'), line('.')])
 | |
| endfunction
 | |
| 
 | |
| 
 | |
| " Comments
 | |
| 
 | |
| function Foo()
 | |
|   " Legacy-script comment
 | |
|   # 42 " comment
 | |
|   return 42
 | |
| endfunction
 | |
| 
 | |
| 
 | |
| " Command modifiers
 | |
| 
 | |
| silent! function Foo()
 | |
| endfunction
 | |
| 
 | |
| 
 | |
| " Leading command separator
 | |
| 
 | |
| echo "Foo" | function Foo()
 | |
| endfunction
 | |
| 
 | |
| 
 | |
| " Issue https://github.com/vim/vim/pull/17420#issuecomment-2927798687
 | |
| " (function named /s:fu%\[nction]/)
 | |
| 
 | |
| func! s:func(_, func)
 | |
|     return a:func
 | |
| endfunc
 | |
| 
 | |
| 
 | |
| " Fold-region ending
 | |
| 
 | |
| function Foo()
 | |
|   " endfunction
 | |
| endfunction
 | |
| 
 | |
| function Foo()
 | |
|   echo "endfunction"
 | |
| endfunction
 | |
| 
 | |
| function Foo()
 | |
|   let x =<< trim END
 | |
|     endfunction
 | |
|   END
 | |
| endfunction
 | |
| 
 | |
| function Foo()
 | |
|   append
 | |
|     endfunction
 | |
| .
 | |
| endfunction
 | |
| 
 | |
| function Foo()
 | |
|   change
 | |
|     endfunction
 | |
| .
 | |
| 
 | |
| endfunction
 | |
| 
 | |
| function Foo()
 | |
|   insert
 | |
|     endfunction
 | |
| .
 | |
| endfunction
 | |
| 
 | |
| :function Foo()
 | |
| :endfunction
 | |
| 
 | |
| 
 | |
| " Issue #15671
 | |
| " No recognition of :fun or :def bodies commencing with empty lines if
 | |
| " g:vimsyn_folding contains "f"
 | |
| 
 | |
| fun FA1()
 | |
| 
 | |
| 
 | |
|     return
 | |
| endfun
 | |
| 
 | |
| fun FA2()
 | |
|     return
 | |
| endfun
 | |
| 
 | |
| fun FB1() abort
 | |
| 
 | |
|     return
 | |
| endfun
 | |
| 
 | |
| fun FB2() abort
 | |
|     return
 | |
| endfun
 | |
| 
 | |
| fun FC1(_)
 | |
| 
 | |
|     return
 | |
| endfun
 | |
| 
 | |
| fun FC2(_)
 | |
|     return
 | |
| endfun
 | |
| 
 | |
| fun FD1(_) abort
 | |
| 
 | |
|     return
 | |
| endfun
 | |
| 
 | |
| fun FD2(_) abort
 | |
|     return
 | |
| endfun
 | |
| 
 |