view runtime/indent/testdir/vim.ok @ 32721:94f4a488412e v9.0.1683

Updated runtime files Commit: https://github.com/vim/vim/commit/6efb1980336ff324e9c57a4e282530b952fca816 Author: Christian Brabandt <cb@256bit.org> Date: Thu Aug 10 05:44:25 2023 +0200 Updated runtime files This is a collection of various PRs from github that all require a minor patch number: 1) https://github.com/vim/vim/pull/12612 Do not conflate dictionary key with end of block 2) https://github.com/vim/vim/pull/12729: When saving and restoring 'undolevels', the constructs `&undolevels` and `:set undolevels` are problematic. The construct `&undolevels` reads an unpredictable value; it will be the local option value (if one has been set), or the global option value (otherwise), making it unsuitable for saving a value for later restoration. Similarly, if a local option value has been set for 'undolevels', temporarily modifying the option via `:set undolevels` changes the local value as well as the global value, requiring extra work to restore both values. Saving and restoring the option value in one step via the construct `:let &undolevels = &undolevels` appears to make no changes to the 'undolevels' option, but if a local option has been set to a different value than the global option, it has the unintended effect of changing the global 'undolevels' value to the local value. Update the documentation to explain these issues and recommend explicit use of global and local option values when saving and restoring. Update some unit tests to use `g:undolevels`. 3) https://github.com/vim/vim/pull/12702: Problem: Pip requirements files are not recognized. Solution: Add a pattern to match pip requirements files. 4) https://github.com/vim/vim/pull/12688: Add indent file and tests for ABB Rapid 5) https://github.com/vim/vim/pull/12668: Use Lua 5.1 numeric escapes in tests and add to CI Only Lua 5.2+ and LuaJIT understand hexadecimal escapes in strings. Lua 5.1 only supports decimal escapes: > A character in a string can also be specified by its numerical value > using the escape sequence \ddd, where ddd is a sequence of up to three > decimal digits. (Note that if a numerical escape is to be followed by a > digit, it must be expressed using exactly three digits.) Strings in Lua > can contain any 8-bit value, including embedded zeros, which can be > specified as '\0'. To make sure this works with Lua 5.4 and Lua 5.1 change the Vim CI to run with Lua 5.1 as well as Lua 5.4 6) https://github.com/vim/vim/pull/12631: Add hurl filetype detection 7) https://github.com/vim/vim/pull/12573: Problem: Files for haskell persistent library are not recognized Solution: Add pattern persistentmodels for haskell persistent library closes: #12612 closes: #12729 closes: #12702 closes: #12688 closes: #12668 closes: #12631 closes: #12573 Co-authored-by: lacygoill <lacygoill@lacygoill.me> Co-authored-by: Michael Henry <drmikehenry@drmikehenry.com> Co-authored-by: ObserverOfTime <chronobserver@disroot.org> Co-authored-by: KnoP-01 <knosowski@graeffrobotics.de> Co-authored-by: James McCoy <jamessan@jamessan.com> Co-authored-by: Jacob Pfeifer <jacob@pfeifer.dev> Co-authored-by: Borys Lykah <lykahb@fastmail.com>
author Christian Brabandt <cb@256bit.org>
date Thu, 10 Aug 2023 06:30:06 +0200
parents cc751d944b7e
children 5b46a975e48a
line wrap: on
line source

" vim: set ft=vim sw=4 :

" START_INDENT
func Some()
    let x = 1
endfunc

let cmd =
	    \ 'some '
	    \ 'string'

if 1
    let x = [
		\ ]
endif

for x in [
	{key: 'value'},
	]
    eval 0
endfor

let t = [
	    \ {
	    \ 'k': 'val',
	    \ },
	    \  ]

def Func()
    var d = dd
	->extend({
	})
    eval 0
enddef
" END_INDENT

" START_INDENT
" INDENT_EXE let g:vim_indent_cont = 6

