diff options
author | Sean Dewar <seandewar@users.noreply.github.com> | 2024-01-16 17:45:57 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-16 17:45:57 +0000 |
commit | 91dc04a5e12a3d0c5be56768ded5971bc80e6f8e (patch) | |
tree | 2e9941c656d1ae1e4c4e873632e4c0fbd0c972a1 /runtime/syntax/modula2.vim | |
parent | fd2ed024c1b0021161bd87af6f7f55e1f6bf4d82 (diff) | |
download | rneovim-91dc04a5e12a3d0c5be56768ded5971bc80e6f8e.tar.gz rneovim-91dc04a5e12a3d0c5be56768ded5971bc80e6f8e.tar.bz2 rneovim-91dc04a5e12a3d0c5be56768ded5971bc80e6f8e.zip |
vim-patch:9.1.0013: Modula2 filetype support lacking (#27020)
Problem: Modula2 filetype support lacking
Solution: Improve the Modula-2 runtime support, add additional modula2
dialects, add compiler plugin, update syntax highlighting,
include syntax tests, update Makefiles (Doug Kearns)
closes: vim/vim#6796
closes: vim/vim#8115
https://github.com/vim/vim/commit/68a89470693c7687d4e736ca056c05de632e3ac7
- Luaify the detection script:
- Split the `(*!m2foo*)` and `(*!m2foo+bar*)` detection into two Lua patterns,
as Lua capture groups cannot be used with `?` and friends (as they only work
on character classes).
- Use `vim.api.nvim_buf_call()` (ew) to call `modula2#SetDialect()` to ensure
`b:modula2` is set for the given bufnr.
- Skip the syntax screendump tests. (A shame as they test some of the detection
from `(*!m2foo+bar*)` tags, but I tested this locally and it seems to work)
- Port the synmenu.vim changes from Vim9 script. (Also tested this locally)
- (And also add the missing comma for `b:browsefilter` from earlier.)
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Diffstat (limited to 'runtime/syntax/modula2.vim')
-rw-r--r-- | runtime/syntax/modula2.vim | 71 |
1 files changed, 7 insertions, 64 deletions
diff --git a/runtime/syntax/modula2.vim b/runtime/syntax/modula2.vim index 4a14cf1f6f..6a9f4af6aa 100644 --- a/runtime/syntax/modula2.vim +++ b/runtime/syntax/modula2.vim @@ -1,73 +1,16 @@ " Vim syntax file -" Language: Modula 2 -" Maintainer: pf@artcom0.north.de (Peter Funk) -" based on original work of Bram Moolenaar <Bram@vim.org> -" Last Change: 2001 May 09 +" Language: Modula-2 +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Previous Maintainer: pf@artcom0.north.de (Peter Funk) +" Last Change: 2024 Jan 04 -" quit when a syntax file was already loaded if exists("b:current_syntax") finish endif -" Don't ignore case (Modula-2 is case significant). This is the default in vim - -" Especially emphasize headers of procedures and modules: -syn region modula2Header matchgroup=modula2Header start="PROCEDURE " end="(" contains=modula2Ident oneline -syn region modula2Header matchgroup=modula2Header start="MODULE " end=";" contains=modula2Ident oneline -syn region modula2Header matchgroup=modula2Header start="BEGIN (\*" end="\*)" contains=modula2Ident oneline -syn region modula2Header matchgroup=modula2Header start="END " end=";" contains=modula2Ident oneline -syn region modula2Keyword start="END" end=";" contains=ALLBUT,modula2Ident oneline - -" Some very important keywords which should be emphasized more than others: -syn keyword modula2AttKeyword CONST EXIT HALT RETURN TYPE VAR -" All other keywords in alphabetical order: -syn keyword modula2Keyword AND ARRAY BY CASE DEFINITION DIV DO ELSE -syn keyword modula2Keyword ELSIF EXPORT FOR FROM IF IMPLEMENTATION IMPORT -syn keyword modula2Keyword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD -syn keyword modula2Keyword SET THEN TO UNTIL WHILE WITH - -syn keyword modula2Type ADDRESS BITSET BOOLEAN CARDINAL CHAR INTEGER REAL WORD -syn keyword modula2StdFunc ABS CAP CHR DEC EXCL INC INCL ORD SIZE TSIZE VAL -syn keyword modula2StdConst FALSE NIL TRUE -" The following may be discussed, since NEW and DISPOSE are some kind of -" special builtin macro functions: -syn keyword modula2StdFunc NEW DISPOSE -" The following types are added later on and may be missing from older -" Modula-2 Compilers (they are at least missing from the original report -" by N.Wirth from March 1980 ;-) Highlighting should apply nevertheless: -syn keyword modula2Type BYTE LONGCARD LONGINT LONGREAL PROC SHORTCARD SHORTINT -" same note applies to min and max, which were also added later to m2: -syn keyword modula2StdFunc MAX MIN -" The underscore was originally disallowed in m2 ids, it was also added later: -syn match modula2Ident " [A-Z,a-z][A-Z,a-z,0-9,_]*" contained - -" Comments may be nested in Modula-2: -syn region modula2Comment start="(\*" end="\*)" contains=modula2Comment,modula2Todo -syn keyword modula2Todo contained TODO FIXME XXX - -" Strings -syn region modula2String start=+"+ end=+"+ -syn region modula2String start="'" end="'" -syn region modula2Set start="{" end="}" - -" Define the default highlighting. -" Only when an item doesn't have highlighting yet - -hi def link modula2Ident Identifier -hi def link modula2StdConst Boolean -hi def link modula2Type Identifier -hi def link modula2StdFunc Identifier -hi def link modula2Header Type -hi def link modula2Keyword Statement -hi def link modula2AttKeyword PreProc -hi def link modula2Comment Comment -" The following is just a matter of taste (you want to try this instead): -" hi modula2Comment term=bold ctermfg=DarkBlue guifg=Blue gui=bold -hi def link modula2Todo Todo -hi def link modula2String String -hi def link modula2Set String - +let dialect = modula2#GetDialect() +exe "runtime! syntax/modula2/opt/" .. dialect .. ".vim" let b:current_syntax = "modula2" -" vim: ts=8 +" vim: nowrap sw=2 sts=2 ts=8 noet: |