Mercurial > vim
annotate runtime/syntax/cweb.vim @ 23923:be36288235af v8.2.2504
patch 8.2.2504: Vim9: crash when using an argument from a closure
Commit: https://github.com/vim/vim/commit/44ec21c467ddf481b422c787324ea08f375f6942
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Feb 12 21:50:57 2021 +0100
patch 8.2.2504: Vim9: crash when using an argument from a closure
Problem: Vim9: crash when using an argument from a closure.
Solution: Check if gen_load_outer is NULL. (closes https://github.com/vim/vim/issues/7821)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 12 Feb 2021 22:00:04 +0100 |
parents | 46763b01cd9a |
children |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Language: CWEB | |
3 " Maintainer: Andreas Scherer <andreas.scherer@pobox.com> | |
3237 | 4 " Last Change: 2011 Dec 25 by Thilo Six |
7 | 5 |
6 " Details of the CWEB language can be found in the article by Donald E. Knuth | |
7 " and Silvio Levy, "The CWEB System of Structured Documentation", included as | |
8 " file "cwebman.tex" in the standard CWEB distribution, available for | |
9 " anonymous ftp at ftp://labrea.stanford.edu/pub/cweb/. | |
10 | |
11 " TODO: Section names and C/C++ comments should be treated as TeX material. | |
12 " TODO: The current version switches syntax highlighting off for section | |
13 " TODO: names, and leaves C/C++ comments as such. (On the other hand, | |
14 " TODO: switching to TeX mode in C/C++ comments might be colour overkill.) | |
15 | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3237
diff
changeset
|
16 " quit when a syntax file was already loaded |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3237
diff
changeset
|
17 if exists("b:current_syntax") |
7 | 18 finish |
19 endif | |
20 | |
21 " For starters, read the TeX syntax; TeX syntax items are allowed at the top | |
22 " level in the CWEB syntax, e.g., in the preamble. In general, a CWEB source | |
23 " code can be seen as a normal TeX document with some C/C++ material | |
24 " interspersed in certain defined regions. | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3237
diff
changeset
|
25 runtime! syntax/tex.vim |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3237
diff
changeset
|
26 unlet b:current_syntax |
7 | 27 |
28 " Read the C/C++ syntax too; C/C++ syntax items are treated as such in the | |
29 " C/C++ section of a CWEB chunk or in inner C/C++ context in "|...|" groups. | |
30 syntax include @webIncludedC <sfile>:p:h/cpp.vim | |
31 | |
3237 | 32 let s:cpo_save = &cpo |
33 set cpo&vim | |
34 | |
7 | 35 " Inner C/C++ context (ICC) should be quite simple as it's comprised of |
36 " material in "|...|"; however the naive definition for this region would | |
37 " hickup at the innocious "\|" TeX macro. Note: For the time being we expect | |
38 " that an ICC begins either at the start of a line or after some white space. | |
39 syntax region webInnerCcontext start="\(^\|[ \t\~`(]\)|" end="|" contains=@webIncludedC,webSectionName,webRestrictedTeX,webIgnoredStuff | |
40 | |
41 " Genuine C/C++ material. This syntactic region covers both the definition | |
42 " part and the C/C++ part of a CWEB section; it is ended by the TeX part of | |
43 " the next section. | |
44 syntax region webCpart start="@[dfscp<(]" end="@[ \*]" contains=@webIncludedC,webSectionName,webRestrictedTeX,webIgnoredStuff | |
45 | |
46 " Section names contain C/C++ material only in inner context. | |
47 syntax region webSectionName start="@[<(]" end="@>" contains=webInnerCcontext contained | |
48 | |
49 " The contents of "control texts" is not treated as TeX material, because in | |
50 " non-trivial cases this completely clobbers the syntax recognition. Instead, | |
51 " we highlight these elements as "strings". | |
52 syntax region webRestrictedTeX start="@[\^\.:t=q]" end="@>" oneline | |
53 | |
54 " Double-@ means single-@, anywhere in the CWEB source. (This allows e-mail | |
55 " address <someone@@fsf.org> without going into C/C++ mode.) | |
56 syntax match webIgnoredStuff "@@" | |
57 | |
58 " Define the default highlighting. | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3237
diff
changeset
|
59 " Only when an item doesn't have highlighting yet |
7 | 60 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
61 hi def link webRestrictedTeX String |
7 | 62 |
63 | |
64 let b:current_syntax = "cweb" | |
65 | |
3237 | 66 let &cpo = s:cpo_save |
67 unlet s:cpo_save | |
7 | 68 " vim: ts=8 |