let cmd =
      \ 'some '
      \ 'string'

" END_INDENT

" START_INDENT
" INDENT_EXE let g:vim_indent_cont = 5

let list = [
     \ 'one',
     \ 'two']

" END_INDENT

" START_INDENT
" INDENT_EXE unlet g:vim_indent_cont

let list = [
    'one',
    'two',
]
echo

" END_INDENT

" START_INDENT
" INDENT_AT  this-line
func Some()
    let f = x " this-line
endfunc
" END_INDENT

" START_INDENT
" INDENT_NEXT  next-line
func Some()
    " next-line
    let f = x
endfunc
" END_INDENT

" START_INDENT
" INDENT_PREV  prev-line
func Some()
    let f = x
" prev-line
endfunc
" END_INDENT

" START_INDENT
let a =<< END
nothing
END
" END_INDENT

" START_INDENT
let a =<< trim END
    nothing
END
" END_INDENT

" START_INDENT
" INDENT_AT  this-line
let a=<< trim END
   blah
      blah
      blah this-line
END
" END_INDENT

" START_INDENT
if v:true
    echo 0
end
" END_INDENT

" START_INDENT
var result = Func(
    arg1,
    arg2
)
" END_INDENT

" START_INDENT
var result = Func(arg1,
    arg2)
" END_INDENT

" START_INDENT
filter(list, (k, v) =>
    v > 0)
" END_INDENT

" START_INDENT
filter(list, (k, v) => {
    const x = get(list, k, 0)
    return x > 0
})
" END_INDENT

" START_INDENT
if x > 0
    filter(list, (k, v) => {
	const x = get(list, k, 1)
	return x > 0
    })
endif
" END_INDENT

" START_INDENT
{
    var temp = 'temp'
}
" END_INDENT

" START_INDENT
var text = lead
    .. middle
    .. end
" END_INDENT

" START_INDENT
var text = lead ..
    middle ..
    end
" END_INDENT

" START_INDENT
var total = start +
    end -
    correction
" END_INDENT

" START_INDENT
var result = start
:+ print
" END_INDENT

" START_INDENT
var result = positive
    ? PosFunc(arg)
    : NegFunc(arg)
" END_INDENT

" START_INDENT
var result = GetBuilder()
    ->BuilderSetWidth(333)
    ->BuilderSetHeight(777)
    ->BuilderBuild()
" END_INDENT

" START_INDENT
var result = MyDict
    .member
" END_INDENT

" START_INDENT
autocmd BufNewFile *.match if condition
    |   echo 'match'
    | endif
" END_INDENT

" START_INDENT
set cpo+=C
var lines =<< trim END
    | this works
END
set cpo-=C
" END_INDENT

" START_INDENT
syn region Text
	    \ start='foo'
	    #\ comment
	    \ end='bar'
" END_INDENT

" START_INDENT
au CursorHold * echom 'BEFORE bar'
    #\ some comment
    | echom 'AFTER bar'
" END_INDENT

" START_INDENT
def MyFunc(text: string,
	separator = '-'
	): string
enddef
" END_INDENT

" START_INDENT
def MyFunc(
	text: string,
	separator = '-'
	): string
enddef
" END_INDENT

" START_INDENT
[var1, var2] =
    Func()
" END_INDENT

" START_INDENT
const list = ['one',
    'two']
" END_INDENT

" START_INDENT
const list = [
    'one',
    'two',
]
" END_INDENT

" START_INDENT
const dict = {one: 1,
    two: 2
}
" END_INDENT

" START_INDENT
const dict = {
    one: 1,
    two: 2
}
" END_INDENT

" START_INDENT
if true
    const dict =
	{
	    one: 1,
	    two: 2
	}
endif
" END_INDENT

" START_INDENT
def Func()
    return {
	one: 1
    }
enddef
" END_INDENT

" START_INDENT
echo {
    a: 0,
    # b
    # c
}
" END_INDENT

