annotate runtime/syntax/ssa.vim @ 33399:95db67c7b754 v9.0.1958

patch 9.0.1958: cannot complete option values Commit: https://github.com/vim/vim/commit/900894b09a95398dfc75599e9f0aa2ea25723384 Author: Yee Cheng Chin <ychin.git@gmail.com> Date: Fri Sep 29 20:42:32 2023 +0200 patch 9.0.1958: cannot complete option values Problem: cannot complete option values Solution: Add completion functions for several options Add cmdline tab-completion for setting string options Add tab-completion for setting string options on the cmdline using `:set=` (along with `:set+=` and `:set-=`). The existing tab completion for setting options currently only works when nothing is typed yet, and it only fills in with the existing value, e.g. when the user does `:set diffopt=<Tab>` it will be completed to `set diffopt=internal,filler,closeoff` and nothing else. This isn't too useful as a user usually wants auto-complete to suggest all the possible values, such as 'iblank', or 'algorithm:patience'. For set= and set+=, this adds a new optional callback function for each option that can be invoked when doing completion. This allows for each option to have control over how completion works. For example, in 'diffopt', it will suggest the default enumeration, but if `algorithm:` is selected, it will further suggest different algorithm types like 'meyers' and 'patience'. When using set=, the existing option value will be filled in as the first choice to preserve the existing behavior. When using set+= this won't happen as it doesn't make sense. For flag list options (e.g. 'mouse' and 'guioptions'), completion will take into account existing typed values (and in the case of set+=, the existing option value) to make sure it doesn't suggest duplicates. For set-=, there is a new `ExpandSettingSubtract` function which will handle flag list and comma-separated options smartly, by only suggesting values that currently exist in the option. Note that Vim has some existing code that adds special handling for 'filetype', 'syntax', and misc dir options like 'backupdir'. This change preserves them as they already work, instead of converting to the new callback API for each option. closes: #13182 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Fri, 29 Sep 2023 20:45:04 +0200
parents 3295247d97a5
children 8de906dadd4a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30875
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 " Vim syntax file
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2 " Language: SubStation Alpha
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3 " Maintainer: ObserverOfTime <chronobserver@disroot.org>
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
4 " Filenames: *.ass,*.ssa
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
5 " Last Change: 2022 Oct 10
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7 if exists('b:current_syntax')
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8 finish
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
9 endif
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 " Comments
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 syn keyword ssaTodo TODO FIXME NOTE XXX contained
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 syn match ssaComment /^\(;\|!:\).*$/ contains=ssaTodo,@Spell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
14 syn match ssaTextComment /{[^}]*}/ contained contains=@Spell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16 " Sections
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 syn match ssaSection /^\[[a-zA-Z0-9+ ]\+\]$/
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
18
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19 " Headers
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
20 syn match ssaHeader /^[^;!:]\+:/ skipwhite nextgroup=ssaField
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22 " Fields
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23 syn match ssaField /[^,]*/ contained skipwhite nextgroup=ssaDelimiter
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25 " Time
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 syn match ssaTime /\d:\d\d:\d\d\.\d\d/ contained skipwhite nextgroup=ssaDelimiter
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
27
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
28 " Delimiter
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29 syn match ssaDelimiter /,/ contained skipwhite nextgroup=ssaField,ssaTime,ssaText
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31 " Text
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32 syn match ssaText /\(^Dialogue:\(.*,\)\{9}\)\@<=.*$/ contained contains=@ssaTags,@Spell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 syn cluster ssaTags contains=ssaOverrideTag,ssaEscapeChar,ssaTextComment,ssaItalics,ssaBold,ssaUnderline,ssaStrikeout
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
35 " Override tags
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 syn match ssaOverrideTag /{\\[^}]\+}/ contained contains=@NoSpell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38 " Special characters
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39 syn match ssaEscapeChar /\\[nNh{}]/ contained contains=@NoSpell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41 " Markup
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 syn region ssaItalics start=/{\\i1}/ end=/{\\i0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
43 syn region ssaBold start=/{\\b1}/ end=/{\\b0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44 syn region ssaUnderline start=/{\\u1}/ end=/{\\u0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45 syn region ssaStrikeout start=/{\\s1}/ end=/{\\s0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47 hi def link ssaDelimiter Delimiter
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 hi def link ssaComment Comment
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49 hi def link ssaEscapeChar SpecialChar
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 hi def link ssaField String
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
51 hi def link ssaHeader Label
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
52 hi def link ssaSection StorageClass
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
53 hi def link ssaOverrideTag Special
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
54 hi def link ssaTextComment Comment
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
55 hi def link ssaTime Number
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
56 hi def link ssaTodo Todo
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
57
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
58 hi ssaBold cterm=bold gui=bold
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
59 hi ssaItalics cterm=italic gui=italic
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
60 hi ssaStrikeout cterm=strikethrough gui=strikethrough
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
61 hi ssaUnderline cterm=underline gui=underline
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
62
3295247d97a5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
63 let b:current_syntax = 'srt'