Mercurial > vim
annotate runtime/syntax/expect.vim @ 30487:79e2d9b7780c v9.0.0579
patch 9.0.0579: using freed memory when 'tagfunc' wipes out buffer
Commit: https://github.com/vim/vim/commit/0ff01835a40f549c5c4a550502f62a2ac9ac447c
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Sep 24 19:20:30 2022 +0100
patch 9.0.0579: using freed memory when 'tagfunc' wipes out buffer
Problem: Using freed memory when 'tagfunc' wipes out buffer that holds
'complete'.
Solution: Make a copy of the option. Make sure cursor position is valid.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 24 Sep 2022 20:30:03 +0200 |
parents | 46763b01cd9a |
children |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Language: Expect | |
3 " Maintainer: Ralph Jennings <knowbudy@oro.net> | |
3557 | 4 " Last Change: 2012 Jun 01 |
5 " (Dominique Pelle added @Spell) | |
7 | 6 |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3557
diff
changeset
|
7 " quit when a syntax file was already loaded |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3557
diff
changeset
|
8 if exists("b:current_syntax") |
7 | 9 finish |
10 endif | |
11 | |
12 " Reserved Expect variable prefixes. | |
13 syn match expectVariables "\$exp[a-zA-Z0-9_]*\|\$inter[a-zA-Z0-9_]*" | |
14 syn match expectVariables "\$spawn[a-zA-Z0-9_]*\|\$timeout[a-zA-Z0-9_]*" | |
15 | |
16 " Normal Expect variables. | |
17 syn match expectVariables "\$env([^)]*)" | |
18 syn match expectVariables "\$any_spawn_id\|\$argc\|\$argv\d*" | |
19 syn match expectVariables "\$user_spawn_id\|\$spawn_id\|\$timeout" | |
20 | |
21 " Expect variable arrays. | |
22 syn match expectVariables "\$\(expect\|interact\)_out([^)]*)" contains=expectOutVar | |
23 | |
24 " User defined variables. | |
25 syn match expectVariables "\$[a-zA-Z_][a-zA-Z0-9_]*" | |
26 | |
27 " Reserved Expect command prefixes. | |
28 syn match expectCommand "exp_[a-zA-Z0-9_]*" | |
29 | |
30 " Normal Expect commands. | |
31 syn keyword expectStatement close debug disconnect | |
32 syn keyword expectStatement exit exp_continue exp_internal exp_open | |
33 syn keyword expectStatement exp_pid exp_version | |
34 syn keyword expectStatement fork inter_return interpreter | |
35 syn keyword expectStatement log_file log_user match_max overlay | |
36 syn keyword expectStatement parity remove_nulls return | |
37 syn keyword expectStatement send send_error send_log send_user | |
38 syn keyword expectStatement sleep spawn strace stty system | |
39 syn keyword expectStatement timestamp trace trap wait | |
40 | |
41 " Tcl commands recognized and used by Expect. | |
42 syn keyword expectCommand proc | |
43 syn keyword expectConditional if else | |
44 syn keyword expectRepeat while for foreach | |
45 | |
46 " Expect commands with special arguments. | |
47 syn keyword expectStatement expect expect_after expect_background nextgroup=expectExpectOpts | |
48 syn keyword expectStatement expect_before expect_user interact nextgroup=expectExpectOpts | |
49 | |
50 syn match expectSpecial contained "\\." | |
51 | |
52 " Options for "expect", "expect_after", "expect_background", | |
53 " "expect_before", "expect_user", and "interact". | |
54 syn keyword expectExpectOpts default eof full_buffer null return timeout | |
55 | |
56 syn keyword expectOutVar contained spawn_id seconds seconds_total | |
57 syn keyword expectOutVar contained string start end buffer | |
58 | |
59 " Numbers (Tcl style). | |
60 syn case ignore | |
61 syn match expectNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" | |
62 "floating point number, with dot, optional exponent | |
63 syn match expectNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" | |
64 "floating point number, starting with a dot, optional exponent | |
65 syn match expectNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" | |
66 "floating point number, without dot, with exponent | |
67 syn match expectNumber "\<\d\+e[-+]\=\d\+[fl]\=\>" | |
68 "hex number | |
69 syn match expectNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" | |
70 "syn match expectIdentifier "\<[a-z_][a-z0-9_]*\>" | |
71 syn case match | |
72 | |
3557 | 73 syn region expectString start=+"+ end=+"+ contains=@Spell,expectVariables,expectSpecial |
7 | 74 |
75 " Are these really comments in Expect? (I never use it, so I'm just guessing). | |
76 syn keyword expectTodo contained TODO | |
3557 | 77 syn match expectComment "#.*$" contains=@Spell,expectTodo |
78 syn match expectSharpBang "\%^#!.*" | |
7 | 79 |
80 " Define the default highlighting. | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3557
diff
changeset
|
81 " Only when an item doesn't have highlighting yet |
7 | 82 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
83 hi def link expectSharpBang PreProc |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
84 hi def link expectVariables Special |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
85 hi def link expectCommand Function |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
86 hi def link expectStatement Statement |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
87 hi def link expectConditional Conditional |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
88 hi def link expectRepeat Repeat |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
89 hi def link expectExpectOpts Keyword |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
90 hi def link expectOutVar Special |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
91 hi def link expectSpecial Special |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
92 hi def link expectNumber Number |
7 | 93 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
94 hi def link expectString String |
7 | 95 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
96 hi def link expectComment Comment |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
97 hi def link expectTodo Todo |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
98 "hi def link expectIdentifier Identifier |
7 | 99 |
100 | |
101 let b:current_syntax = "expect" | |
102 | |
103 " vim: ts=8 |