" START_INDENT
echo search(
    # comment
    '1'
    .. '2'
)
" END_INDENT

" START_INDENT
if true
    var v = (      # trailing "(" starts line continuation
	3 + 4      # nothing special
    )              # end of expression indicates continued line
    var x: number  # needs to align with previous "var"
endif
" END_INDENT

" START_INDENT
def Func() # {{{
    # comment
    if true
	return
    endif
enddef
" END_INDENT

" START_INDENT
echo {
    key:
	'value',
}
" END_INDENT

" START_INDENT
var id = time
    ->timer_start((_) => {
	n = 0
    })
" END_INDENT

" START_INDENT
augroup Name
    autocmd!
augroup END
" END_INDENT

" START_INDENT
var n =
    # comment
    1
    + 2

var s = ''
" END_INDENT

" START_INDENT
var keys = {
    J: 'j',
    "\<Home>": '1G',
    "\<End>": 'G',
    z: 'zz'
}
" END_INDENT

" START_INDENT
export def Func(
	n: number,
	s: string,
	...l: list<bool>
	)
enddef
" END_INDENT

" START_INDENT
var heredoc =<< trim ENDD
    var nested_heredoc =<< trim END
    END
ENDD
" END_INDENT

" START_INDENT
if true
else  " comment
endif
" END_INDENT

" START_INDENT
if true | echo 'one' | endif
if true | echo 'two' | endif
if true | echo 'three' | endif
" END_INDENT

" START_INDENT
if true
    :'<-1 mark <
else
    echo ''
endif
" END_INDENT

" START_INDENT
substitute/pat /rep /
echo
" END_INDENT

" START_INDENT
try
    echo 1
catch /pat /  # comment
    echo 2
endtry
" END_INDENT

" START_INDENT
def Func()
    Cmd %
enddef
" END_INDENT

" START_INDENT
if end == 'xxx' || end == 'yyy'
    echo
endif
" END_INDENT

" START_INDENT
if true
    popup_move(id, {col: 1,
	line: 2})
endif
setwinvar(id, 'name', 3)
" END_INDENT

" START_INDENT
var d = [
    {a: 'x',
	b: 'y'},
    FuncA(),
    FuncB(),
]
" END_INDENT

" START_INDENT
var ll = [[
    1,
    2,
    3], [
    4,
    5,
    6], [
    7,
    8,
    9]]
" END_INDENT

" START_INDENT
var ld = [{
    a: 'xxx',
    b: 'yyy'}, {
    c: 'xxx',
    d: 'yyy'}, {
    e: 'xxx',
    f: 'yyy'}, {
    }]
" END_INDENT

" START_INDENT
var d = {
    a: {
	b: {
	    c: [{
		d: 'e',
		f: 'g',
		h: 'i'
	    }],
	    j: 'k',
	},
    },
}
" END_INDENT

" START_INDENT
if true
    var end: any
    if true
	end = 0
    elseif true
	echo
    endif
endif
" END_INDENT

" START_INDENT
if true
    var d = {
	end: 0}
endif
" END_INDENT

" START_INDENT
nunmap <buffer> (
nunmap <buffer> )
inoremap [ {
inoremap ] }
silent! xunmap i{
silent! xunmap a{
" END_INDENT

" START_INDENT
def Func(
	s: string,
	n = 1,
	m = 2
	)
enddef
" END_INDENT

" START_INDENT
var h =<< END
text
END

def Func()
    echo
enddef
" END_INDENT

" START_INDENT
def Func()
    var h =<< END
text
END
    echo 'test'
enddef
" END_INDENT

" START_INDENT
def Foo()
    lcd -
enddef
def Bar()
    echo
enddef
" END_INDENT

" START_INDENT
if true
    n = Func(1, 2,
	3)
endif
" END_INDENT

" START_INDENT
def Func(s: string,
	n: number): bool
    if true
	return false
    endif
enddef
" END_INDENT

" START_INDENT
def Func(
	n: number)
    #
    echo
enddef
" END_INDENT

" START_INDENT
" INDENT_AT  this-line
def Func(
	n: number)
    #
    echo  # this-line
enddef
" END_INDENT

" START_INDENT
if true
    if true
	normal! ==
    endif
endif
" END_INDENT

" START_INDENT
var d = {
    a: () => true,
    b: () => true
	&& true
	&& Foo(),
    c: () => Bar(),
    e: () => Baz(),
}
" END_INDENT

" START_INDENT
def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
    return (Emit: func(any)) => {
	Cont((t: any) => {
	    if Pred(t)
		Emit(t)
	    endif
	})
    }
enddef
" END_INDENT

" START_INDENT
" INDENT_EXE let g:vim_indent = {'more_in_bracket_block': v:true}
def Select(Cont: func(func(any)), Pred: func(any): bool): func(func(any))
    return (Emit: func(any)) => {
	    Cont((t: any) => {
		    if Pred(t)
			Emit(t)
		    endif
		})
	}
enddef
" END_INDENT

" START_INDENT
" INDENT_EXE unlet! g:vim_indent
" END_INDENT

" START_INDENT
g:lightline = {
    'active': {
	'left': [ [ 'mode', 'paste' ], [ 'readonly', 'relativepath', 'modified' ] ],
    },
    'inactive': {
	'left': [ [ 'readonly', 'relativepath', 'modified' ] ],
    }
}
" END_INDENT

" START_INDENT
if getline(1, 10)
	->map((_, v: string): number => strcharlen(v))
	->max() > 1'000
    &l:breakindent = false
    &l:linebreak = false
else
    &l:breakindent = true
    &l:linebreak = true
endif
" END_INDENT

" START_INDENT
var ext2cmd: dict<string> = {
    doc: $'antiword {fname}',
    docx: $'pandoc --from=docx --to=markdown {fname}',
    epub: $'pandoc --from=epub --to=markdown {fname}',
    odp: $'odt2txt {fname}',
    odt: $'odt2txt {fname}',
    pdf: $'pdftotext -nopgbrk -layout -q -eol unix {fname} -',
    rtf: 'unrtf --text',
}
" END_INDENT

" START_INDENT
const ptybuf: number = term_start(&shell, {
    hidden: true,
    exit_cb: (_, _) => {
	if true
	    close
	else
	    help
	endif
    }
})
" END_INDENT

" START_INDENT
var d = {
    a: 0,
    # a ' quote {{{
    #}}}
    b: 0,
}
" END_INDENT

" START_INDENT
echo printf('%s () %s',
    1,
    2
)
" END_INDENT

" START_INDENT
prop_add(1, col('.'), {
    length: 2,
    type: 'test'
})
" END_INDENT

" START_INDENT
echo (() => " string starting with space")()
echo
" END_INDENT

" START_INDENT
var variables = deepcopy(g:)
    ->filter((k: string, _): bool =>
	k =~ '\c\V' .. keyword->escape('\')
	&& k !~ '\%(loaded\|did_plugin_\)')
    ->items()
    ->map((_, v): string => v[0] .. ' = ' .. string(v[1]))
new
" END_INDENT

" START_INDENT
var d = freq
    ->map((_, v) =>
	v * (
	    1
	    + 2
	))
for item in d
	->items()
	->sort((a, b) => b[1] - a[1])
    echo
endfor
" END_INDENT

" START_INDENT
make_job = job_start([&shell, &shellcmdflag, make_cmd], {
    callback: function(MakeProcessOutput, [qfid]),
    close_cb: function(MakeCloseCb, [qfid]),
    exit_cb: MakeCompleted,
    in_io: 'null'
})
" END_INDENT

" START_INDENT
var matching_abbrev: list<dict<string>> = copy(ABBREV)
    ->filter((_, v: dict<string>): bool =>
	stridx(v.lhs, word_to_complete) == 0)
    ->map((_, v: dict<string>) => ({
	word: v.lhs,
	menu: AbbrevRhs(v.rhs)->stridx('expand_') >= 0
	    ?    AbbrevRhs(v.rhs)->matchstr('.*,\s*''\zs.*\ze'')')
	    :    AbbrevRhs(v.rhs)
    }))
" END_INDENT

" START_INDENT
def Func()
    if true
	vimgrep /^\C\s*\%(fu\%[nction]\|def\)\s\+/ file
    endif
enddef
" END_INDENT

" START_INDENT
setlocal iskeyword+=[
cword = expand('<cword>')
" END_INDENT

" START_INDENT
silent if true
    echo
endif
" END_INDENT

" START_INDENT
def Func()
    sort :^.*[\/]:
enddef
" END_INDENT

" START_INDENT
def Func()
    d = {
    }
    hd =<< trim END
	['
	]'
    END
enddef
" END_INDENT

" START_INDENT
def Func()
    if true
	var hd =<< trim END
	    if get(b:, 'current_syntax', '')
	    endif
	END
    elseif true
	echo
    endif
enddef
" END_INDENT

" START_INDENT
# test for control-flow keyword followed by commented fold marker {{{
if true
    echo
endif #}}}
" END_INDENT

" START_INDENT
if winsz == 0|let winsz= ""|endif
exe "noswapfile ".winsz."wincmd s"
" END_INDENT

" START_INDENT
if true
    if true
	windo if true | echo | endif
	augroup Name
	    autocmd WinLeave * if true | eval 1 + 2 | endif
	augroup END
    endif
endif
" END_INDENT

" START_INDENT
if true
    echo ' =<< trim END'
	->len()
endif
" END_INDENT

" START_INDENT
function Func()
    if true
	if true
	    if true | echo com | endif
	    if true | echo com | endif
	endif
    else
    endif
endfunction
" END_INDENT

" START_INDENT
function Func()
    if v:true
	+
	echo
	-
    endif
endfunction
" END_INDENT

" START_INDENT
var matchpairs: string = &matchpairs
var pairs: dict<list<string>>
for [opening: string, closing: string]
	in matchpairs
	->split(',')
	->map((_, v: string): list<string> => split(v, ':'))
    pairs[opening] = [escape(opening, '[]'), escape(closing, '[]'),  'nW', 'w$']
    pairs[closing] = [escape(opening, '[]'), escape(closing, '[]'), 'bnW', 'w0']
endfor
" END_INDENT

" START_INDENT
{
    echo []
	+ []
	+ [{a: 1,
	b: 2}]
}
" END_INDENT

" START_INDENT
silent! argdel *
edit file
" END_INDENT

" START_INDENT
def Foo()
    Bar(1,
	[]->filter((_, v) => {
	    return true
	}),
	() => {
	    echo
	})
enddef
" END_INDENT

" START_INDENT
echo {
    k: () => {
	if true
	    echo
	    popup_setoptions(id,
		{title: 'title'})
	endif
    }
}
" END_INDENT

" START_INDENT
if true
elseif
endif
" END_INDENT

" START_INDENT
if (
	true)
	&& true
    echo
endif
" END_INDENT

" START_INDENT
abstract class Shape
    this.color = Color.Black
    this.thickness = 10
endclass
" END_INDENT

" START_INDENT
class OtherThing
    this.size: number
    static totalSize: number

    static def ClearTotalSize(): number
	var prev = totalSize
	totalSize = 0
	return prev
    enddef
endclass
" END_INDENT

" START_INDENT
interface HasSurface
    this.size: number
    def Surface(): number
endinterface
" END_INDENT

" START_INDENT
interface EnterExit
    def Enter(): void
    def Exit(): void
endinterface
" END_INDENT

" START_INDENT
enum Color
    White
    Red
    Green
    Blue
    Black
endenum
" END_INDENT