From 01a629ca03f00c03cf0d8a57114535d976c67592 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 22 Apr 2021 21:07:06 -0400 Subject: vim-patch:8.1.1726: the eval.txt help file is too big Problem: The eval.txt help file is too big. Solution: Split off testing support to testing.txt. Move function details to where the functionality is explained. https://github.com/vim/vim/commit/ed997adaa1e9bd057ce732a73d933b739e9d0c30 Vim commit 5477506a9f01d40fad2e8f0555bc37adee30478f contains the duplicate tag fix in runtime/doc/testing.txt. --- runtime/doc/eval.txt | 472 +---------------------------------------------- runtime/doc/help.txt | 1 + runtime/doc/sign.txt | 359 +++++++++++++++++++++++++++++++++++ runtime/doc/testing.txt | 169 +++++++++++++++++ runtime/doc/vim_diff.txt | 9 + 5 files changed, 541 insertions(+), 469 deletions(-) create mode 100644 runtime/doc/testing.txt (limited to 'runtime') diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index b8dcfd0ff4..c8783071f1 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2641,122 +2641,7 @@ argv([{nr} [, {winid}]) The {winid} argument specifies the window ID, see |argc()|. For the Vim command line arguments see |v:argv|. -assert_beeps({cmd}) *assert_beeps()* - Run {cmd} and add an error message to |v:errors| if it does - NOT produce a beep or visual bell. - Also see |assert_fails()|, |assert_nobeep()| and - |assert-return|. - - *assert_equal()* -assert_equal({expected}, {actual}, [, {msg}]) - When {expected} and {actual} are not equal an error message is - added to |v:errors| and 1 is returned. Otherwise zero is - returned |assert-return|. - There is no automatic conversion, the String "4" is different - from the Number 4. And the number 4 is different from the - Float 4.0. The value of 'ignorecase' is not used here, case - always matters. - When {msg} is omitted an error in the form "Expected - {expected} but got {actual}" is produced. - Example: > - assert_equal('foo', 'bar') -< Will result in a string to be added to |v:errors|: - test.vim line 12: Expected 'foo' but got 'bar' ~ - - *assert_equalfile()* -assert_equalfile({fname-one}, {fname-two} [, {msg}]) - When the files {fname-one} and {fname-two} do not contain - exactly the same text an error message is added to |v:errors|. - Also see |assert-return|. - When {fname-one} or {fname-two} does not exist the error will - mention that. - -assert_exception({error} [, {msg}]) *assert_exception()* - When v:exception does not contain the string {error} an error - message is added to |v:errors|. Also see |assert-return|. - This can be used to assert that a command throws an exception. - Using the error number, followed by a colon, avoids problems - with translations: > - try - commandthatfails - call assert_false(1, 'command should have failed') - catch - call assert_exception('E492:') - endtry - -assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()* - Run {cmd} and add an error message to |v:errors| if it does - NOT produce an error. Also see |assert-return|. - When {error} is given it must match in |v:errmsg|. - Note that beeping is not considered an error, and some failing - commands only beep. Use |assert_beeps()| for those. - -assert_false({actual} [, {msg}]) *assert_false()* - When {actual} is not false an error message is added to - |v:errors|, like with |assert_equal()|. - Also see |assert-return|. - A value is false when it is zero or |v:false|. When "{actual}" - is not a number or |v:false| the assert fails. - When {msg} is omitted an error in the form - "Expected False but got {actual}" is produced. - -assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* - This asserts number and |Float| values. When {actual} is lower - than {lower} or higher than {upper} an error message is added - to |v:errors|. Also see |assert-return|. - When {msg} is omitted an error in the form - "Expected range {lower} - {upper}, but got {actual}" is - produced. - - *assert_match()* -assert_match({pattern}, {actual} [, {msg}]) - When {pattern} does not match {actual} an error message is - added to |v:errors|. Also see |assert-return|. - - {pattern} is used as with |=~|: The matching is always done - like 'magic' was set and 'cpoptions' is empty, no matter what - the actual value of 'magic' or 'cpoptions' is. - - {actual} is used as a string, automatic conversion applies. - Use "^" and "$" to match with the start and end of the text. - Use both to match the whole text. - - When {msg} is omitted an error in the form - "Pattern {pattern} does not match {actual}" is produced. - Example: > - assert_match('^f.*o$', 'foobar') -< Will result in a string to be added to |v:errors|: - test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~ - -assert_nobeep({cmd}) *assert_nobeep()* - Run {cmd} and add an error message to |v:errors| if it - produces a beep or visual bell. - Also see |assert_beeps()|. - - *assert_notequal()* -assert_notequal({expected}, {actual} [, {msg}]) - The opposite of `assert_equal()`: add an error message to - |v:errors| when {expected} and {actual} are equal. - Also see |assert-return|. - - *assert_notmatch()* -assert_notmatch({pattern}, {actual} [, {msg}]) - The opposite of `assert_match()`: add an error message to - |v:errors| when {pattern} matches {actual}. - Also see |assert-return|. - -assert_report({msg}) *assert_report()* - Report a test failure directly, using {msg}. - Always returns one. - -assert_true({actual} [, {msg}]) *assert_true()* - When {actual} is not true an error message is added to - |v:errors|, like with |assert_equal()|. - Also see |assert-return|. - A value is |TRUE| when it is a non-zero number or |v:true|. - When {actual} is not a number or |v:true| the assert fails. - When {msg} is omitted an error in the form "Expected True but - got {actual}" is produced. +assert_ functions are documented here: |assert-functions-details| asin({expr}) *asin()* Return the arc sine of {expr} measured in radians, as a |Float| @@ -7938,355 +7823,8 @@ shiftwidth([{col}]) *shiftwidth()* 'vartabstop' feature. If no {col} argument is given, column 1 will be assumed. -sign_define({name} [, {dict}]) *sign_define()* -sign_define({list}) - Define a new sign named {name} or modify the attributes of an - existing sign. This is similar to the |:sign-define| command. - - Prefix {name} with a unique text to avoid name collisions. - There is no {group} like with placing signs. - - The {name} can be a String or a Number. The optional {dict} - argument specifies the sign attributes. The following values - are supported: - icon full path to the bitmap file for the sign. - linehl highlight group used for the whole line the - sign is placed in. - text text that is displayed when there is no icon - or the GUI is not being used. - texthl highlight group used for the text item - numhl highlight group used for 'number' column at the - associated line. Overrides |hl-LineNr|, - |hl-CursorLineNr|. - - If the sign named {name} already exists, then the attributes - of the sign are updated. - - The one argument {list} can be used to define a list of signs. - Each list item is a dictionary with the above items in {dict} - and a 'name' item for the sign name. - - Returns 0 on success and -1 on failure. When the one argument - {list} is used, then returns a List of values one for each - defined sign. - - Examples: > - call sign_define("mySign", { - \ "text" : "=>", - \ "texthl" : "Error", - \ "linehl" : "Search"}) - call sign_define([ - \ {'name' : 'sign1', - \ 'text' : '=>'}, - \ {'name' : 'sign2', - \ 'text' : '!!'} - \ ]) -< -sign_getdefined([{name}]) *sign_getdefined()* - Get a list of defined signs and their attributes. - This is similar to the |:sign-list| command. - - If the {name} is not supplied, then a list of all the defined - signs is returned. Otherwise the attribute of the specified - sign is returned. - - Each list item in the returned value is a dictionary with the - following entries: - icon full path to the bitmap file of the sign - linehl highlight group used for the whole line the - sign is placed in. - name name of the sign - text text that is displayed when there is no icon - or the GUI is not being used. - texthl highlight group used for the text item - numhl highlight group used for 'number' column at the - associated line. Overrides |hl-LineNr|, - |hl-CursorLineNr|. - - Returns an empty List if there are no signs and when {name} is - not found. - - Examples: > - " Get a list of all the defined signs - echo sign_getdefined() - - " Get the attribute of the sign named mySign - echo sign_getdefined("mySign") -< -sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()* - Return a list of signs placed in a buffer or all the buffers. - This is similar to the |:sign-place-list| command. - - If the optional buffer name {expr} is specified, then only the - list of signs placed in that buffer is returned. For the use - of {expr}, see |bufname()|. The optional {dict} can contain - the following entries: - group select only signs in this group - id select sign with this identifier - lnum select signs placed in this line. For the use - of {lnum}, see |line()|. - If {group} is '*', then signs in all the groups including the - global group are returned. If {group} is not supplied or is an - empty string, then only signs in the global group are - returned. If no arguments are supplied, then signs in the - global group placed in all the buffers are returned. - See |sign-group|. - - Each list item in the returned value is a dictionary with the - following entries: - bufnr number of the buffer with the sign - signs list of signs placed in {bufnr}. Each list - item is a dictionary with the below listed - entries - - The dictionary for each sign contains the following entries: - group sign group. Set to '' for the global group. - id identifier of the sign - lnum line number where the sign is placed - name name of the defined sign - priority sign priority - - The returned signs in a buffer are ordered by their line - number and priority. - - Returns an empty list on failure or if there are no placed - signs. - - Examples: > - " Get a List of signs placed in eval.c in the - " global group - echo sign_getplaced("eval.c") - - " Get a List of signs in group 'g1' placed in eval.c - echo sign_getplaced("eval.c", {'group' : 'g1'}) - - " Get a List of signs placed at line 10 in eval.c - echo sign_getplaced("eval.c", {'lnum' : 10}) - - " Get sign with identifier 10 placed in a.py - echo sign_getplaced("a.py", {'id' : 10}) - - " Get sign with id 20 in group 'g1' placed in a.py - echo sign_getplaced("a.py", {'group' : 'g1', - \ 'id' : 20}) - - " Get a List of all the placed signs - echo sign_getplaced() -< - *sign_jump()* -sign_jump({id}, {group}, {expr}) - Open the buffer {expr} or jump to the window that contains - {expr} and position the cursor at sign {id} in group {group}. - This is similar to the |:sign-jump| command. - - For the use of {expr}, see |bufname()|. - - Returns the line number of the sign. Returns -1 if the - arguments are invalid. - - Example: > - " Jump to sign 10 in the current buffer - call sign_jump(10, '', '') -< - *sign_place()* -sign_place({id}, {group}, {name}, {expr} [, {dict}]) - Place the sign defined as {name} at line {lnum} in file or - buffer {expr} and assign {id} and {group} to sign. This is - similar to the |:sign-place| command. - - If the sign identifier {id} is zero, then a new identifier is - allocated. Otherwise the specified number is used. {group} is - the sign group name. To use the global sign group, use an - empty string. {group} functions as a namespace for {id}, thus - two groups can use the same IDs. Refer to |sign-identifier| - and |sign-group| for more information. - - {name} refers to a defined sign. - {expr} refers to a buffer name or number. For the accepted - values, see |bufname()|. - - The optional {dict} argument supports the following entries: - lnum line number in the file or buffer - {expr} where the sign is to be placed. - For the accepted values, see |line()|. - priority priority of the sign. See - |sign-priority| for more information. - - If the optional {dict} is not specified, then it modifies the - placed sign {id} in group {group} to use the defined sign - {name}. - - Returns the sign identifier on success and -1 on failure. - - Examples: > - " Place a sign named sign1 with id 5 at line 20 in - " buffer json.c - call sign_place(5, '', 'sign1', 'json.c', - \ {'lnum' : 20}) - - " Updates sign 5 in buffer json.c to use sign2 - call sign_place(5, '', 'sign2', 'json.c') - - " Place a sign named sign3 at line 30 in - " buffer json.c with a new identifier - let id = sign_place(0, '', 'sign3', 'json.c', - \ {'lnum' : 30}) - - " Place a sign named sign4 with id 10 in group 'g3' - " at line 40 in buffer json.c with priority 90 - call sign_place(10, 'g3', 'sign4', 'json.c', - \ {'lnum' : 40, 'priority' : 90}) -< - *sign_placelist()* -sign_placelist({list}) - Place one or more signs. This is similar to the - |sign_place()| function. The {list} argument specifies the - List of signs to place. Each list item is a dict with the - following sign attributes: - buffer buffer name or number. For the accepted - values, see |bufname()|. - group sign group. {group} functions as a namespace - for {id}, thus two groups can use the same - IDs. If not specified or set to an empty - string, then the global group is used. See - |sign-group| for more information. - id sign identifier. If not specified or zero, - then a new unique identifier is allocated. - Otherwise the specified number is used. See - |sign-identifier| for more information. - lnum line number in the buffer {expr} where the - sign is to be placed. For the accepted values, - see |line()|. - name name of the sign to place. See |sign_define()| - for more information. - priority priority of the sign. When multiple signs are - placed on a line, the sign with the highest - priority is used. If not specified, the - default value of 10 is used. See - |sign-priority| for more information. - - If {id} refers to an existing sign, then the existing sign is - modified to use the specified {name} and/or {priority}. - - Returns a List of sign identifiers. If failed to place a - sign, the corresponding list item is set to -1. - - Examples: > - " Place sign s1 with id 5 at line 20 and id 10 at line - " 30 in buffer a.c - let [n1, n2] = sign_place([ - \ {'id' : 5, - \ 'name' : 's1', - \ 'buffer' : 'a.c', - \ 'lnum' : 20}, - \ {'id' : 10, - \ 'name' : 's1', - \ 'buffer' : 'a.c', - \ 'lnum' : 30} - \ ]) - - " Place sign s1 in buffer a.c at line 40 and 50 - " with auto-generated identifiers - let [n1, n2] = sign_place([ - \ {'name' : 's1', - \ 'buffer' : 'a.c', - \ 'lnum' : 40}, - \ {'name' : 's1', - \ 'buffer' : 'a.c', - \ 'lnum' : 50} - \ ]) -< -sign_undefine([{name}]) *sign_undefine()* -sign_undefine({list}) - Deletes a previously defined sign {name}. This is similar to - the |:sign-undefine| command. If {name} is not supplied, then - deletes all the defined signs. +sign_ functions are documented here: |sign-functions-details| - The one argument {list} can be used to undefine a list of - signs. Each list item is the name of a sign. - - Returns 0 on success and -1 on failure. For the one argument - {list} call, returns a list of values one for each undefined - sign. - - Examples: > - " Delete a sign named mySign - call sign_undefine("mySign") - - " Delete signs 'sign1' and 'sign2' - call sign_undefine(["sign1", "sign2"]) - - " Delete all the signs - call sign_undefine() -< -sign_unplace({group} [, {dict}]) *sign_unplace()* - Remove a previously placed sign in one or more buffers. This - is similar to the |:sign-unplace| command. - - {group} is the sign group name. To use the global sign group, - use an empty string. If {group} is set to '*', then all the - groups including the global group are used. - The signs in {group} are selected based on the entries in - {dict}. The following optional entries in {dict} are - supported: - buffer buffer name or number. See |bufname()|. - id sign identifier - If {dict} is not supplied, then all the signs in {group} are - removed. - - Returns 0 on success and -1 on failure. - - Examples: > - " Remove sign 10 from buffer a.vim - call sign_unplace('', {'buffer' : "a.vim", 'id' : 10}) - - " Remove sign 20 in group 'g1' from buffer 3 - call sign_unplace('g1', {'buffer' : 3, 'id' : 20}) - - " Remove all the signs in group 'g2' from buffer 10 - call sign_unplace('g2', {'buffer' : 10}) - - " Remove sign 30 in group 'g3' from all the buffers - call sign_unplace('g3', {'id' : 30}) - - " Remove all the signs placed in buffer 5 - call sign_unplace('*', {'buffer' : 5}) - - " Remove the signs in group 'g4' from all the buffers - call sign_unplace('g4') - - " Remove sign 40 from all the buffers - call sign_unplace('*', {'id' : 40}) - - " Remove all the placed signs from all the buffers - call sign_unplace('*') -< -sign_unplacelist({list}) *sign_unplacelist()* - Remove previously placed signs from one or more buffers. This - is similar to the |sign_unplace()| function. - - The {list} argument specifies the List of signs to remove. - Each list item is a dict with the following sign attributes: - buffer buffer name or number. For the accepted - values, see |bufname()|. If not specified, - then the specified sign is removed from all - the buffers. - group sign group name. If not specified or set to an - empty string, then the global sign group is - used. If set to '*', then all the groups - including the global group are used. - id sign identifier. If not specified, then all - the signs in the specified group are removed. - - Returns a List where an entry is set to 0 if the corresponding - sign was successfully removed or -1 on failure. - - Example: > - " Remove sign with id 10 from buffer a.vim and sign - " with id 20 from buffer b.vim - call sign_unplace([{'id' : 10, 'buffer' : "a.vim"}, - \ {'id' : 20, 'buffer' : 'b.vim'}]) -< simplify({filename}) *simplify()* Simplify the file name as much as possible without changing the meaning. Shortcuts (on MS-Windows) or symbolic links (on @@ -9146,11 +8684,7 @@ termopen({cmd}[, {opts}]) *termopen()* See |terminal| for more information. -test_garbagecollect_now() *test_garbagecollect_now()* - Like |garbagecollect()|, but executed right away. This must - only be called directly to avoid any structure to exist - internally, and |v:testing| must have been set before calling - any function. +test_ functions are documented here: |test-functions-details| tan({expr}) *tan()* Return the tangent of {expr}, measured in radians, as a |Float| diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index 203699435b..52a66c9df5 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -132,6 +132,7 @@ Advanced editing ~ |lua.txt| Lua API Special issues ~ +|testing.txt| testing Vim and Vim scripts |print.txt| printing |remote.txt| using Vim as a server or client diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt index e3ba4ba181..896698aaa6 100644 --- a/runtime/doc/sign.txt +++ b/runtime/doc/sign.txt @@ -337,4 +337,363 @@ See |sign_jump()| for the equivalent Vim script function. Same but jump to the sign in group {group} +============================================================================== +3. Functions *sign-functions-details* + +sign_define({name} [, {dict}]) *sign_define()* +sign_define({list}) + Define a new sign named {name} or modify the attributes of an + existing sign. This is similar to the |:sign-define| command. + + Prefix {name} with a unique text to avoid name collisions. + There is no {group} like with placing signs. + + The {name} can be a String or a Number. The optional {dict} + argument specifies the sign attributes. The following values + are supported: + icon full path to the bitmap file for the sign. + linehl highlight group used for the whole line the + sign is placed in. + text text that is displayed when there is no icon + or the GUI is not being used. + texthl highlight group used for the text item + numhl highlight group used for 'number' column at the + associated line. Overrides |hl-LineNr|, + |hl-CursorLineNr|. + + If the sign named {name} already exists, then the attributes + of the sign are updated. + + The one argument {list} can be used to define a list of signs. + Each list item is a dictionary with the above items in {dict} + and a 'name' item for the sign name. + + Returns 0 on success and -1 on failure. When the one argument + {list} is used, then returns a List of values one for each + defined sign. + + Examples: > + call sign_define("mySign", { + \ "text" : "=>", + \ "texthl" : "Error", + \ "linehl" : "Search"}) + call sign_define([ + \ {'name' : 'sign1', + \ 'text' : '=>'}, + \ {'name' : 'sign2', + \ 'text' : '!!'} + \ ]) +< +sign_getdefined([{name}]) *sign_getdefined()* + Get a list of defined signs and their attributes. + This is similar to the |:sign-list| command. + + If the {name} is not supplied, then a list of all the defined + signs is returned. Otherwise the attribute of the specified + sign is returned. + + Each list item in the returned value is a dictionary with the + following entries: + icon full path to the bitmap file of the sign + linehl highlight group used for the whole line the + sign is placed in. + name name of the sign + text text that is displayed when there is no icon + or the GUI is not being used. + texthl highlight group used for the text item + numhl highlight group used for 'number' column at the + associated line. Overrides |hl-LineNr|, + |hl-CursorLineNr|. + + Returns an empty List if there are no signs and when {name} is + not found. + + Examples: > + " Get a list of all the defined signs + echo sign_getdefined() + + " Get the attribute of the sign named mySign + echo sign_getdefined("mySign") +< +sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()* + Return a list of signs placed in a buffer or all the buffers. + This is similar to the |:sign-place-list| command. + + If the optional buffer name {expr} is specified, then only the + list of signs placed in that buffer is returned. For the use + of {expr}, see |bufname()|. The optional {dict} can contain + the following entries: + group select only signs in this group + id select sign with this identifier + lnum select signs placed in this line. For the use + of {lnum}, see |line()|. + If {group} is '*', then signs in all the groups including the + global group are returned. If {group} is not supplied or is an + empty string, then only signs in the global group are + returned. If no arguments are supplied, then signs in the + global group placed in all the buffers are returned. + See |sign-group|. + + Each list item in the returned value is a dictionary with the + following entries: + bufnr number of the buffer with the sign + signs list of signs placed in {bufnr}. Each list + item is a dictionary with the below listed + entries + + The dictionary for each sign contains the following entries: + group sign group. Set to '' for the global group. + id identifier of the sign + lnum line number where the sign is placed + name name of the defined sign + priority sign priority + + The returned signs in a buffer are ordered by their line + number and priority. + + Returns an empty list on failure or if there are no placed + signs. + + Examples: > + " Get a List of signs placed in eval.c in the + " global group + echo sign_getplaced("eval.c") + + " Get a List of signs in group 'g1' placed in eval.c + echo sign_getplaced("eval.c", {'group' : 'g1'}) + + " Get a List of signs placed at line 10 in eval.c + echo sign_getplaced("eval.c", {'lnum' : 10}) + + " Get sign with identifier 10 placed in a.py + echo sign_getplaced("a.py", {'id' : 10}) + + " Get sign with id 20 in group 'g1' placed in a.py + echo sign_getplaced("a.py", {'group' : 'g1', + \ 'id' : 20}) + + " Get a List of all the placed signs + echo sign_getplaced() +< + *sign_jump()* +sign_jump({id}, {group}, {expr}) + Open the buffer {expr} or jump to the window that contains + {expr} and position the cursor at sign {id} in group {group}. + This is similar to the |:sign-jump| command. + + For the use of {expr}, see |bufname()|. + + Returns the line number of the sign. Returns -1 if the + arguments are invalid. + + Example: > + " Jump to sign 10 in the current buffer + call sign_jump(10, '', '') +< + + *sign_place()* +sign_place({id}, {group}, {name}, {expr} [, {dict}]) + Place the sign defined as {name} at line {lnum} in file or + buffer {expr} and assign {id} and {group} to sign. This is + similar to the |:sign-place| command. + + If the sign identifier {id} is zero, then a new identifier is + allocated. Otherwise the specified number is used. {group} is + the sign group name. To use the global sign group, use an + empty string. {group} functions as a namespace for {id}, thus + two groups can use the same IDs. Refer to |sign-identifier| + and |sign-group| for more information. + + {name} refers to a defined sign. + {expr} refers to a buffer name or number. For the accepted + values, see |bufname()|. + + The optional {dict} argument supports the following entries: + lnum line number in the file or buffer + {expr} where the sign is to be placed. + For the accepted values, see |line()|. + priority priority of the sign. See + |sign-priority| for more information. + + If the optional {dict} is not specified, then it modifies the + placed sign {id} in group {group} to use the defined sign + {name}. + + Returns the sign identifier on success and -1 on failure. + + Examples: > + " Place a sign named sign1 with id 5 at line 20 in + " buffer json.c + call sign_place(5, '', 'sign1', 'json.c', + \ {'lnum' : 20}) + + " Updates sign 5 in buffer json.c to use sign2 + call sign_place(5, '', 'sign2', 'json.c') + + " Place a sign named sign3 at line 30 in + " buffer json.c with a new identifier + let id = sign_place(0, '', 'sign3', 'json.c', + \ {'lnum' : 30}) + + " Place a sign named sign4 with id 10 in group 'g3' + " at line 40 in buffer json.c with priority 90 + call sign_place(10, 'g3', 'sign4', 'json.c', + \ {'lnum' : 40, 'priority' : 90}) +< + + *sign_placelist()* +sign_placelist({list}) + Place one or more signs. This is similar to the + |sign_place()| function. The {list} argument specifies the + List of signs to place. Each list item is a dict with the + following sign attributes: + buffer buffer name or number. For the accepted + values, see |bufname()|. + group sign group. {group} functions as a namespace + for {id}, thus two groups can use the same + IDs. If not specified or set to an empty + string, then the global group is used. See + |sign-group| for more information. + id sign identifier. If not specified or zero, + then a new unique identifier is allocated. + Otherwise the specified number is used. See + |sign-identifier| for more information. + lnum line number in the buffer {expr} where the + sign is to be placed. For the accepted values, + see |line()|. + name name of the sign to place. See |sign_define()| + for more information. + priority priority of the sign. When multiple signs are + placed on a line, the sign with the highest + priority is used. If not specified, the + default value of 10 is used. See + |sign-priority| for more information. + + If {id} refers to an existing sign, then the existing sign is + modified to use the specified {name} and/or {priority}. + + Returns a List of sign identifiers. If failed to place a + sign, the corresponding list item is set to -1. + + Examples: > + " Place sign s1 with id 5 at line 20 and id 10 at line + " 30 in buffer a.c + let [n1, n2] = sign_placelist([ + \ {'id' : 5, + \ 'name' : 's1', + \ 'buffer' : 'a.c', + \ 'lnum' : 20}, + \ {'id' : 10, + \ 'name' : 's1', + \ 'buffer' : 'a.c', + \ 'lnum' : 30} + \ ]) + + " Place sign s1 in buffer a.c at line 40 and 50 + " with auto-generated identifiers + let [n1, n2] = sign_placelist([ + \ {'name' : 's1', + \ 'buffer' : 'a.c', + \ 'lnum' : 40}, + \ {'name' : 's1', + \ 'buffer' : 'a.c', + \ 'lnum' : 50} + \ ]) +< + +sign_undefine([{name}]) *sign_undefine()* +sign_undefine({list}) + Deletes a previously defined sign {name}. This is similar to + the |:sign-undefine| command. If {name} is not supplied, then + deletes all the defined signs. + + The one argument {list} can be used to undefine a list of + signs. Each list item is the name of a sign. + + Returns 0 on success and -1 on failure. For the one argument + {list} call, returns a list of values one for each undefined + sign. + + Examples: > + " Delete a sign named mySign + call sign_undefine("mySign") + + " Delete signs 'sign1' and 'sign2' + call sign_undefine(["sign1", "sign2"]) + + " Delete all the signs + call sign_undefine() +< + +sign_unplace({group} [, {dict}]) *sign_unplace()* + Remove a previously placed sign in one or more buffers. This + is similar to the |:sign-unplace| command. + + {group} is the sign group name. To use the global sign group, + use an empty string. If {group} is set to '*', then all the + groups including the global group are used. + The signs in {group} are selected based on the entries in + {dict}. The following optional entries in {dict} are + supported: + buffer buffer name or number. See |bufname()|. + id sign identifier + If {dict} is not supplied, then all the signs in {group} are + removed. + + Returns 0 on success and -1 on failure. + + Examples: > + " Remove sign 10 from buffer a.vim + call sign_unplace('', {'buffer' : "a.vim", 'id' : 10}) + + " Remove sign 20 in group 'g1' from buffer 3 + call sign_unplace('g1', {'buffer' : 3, 'id' : 20}) + + " Remove all the signs in group 'g2' from buffer 10 + call sign_unplace('g2', {'buffer' : 10}) + + " Remove sign 30 in group 'g3' from all the buffers + call sign_unplace('g3', {'id' : 30}) + + " Remove all the signs placed in buffer 5 + call sign_unplace('*', {'buffer' : 5}) + + " Remove the signs in group 'g4' from all the buffers + call sign_unplace('g4') + + " Remove sign 40 from all the buffers + call sign_unplace('*', {'id' : 40}) + + " Remove all the placed signs from all the buffers + call sign_unplace('*') +< +sign_unplacelist({list}) *sign_unplacelist()* + Remove previously placed signs from one or more buffers. This + is similar to the |sign_unplace()| function. + + The {list} argument specifies the List of signs to remove. + Each list item is a dict with the following sign attributes: + buffer buffer name or number. For the accepted + values, see |bufname()|. If not specified, + then the specified sign is removed from all + the buffers. + group sign group name. If not specified or set to an + empty string, then the global sign group is + used. If set to '*', then all the groups + including the global group are used. + id sign identifier. If not specified, then all + the signs in the specified group are removed. + + Returns a List where an entry is set to 0 if the corresponding + sign was successfully removed or -1 on failure. + + Example: > + " Remove sign with id 10 from buffer a.vim and sign + " with id 20 from buffer b.vim + call sign_unplacelist([ + \ {'id' : 10, 'buffer' : "a.vim"}, + \ {'id' : 20, 'buffer' : 'b.vim'}, + \ ]) +< + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt new file mode 100644 index 0000000000..b2ce6d670d --- /dev/null +++ b/runtime/doc/testing.txt @@ -0,0 +1,169 @@ +*testing.txt* Nvim + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Testing Vim and Vim script *testing-support* + +Expression evaluation is explained in |eval.txt|. This file goes into details +about writing tests in Vim script. This can be used for testing Vim itself +and for testing plugins. + +1. Testing Vim |testing| +2. Test functions |test-functions-details| +3. Assert funtions |assert-functions-details| + +============================================================================== +1. Testing Vim *testing* + +Vim can be tested after building it, usually with "make test". +The tests are located in the directory "src/testdir". + +There are several types of tests added over time: + test33.in oldest, don't add any of these + test_something.in old style tests + test_something.vim new style tests + + *new-style-testing* +New tests should be added as new style tests. These use functions such as +|assert_equal()| to keep the test commands and the expected result in one +place. + *old-style-testing* +In some cases an old style test needs to be used. E.g. when testing Vim +without the |+eval| feature. + +Find more information in the file src/testdir/README.txt. + +============================================================================== +2. Test functions *test-functions-details* + +test_garbagecollect_now() *test_garbagecollect_now()* + Like garbagecollect(), but executed right away. This must + only be called directly to avoid any structure to exist + internally, and |v:testing| must have been set before calling + any function. + +============================================================================== +3. Assert functions *assert-functions-details* + + +assert_beeps({cmd}) *assert_beeps()* + Run {cmd} and add an error message to |v:errors| if it does + NOT produce a beep or visual bell. + Also see |assert_fails()|, |assert_nobeep()| and + |assert-return|. + + *assert_equal()* +assert_equal({expected}, {actual} [, {msg}]) + When {expected} and {actual} are not equal an error message is + added to |v:errors| and 1 is returned. Otherwise zero is + returned |assert-return|. + There is no automatic conversion, the String "4" is different + from the Number 4. And the number 4 is different from the + Float 4.0. The value of 'ignorecase' is not used here, case + always matters. + When {msg} is omitted an error in the form "Expected + {expected} but got {actual}" is produced. + Example: > + assert_equal('foo', 'bar') +< Will result in a string to be added to |v:errors|: + test.vim line 12: Expected 'foo' but got 'bar' ~ + + *assert_equalfile()* +assert_equalfile({fname-one}, {fname-two}) + When the files {fname-one} and {fname-two} do not contain + exactly the same text an error message is added to |v:errors|. + Also see |assert-return|. + When {fname-one} or {fname-two} does not exist the error will + mention that. + +assert_exception({error} [, {msg}]) *assert_exception()* + When v:exception does not contain the string {error} an error + message is added to |v:errors|. Also see |assert-return|. + This can be used to assert that a command throws an exception. + Using the error number, followed by a colon, avoids problems + with translations: > + try + commandthatfails + call assert_false(1, 'command should have failed') + catch + call assert_exception('E492:') + endtry + +assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()* + Run {cmd} and add an error message to |v:errors| if it does + NOT produce an error. Also see |assert-return|. + When {error} is given it must match in |v:errmsg|. + Note that beeping is not considered an error, and some failing + commands only beep. Use |assert_beeps()| for those. + +assert_false({actual} [, {msg}]) *assert_false()* + When {actual} is not false an error message is added to + |v:errors|, like with |assert_equal()|. + Also see |assert-return|. + A value is false when it is zero. When {actual} is not a + number the assert fails. + When {msg} is omitted an error in the form + "Expected False but got {actual}" is produced. + +assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* + This asserts number and |Float| values. When {actual} is lower + than {lower} or higher than {upper} an error message is added + to |v:errors|. Also see |assert-return|. + When {msg} is omitted an error in the form + "Expected range {lower} - {upper}, but got {actual}" is + produced. + + *assert_match()* +assert_match({pattern}, {actual} [, {msg}]) + When {pattern} does not match {actual} an error message is + added to |v:errors|. Also see |assert-return|. + + {pattern} is used as with |=~|: The matching is always done + like 'magic' was set and 'cpoptions' is empty, no matter what + the actual value of 'magic' or 'cpoptions' is. + + {actual} is used as a string, automatic conversion applies. + Use "^" and "$" to match with the start and end of the text. + Use both to match the whole text. + + When {msg} is omitted an error in the form + "Pattern {pattern} does not match {actual}" is produced. + Example: > + assert_match('^f.*o$', 'foobar') +< Will result in a string to be added to |v:errors|: + test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~ + +assert_nobeep({cmd}) *assert_nobeep()* + Run {cmd} and add an error message to |v:errors| if it + produces a beep or visual bell. + Also see |assert_beeps()|. + + *assert_notequal()* +assert_notequal({expected}, {actual} [, {msg}]) + The opposite of `assert_equal()`: add an error message to + |v:errors| when {expected} and {actual} are equal. + Also see |assert-return|. + + *assert_notmatch()* +assert_notmatch({pattern}, {actual} [, {msg}]) + The opposite of `assert_match()`: add an error message to + |v:errors| when {pattern} matches {actual}. + Also see |assert-return|. + +assert_report({msg}) *assert_report()* + Report a test failure directly, using {msg}. + Always returns one. + +assert_true({actual} [, {msg}]) *assert_true()* + When {actual} is not true an error message is added to + |v:errors|, like with |assert_equal()|. + Also see |assert-return|. + A value is |TRUE| when it is a non-zero number or |v:true|. + When {actual} is not a number or |v:true| the assert fails. + When {msg} is omitted an error in the form "Expected True but + got {actual}" is produced. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index eadc1c04a0..90953a4721 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -498,13 +498,22 @@ Test functions: test_alloc_fail() test_autochdir() test_disable_char_avail() + test_feedinput() + test_garbagecollect_soon + test_getvalue() + test_ignore_error() + test_null_blob() test_null_channel() test_null_dict() test_null_job() test_null_list() test_null_partial() test_null_string() + test_option_not_set() test_override() + test_refcount() + test_scrollbar() + test_setmouse() test_settime() TUI: -- cgit From d6cef4ef9d75556d9ae1c39c3fd0becb3939f621 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 22 Apr 2021 21:54:53 -0400 Subject: vim-patch:8fe1000e9c34 Update runtime files https://github.com/vim/vim/commit/8fe1000e9c3438d0ff36cf2340f0f0e48f8fb89f Omit de.po changes. There's too many lines to port and I don't understand the language. --- runtime/nvim.desktop | 1 + runtime/syntax/debchangelog.vim | 4 ++-- runtime/syntax/debcopyright.vim | 4 ++-- runtime/syntax/debsources.vim | 6 +++--- runtime/syntax/freebasic.vim | 33 +++++++++++++++++++-------------- runtime/syntax/sshconfig.vim | 4 +++- runtime/syntax/yaml.vim | 2 +- 7 files changed, 31 insertions(+), 23 deletions(-) (limited to 'runtime') diff --git a/runtime/nvim.desktop b/runtime/nvim.desktop index be6a2eda82..d08029d2b0 100644 --- a/runtime/nvim.desktop +++ b/runtime/nvim.desktop @@ -2,6 +2,7 @@ Name=Neovim GenericName=Text Editor GenericName[de]=Texteditor +GenericName[sr]=Едитор текста Comment=Edit text files Comment[af]=Redigeer tekslêers Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim index 9d6dfe96a5..2d612061f3 100644 --- a/runtime/syntax/debchangelog.vim +++ b/runtime/syntax/debchangelog.vim @@ -3,7 +3,7 @@ " Maintainer: Debian Vim Maintainers " Former Maintainers: Gerfried Fuchs " Wichert Akkerman -" Last Change: 2019 Apr 21 +" Last Change: 2019 Sep 07 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim " Standard syntax initialization @@ -21,7 +21,7 @@ let s:binNMU='binary-only=yes' syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ " exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"' exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"' -syn match debchangelogTarget contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(squeeze|wheezy|jessie)-%(backports%(-sloppy)=|lts|security)|stretch%(-backports%(-sloppy)=|-security)=|buster%(-backports|-security)=|bullseye|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan)%(-%(security|proposed|updates|backports|commercial|partner))=)+" +syn match debchangelogTarget contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(squeeze|wheezy|jessie)-%(backports%(-sloppy)=|lts|security)|stretch%(-backports%(-sloppy)=|-security)=|buster%(-backports|-security)=|bullseye|bookworm|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan)%(-%(security|proposed|updates|backports|commercial|partner))=)+" syn match debchangelogVersion contained "(.\{-})" syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*" syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*" diff --git a/runtime/syntax/debcopyright.vim b/runtime/syntax/debcopyright.vim index c85ca372d0..c87b876eea 100644 --- a/runtime/syntax/debcopyright.vim +++ b/runtime/syntax/debcopyright.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Debian copyright file " Maintainer: Debian Vim Maintainers -" Last Change: 2018 Feb 05 +" Last Change: 2019 Sep 07 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcopyright.vim " Standard syntax initialization @@ -15,7 +15,7 @@ set cpo&vim syn case match syn match debcopyrightUrl "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" -syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\): *" +syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\|Files-Excluded\%(-[-a-zA-Z0-9]\+\)\=\): *" syn match debcopyrightEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+" syn match debcopyrightEmail "<.\{-}>" syn match debcopyrightComment "^#.*$" contains=@Spell diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim index f90476fe25..97acbf60fc 100644 --- a/runtime/syntax/debsources.vim +++ b/runtime/syntax/debsources.vim @@ -2,7 +2,7 @@ " Language: Debian sources.list " Maintainer: Debian Vim Maintainers " Former Maintainer: Matthijs Mohlmann -" Last Change: 2019 Apr 21 +" Last Change: 2019 Sep 07 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim " Standard syntax initialization @@ -26,7 +26,7 @@ let s:supported = [ \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm', \ 'sid', 'rc-buggy', \ - \ 'trusty', 'xenial', 'bionic', 'cosmic', 'disco', 'eoan', 'devel' + \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'devel' \ ] let s:unsupported = [ \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', @@ -35,7 +35,7 @@ let s:unsupported = [ \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty', \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy', - \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful' + \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic' \ ] let &cpo=s:cpo diff --git a/runtime/syntax/freebasic.vim b/runtime/syntax/freebasic.vim index bce7f9ebc1..68e838f393 100644 --- a/runtime/syntax/freebasic.vim +++ b/runtime/syntax/freebasic.vim @@ -1,12 +1,13 @@ " Vim syntax file " Language: FreeBasic -" Maintainer: Mark Manning -" Updated: 10/22/2006 +" Maintainer: Mark Manning +" Updated: 10/9/2019 +" Version: 7.0b " " Description: " " Based originally on the work done by Allan Kelly -" Updated by Mark Manning +" Updated by Mark Manning " Applied FreeBasic support to the already excellent support " for standard basic syntax (like QB). " @@ -138,7 +139,7 @@ syn keyword freebasicUserInput GETJOYSTICK GETKEY GETMOUSE INKEY INPUT MULTIKEY " types of identifiers like functions, basic commands and " such. MEM 9/9/2006 " -syn match freebasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" +syn match freebasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" syn match freebasicGenericFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1 " " Function list @@ -154,9 +155,13 @@ syn cluster freebasicParenGroup contains=freebasicParenError,freebasicSpecial,fr " " Integer number, or floating point number without a dot and with "f". " -syn region freebasicHex start="&h" end="\W" -syn region freebasicHexError start="&h\x*[g-zG-Z]" end="\W" -syn match freebasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>" +syn region freebasicHex start="&h" end="\W" +syn region freebasicHexError start="&h\x*[g-zG-Z]" end="\W" +syn region freebasicOctal start="&o" end="\W" +syn region freebasicOctalError start="&o[0-7]*[89a-zA-Z]" end="\W" +syn region freebasicBinary start="&b" end="\W" +syn region freebasicBinaryError start="&b[01]*[2-9a-zA-Z]" end="\W" +syn match freebasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>" " " Floating point number, with dot, optional exponent " @@ -170,11 +175,11 @@ syn match freebasicFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" " syn match freebasicFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" " -" Hex number +" Octal number " syn case match -syn match freebasicOctal "\<0\o*\>" -syn match freebasicOctalError "\<0\o*[89]" +syn match freebasicOctal2 "\<0\o*\>" +syn match freebasicOctal2Error "\<0\o*[89a-zA-Z]" " " String and Character contstants " @@ -183,7 +188,7 @@ syn region freebasicString start="'" end="'" contains=freebasicSpecial,freebasi " " Comments " -syn match freebasicSpecial contained "\\." +syn match freebasicSpecial contained "\\\\." syn region freebasicComment start="^rem" end="$" contains=freebasicSpecial,freebasicTodo syn region freebasicComment start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo syn region freebasicComment start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo @@ -197,12 +202,12 @@ syn region freebasicLineNumber start="^\d" end="\s" " " Create the clusters " -syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicInteger,freebasicFloat -syn cluster freebasicError contains=freebasicHexError,freebasicOctalError +syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicOctal2,freebasicBinary,freebasicInteger,freebasicFloat +syn cluster freebasicError contains=freebasicHexError,freebasicOctalError,freebasicOctal2,freebasicBinary " " Used with OPEN statement " -syn match freebasicFilenumber "#\d\+" +syn match freebasicFilenumber "#\d\+" syn match freebasicMathOperator "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen " " The default methods for highlighting. Can be overridden later diff --git a/runtime/syntax/sshconfig.vim b/runtime/syntax/sshconfig.vim index 755d08e768..6c36f56af8 100644 --- a/runtime/syntax/sshconfig.vim +++ b/runtime/syntax/sshconfig.vim @@ -5,7 +5,8 @@ " Contributor: Leonard Ehrenfried " Contributor: Karsten Hopp " Contributor: Dean, Adam Kenneth -" Last Change: 2016 Dec 28 +" Last Change: 2019 Sep 09 +" Added RemoteCommand from pull request #4809 " SSH Version: 7.4p1 " @@ -206,6 +207,7 @@ syn keyword sshconfigKeyword PubkeyAcceptedKeyTypes syn keyword sshconfigKeyword PubkeyAuthentication syn keyword sshconfigKeyword RSAAuthentication syn keyword sshconfigKeyword RekeyLimit +syn keyword sshconfigKeyword RemoteCommand syn keyword sshconfigKeyword RemoteForward syn keyword sshconfigKeyword RequestTTY syn keyword sshconfigKeyword RhostsRSAAuthentication diff --git a/runtime/syntax/yaml.vim b/runtime/syntax/yaml.vim index 626dc8a77f..49f7d049a7 100644 --- a/runtime/syntax/yaml.vim +++ b/runtime/syntax/yaml.vim @@ -3,6 +3,7 @@ " Maintainer: Nikolai Pavlov " First author: Nikolai Weibull " Latest Revision: 2015-03-28 +" removed duplicate yamlKeyValueDelimiter (pull #4799) if exists('b:current_syntax') finish @@ -149,7 +150,6 @@ execute 'syn match yamlBlockMappingKey /\%#=1\s*\zs'.s:ns_plain_out.'\%(\s\+'.s: syn match yamlBlockMappingMerge /^\s*\zs<<\ze:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter syn match yamlBlockMappingMerge /<<\ze\s*:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter contained -syn match yamlKeyValueDelimiter /\s*:/ contained syn match yamlKeyValueDelimiter /\s*:/ contained syn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey -- cgit From 766a10783982936da8f1eaf61280338fcd85019a Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 22 Apr 2021 22:53:42 -0400 Subject: vim-patch:589edb340454 Updte runtime files https://github.com/vim/vim/commit/589edb340454e7f1b19358f129287a636d53d0e1 Omit state() changes in eval.txt because patch v8.1.2047 is not merged. --- runtime/doc/options.txt | 4 +- runtime/doc/repeat.txt | 4 +- runtime/doc/syntax.txt | 10 ++++ .../pack/dist/opt/termdebug/plugin/termdebug.vim | 57 ++++++++++++++-------- runtime/plugin/netrwPlugin.vim | 2 +- runtime/syntax/json.vim | 6 +-- 6 files changed, 55 insertions(+), 28 deletions(-) (limited to 'runtime') diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 63a9db9d0d..910997cb1e 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -6713,8 +6713,8 @@ A jump table for the options with a short description can be found at |Q_op|. ":map X" to make backspace delete the character in front of the cursor. When 'l' is included and it is used after an operator at the end of a - line then it will not move to the next line. This makes "dl", "cl", - "yl" etc. work normally. + line (not an empty line) then it will not move to the next line. This + makes "dl", "cl", "yl" etc. work normally. *'wildchar'* *'wc'* 'wildchar' 'wc' number (Vim default: , Vi default: CTRL-E) diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt index 3a7337d2e8..e9e0ec0581 100644 --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -206,10 +206,10 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|. When {file} contains wildcards it is expanded to all matching files. Example: > - :runtime! plugin/*.vim + :runtime! plugin/**/*.vim < This is what Vim uses to load the plugin files when starting up. This similar command: > - :runtime plugin/*.vim + :runtime plugin/**/*.vim < would source the first file only. When 'verbose' is one or higher, there is a message diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index aeee02a1e0..7491577d8b 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1892,6 +1892,16 @@ displayed line. The default value is 10. The disadvantage of using a larger number is that redrawing can become slow. +JSON *json.vim* *ft-json-syntax* + +The json syntax file provides syntax highlighting with conceal support by +default. To disable concealment: > + let g:vim_json_conceal = 0 + +To disable syntax highlighting of errors: > + let g:vim_json_warnings = 0 + + LACE *lace.vim* *ft-lace-syntax* Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim index fa5d064048..be5d4b345e 100644 --- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim +++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @@ -552,9 +552,14 @@ func s:DecodeMessage(quotedText) if a:quotedText[i] == '\' let i += 1 if a:quotedText[i] == 'n' - " drop \n - let i += 1 - continue + " drop \n + let i += 1 + continue + elseif a:quotedText[i] == 't' + " append \t + let i += 1 + let result .= "\t" + continue endif endif let result .= a:quotedText[i] @@ -715,12 +720,22 @@ func s:CommOutput(job_id, msgs, event) endfor endfunc +func s:GotoProgram() + if has('win32') + if executable('powershell') + call system(printf('powershell -Command "add-type -AssemblyName microsoft.VisualBasic;[Microsoft.VisualBasic.Interaction]::AppActivate(%d);"', s:pid)) + endif + else + win_gotoid(s:ptywin) + endif +endfunc + " Install commands in the current window to control the debugger. func s:InstallCommands() let save_cpo = &cpo set cpo&vim - command Break call s:SetBreakpoint() + command -nargs=? Break call s:SetBreakpoint() command Clear call s:ClearBreakpoint() command Step call s:SendCommand('-exec-step') command Over call s:SendCommand('-exec-next') @@ -738,7 +753,7 @@ func s:InstallCommands() command -range -nargs=* Evaluate call s:Evaluate(, ) command Gdb call win_gotoid(s:gdbwin) - command Program call win_gotoid(s:ptywin) + command Program call s:GotoProgram() command Source call s:GotoSourcewinOrCreateIt() command Asm call s:GotoAsmwinOrCreateIt() command Winbar call s:InstallWinbar() @@ -801,7 +816,7 @@ func s:DeleteCommands() endfunc " :Break - Set a breakpoint at the cursor position. -func s:SetBreakpoint() +func s:SetBreakpoint(at) " Setting a breakpoint may not work while the program is running. " Interrupt to make it work. let do_continue = 0 @@ -814,9 +829,11 @@ func s:SetBreakpoint() endif sleep 10m endif + " Use the fname:lnum format, older gdb can't handle --source. - call s:SendCommand('-break-insert ' - \ . fnameescape(expand('%:p')) . ':' . line('.')) + let at = empty(a:at) ? + \ fnameescape(expand('%:p')) . ':' . line('.') : a:at + call s:SendCommand('-break-insert ' . at) if do_continue call s:SendCommand('-exec-continue') endif @@ -831,14 +848,14 @@ func s:ClearBreakpoint() let idx = 0 for id in s:breakpoint_locations[bploc] if has_key(s:breakpoints, id) - " Assume this always works, the reply is simply "^done". - call s:SendCommand('-break-delete ' . id) - for subid in keys(s:breakpoints[id]) - exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid) - endfor - unlet s:breakpoints[id] - unlet s:breakpoint_locations[bploc][idx] - break + " Assume this always works, the reply is simply "^done". + call s:SendCommand('-break-delete ' . id) + for subid in keys(s:breakpoints[id]) + exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid) + endfor + unlet s:breakpoints[id] + unlet s:breakpoint_locations[bploc][idx] + break else let idx += 1 endif @@ -1242,8 +1259,8 @@ func s:HandleBreakpointDelete(msg) if has_key(s:breakpoints, id) for [subid, entry] in items(s:breakpoints[id]) if has_key(entry, 'placed') - exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid) - unlet entry['placed'] + exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid) + unlet entry['placed'] endif endfor unlet s:breakpoints[id] @@ -1267,7 +1284,7 @@ func s:BufRead() for [id, entries] in items(s:breakpoints) for [subid, entry] in items(entries) if entry['fname'] == fname - call s:PlaceSign(id, subid, entry) + call s:PlaceSign(id, subid, entry) endif endfor endfor @@ -1279,7 +1296,7 @@ func s:BufUnloaded() for [id, entries] in items(s:breakpoints) for [subid, entry] in items(entries) if entry['fname'] == fname - let entry['placed'] = 0 + let entry['placed'] = 0 endif endfor endfor diff --git a/runtime/plugin/netrwPlugin.vim b/runtime/plugin/netrwPlugin.vim index 87302cf23b..b0d5044836 100644 --- a/runtime/plugin/netrwPlugin.vim +++ b/runtime/plugin/netrwPlugin.vim @@ -81,7 +81,7 @@ if !exists("g:netrw_nogx") if !hasmapto('NetrwBrowseX') nmap gx NetrwBrowseX endif - nno NetrwBrowseX :call netrw#BrowseX(netrw#GX(),netrw#CheckIfRemote(netrw#GX())) + nno NetrwBrowseX :call netrw#BrowseX(expand((exists("g:netrw_gx")? g:netrw_gx : '')),netrw#CheckIfRemote()) endif if maparg('gx','v') == "" if !hasmapto('NetrwBrowseXVis') diff --git a/runtime/syntax/json.vim b/runtime/syntax/json.vim index e3210a9702..3f49b0c5ea 100644 --- a/runtime/syntax/json.vim +++ b/runtime/syntax/json.vim @@ -2,7 +2,7 @@ " Language: JSON " Maintainer: vacancy " Previous Maintainer: Eli Parra -" Last Change: 2019 Jul 08 +" Last Change: 2019 Sep 17 " Version: 0.12 if !exists("main_syntax") @@ -20,7 +20,7 @@ syntax match jsonNoise /\%(:\|,\)/ " Syntax: JSON Keywords " Separated into a match and region because a region by itself is always greedy syn match jsonKeywordMatch /"\([^"]\|\\\"\)\+"[[:blank:]\r\n]*\:/ contains=jsonKeyword -if has('conceal') +if has('conceal') && (!exists("g:vim_json_conceal") || g:vim_json_conceal==1) syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ concealends contained else syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ contained @@ -31,7 +31,7 @@ endif " Needs to come after keywords or else a json encoded string will break the " syntax syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze[[:blank:]\r\n]*[,}\]]/ contains=jsonString -if has('conceal') +if has('conceal') && (!exists("g:vim_json_conceal") || g:vim_json_conceal==1) syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ concealends contains=jsonEscape contained else syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=jsonEscape contained -- cgit From b1fed1ada9635f762cb9b3a7f2fe38df6f166df4 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 22 Apr 2021 23:08:48 -0400 Subject: vim-patch:5be4ceecea55 Update runtime files. https://github.com/vim/vim/commit/5be4ceecea5520265066eac972460ebb1cdf05e7 --- runtime/autoload/htmlcomplete.vim | 5 +++-- runtime/doc/change.txt | 2 +- runtime/doc/cmdline.txt | 6 +++--- runtime/doc/editing.txt | 2 +- runtime/doc/eval.txt | 4 ++++ runtime/doc/index.txt | 8 ++++---- runtime/doc/insert.txt | 8 ++++---- runtime/doc/options.txt | 4 ++-- runtime/doc/quickref.txt | 5 ++--- runtime/doc/usr_41.txt | 1 + runtime/ftplugin/bash.vim | 19 ++++--------------- runtime/ftplugin/matlab.vim | 5 +++-- runtime/indent/bash.vim | 18 ++++++++++++++++++ runtime/indent/systemverilog.vim | 12 ++++++------ runtime/menu.vim | 3 ++- runtime/syntax/bash.vim | 20 ++++++++++++++++++++ runtime/syntax/bindzone.vim | 4 ++-- runtime/syntax/hog.vim | 25 +++++++++++++++++-------- runtime/syntax/iss.vim | 8 ++++---- runtime/syntax/jargon.vim | 6 +++--- runtime/syntax/ld.vim | 2 +- runtime/syntax/reva.vim | 4 ++-- runtime/syntax/spec.vim | 4 ++-- 23 files changed, 109 insertions(+), 66 deletions(-) create mode 100644 runtime/indent/bash.vim create mode 100644 runtime/syntax/bash.vim (limited to 'runtime') diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim index 984ba8b58e..6b9d49a469 100644 --- a/runtime/autoload/htmlcomplete.vim +++ b/runtime/autoload/htmlcomplete.vim @@ -1,7 +1,7 @@ " Vim completion script " Language: HTML and XHTML " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) -" Last Change: 2014 Jun 20 +" Last Change: 2019 Sep 27 " Distinguish between HTML versions. " To use with other HTML versions add another "elseif" condition to match @@ -245,7 +245,8 @@ function! htmlcomplete#CompleteTags(findstart, base) " If context contains white space it is attribute. " It can be also value of attribute. " We have to get first word to offer proper completions - if context == '' + if context =~ '^\s*$' + " empty or whitespace line let tag = '' else let tag = split(context)[0] diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index 310d244fbc..9f889af6cc 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1140,7 +1140,7 @@ Rationale: In Vi the "y" command followed by a backwards motion would With a linewise yank command the cursor is put in the first line, but the column is unmodified, thus it may not be on the first yanked character. -There are ten types of registers: *registers* *E354* +There are ten types of registers: *registers* *{register}* *E354* 1. The unnamed register "" 2. 10 numbered registers "0 to "9 3. The small delete register "- diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index 098245b5a8..6ffe5691bf 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -119,7 +119,7 @@ CTRL-K {char1} {char2} *c_CTRL-K* enter digraph (see |digraphs|). When {char1} is a special key, the code for that key is inserted in <> form. -CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_* +CTRL-R {register} *c_CTRL-R* *c_* Insert the contents of a numbered or named register. Between typing CTRL-R and the second character '"' will be displayed to indicate that you are expected to enter the name of a @@ -178,8 +178,8 @@ CTRL-R CTRL-L *c_CTRL-R_CTRL-L* *c__* *c_CTRL-R_CTRL-R* *c__* *c_CTRL-R_CTRL-O* *c__* -CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} -CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} +CTRL-R CTRL-R {register CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} +CTRL-R CTRL-O {register CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} Insert register or object under the cursor. Works like |c_CTRL-R| but inserts the text literally. For example, if register a contains "xy^Hz" (where ^H is a backspace), diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index aa964a521f..67addec8f2 100644 --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -1372,7 +1372,7 @@ focus. If you want to automatically reload a file when it has been changed outside of Vim, set the 'autoread' option. This doesn't work at the moment you write the file though, only when the file wasn't changed inside of Vim. - + *ignore-timestamp* If you do not want to be asked or automatically reload the file, you can use this: > set buftype=nofile diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index c8783071f1..bded8deb0f 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -8571,6 +8571,10 @@ systemlist({cmd} [, {input} [, {keepempty}]]) *systemlist()* unless {keepempty} is non-zero. Note that on MS-Windows you may get trailing CR characters. + To see the difference between "echo hello" and "echo -n hello" + use |system()| and |split()|: > + echo split(system('echo hello'), '\n', 1) +< Returns an empty string on error. diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index c824a9f9f6..6e46aed8d3 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -61,14 +61,14 @@ tag char action in Insert mode ~ the cursor |i_CTRL-Q| CTRL-Q same as CTRL-V, unless used for terminal control flow -|i_CTRL-R| CTRL-R {0-9a-z"%#*:=} +|i_CTRL-R| CTRL-R {register} insert the contents of a register -|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:=} +|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {register} insert the contents of a register literally -|i_CTRL-R_CTRL-O| CTRL-R CTRL-O {0-9a-z"%#*:=} +|i_CTRL-R_CTRL-O| CTRL-R CTRL-O {register} insert the contents of a register literally and don't auto-indent -|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {0-9a-z"%#*:=} +|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {register} insert the contents of a register literally and fix indent. CTRL-S (used for terminal control flow) diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index 6902ed5fd4..579087e23c 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -95,7 +95,7 @@ CTRL-K {char1} [char2] CTRL-N Find next keyword (see |i_CTRL-N|). CTRL-P Find previous keyword (see |i_CTRL-P|). -CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* +CTRL-R {register} *i_CTRL-R* Insert the contents of a register. Between typing CTRL-R and the second character, '"' will be displayed to indicate that you are expected to enter the name of a register. @@ -132,7 +132,7 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* sequence will be broken. See |registers| about registers. -CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* +CTRL-R CTRL-R {register} *i_CTRL-R_CTRL-R* Insert the contents of a register. Works like using a single CTRL-R, but the text is inserted literally, not as if typed. This differs when the register contains characters like . @@ -144,7 +144,7 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* The '.' register (last inserted text) is still inserted as typed. -CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O* +CTRL-R CTRL-O {register} *i_CTRL-R_CTRL-O* Insert the contents of a register literally and don't auto-indent. Does the same as pasting with the mouse ||. When the register is linewise this will @@ -153,7 +153,7 @@ CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O* The '.' register (last inserted text) is still inserted as typed. -CTRL-R CTRL-P {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-P* +CTRL-R CTRL-P {register} *i_CTRL-R_CTRL-P* Insert the contents of a register literally and fix the indent, like |[|. Does not replace characters! diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 910997cb1e..b57a77a952 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -6504,8 +6504,8 @@ A jump table for the options with a short description can be found at |Q_op|. 'undolevels' 'ul' number (default 1000) global or local to buffer |global-local| Maximum number of changes that can be undone. Since undo information - is kept in memory, higher numbers will cause more memory to be used - (nevertheless, a single change can use an unlimited amount of memory). + is kept in memory, higher numbers will cause more memory to be used. + Nevertheless, a single change can already use a large amount of memory. Set to 0 for Vi compatibility: One level of undo and "u" undoes itself: > set ul=0 diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt index 4a47fd4b57..fbeb1fd3bb 100644 --- a/runtime/doc/quickref.txt +++ b/runtime/doc/quickref.txt @@ -292,7 +292,7 @@ moving around: |i_CTRL-A| CTRL-A insert previously inserted text |i_CTRL-@| CTRL-@ insert previously inserted text and stop Insert mode -|i_CTRL-R| CTRL-R {0-9a-z%#:.-="} insert the contents of a register +|i_CTRL-R| CTRL-R {register} insert the contents of a register |i_CTRL-N| CTRL-N insert next match of identifier before the cursor @@ -1014,8 +1014,7 @@ Short explanation of each option: *option-list* three digits) |c_CTRL-K| CTRL-K {char1} {char2} enter digraph (See |Q_di|) -|c_CTRL-R| CTRL-R {0-9a-z"%#:-=} - insert the contents of a register +|c_CTRL-R| CTRL-R {register} insert the contents of a register |c_| / cursor left/right |c_| / cursor one word left/right diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 41948f577e..119be32433 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -848,6 +848,7 @@ Insert mode completion: *completion-functions* complete_check() check if completion should be aborted complete_info() get current completion information pumvisible() check if the popup menu is displayed + pum_getpos() position and size of popup menu if visible Folding: *folding-functions* foldclosed() check for a closed fold at a specific line diff --git a/runtime/ftplugin/bash.vim b/runtime/ftplugin/bash.vim index a3d01fc2ad..7bd9787b6c 100644 --- a/runtime/ftplugin/bash.vim +++ b/runtime/ftplugin/bash.vim @@ -11,21 +11,10 @@ if exists("b:did_ftplugin") finish endif +unlet! b:is_sh +unlet! b:is_kornshell let b:is_bash = 1 -if exists("b:is_sh") - unlet b:is_sh -endif -if exists("b:is_kornshell") - unlet b:is_kornshell -endif -" Setting 'filetype' here directly won't work, since we are being invoked -" through an autocommand. Do it later, on the BufWinEnter event. -augroup bash_filetype - au BufWinEnter * call SetBashFt() -augroup END +runtime! ftplugin/sh.vim ftplugin/sh_*.vim ftplugin/sh/*.vim -func SetBashFt() - au! bash_filetype - set ft=sh -endfunc +" vim: ts=8 diff --git a/runtime/ftplugin/matlab.vim b/runtime/ftplugin/matlab.vim index 205111c3c2..a1a282f19e 100644 --- a/runtime/ftplugin/matlab.vim +++ b/runtime/ftplugin/matlab.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: matlab " Maintainer: Jake Wasserman -" Last Changed: 2014 Dec 30 +" Last Change: 2019 Sep 27 " Contributors: " Charles Campbell @@ -24,8 +24,9 @@ endif setlocal suffixesadd=.m setlocal suffixes+=.asv +setlocal commentstring=%\ %s -let b:undo_ftplugin = "setlocal suffixesadd< suffixes< " +let b:undo_ftplugin = "setlocal suffixesadd< suffixes< commentstring< " \ . "| unlet! b:match_words" let &cpo = s:save_cpo diff --git a/runtime/indent/bash.vim b/runtime/indent/bash.vim new file mode 100644 index 0000000000..b91640687c --- /dev/null +++ b/runtime/indent/bash.vim @@ -0,0 +1,18 @@ +" Vim indent file +" Language: bash +" Maintainer: Bram +" Last Change: 2019 Sep 27 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif + +" The actual indenting is in sh.vim and controlled by buffer-local variables. +unlet! b:is_sh +unlet! b:is_kornshell +let b:is_bash = 1 + +runtime! indent/sh.vim + +" vim: ts=8 diff --git a/runtime/indent/systemverilog.vim b/runtime/indent/systemverilog.vim index 91fba4c3b6..68487f84ba 100644 --- a/runtime/indent/systemverilog.vim +++ b/runtime/indent/systemverilog.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: SystemVerilog " Maintainer: kocha -" Last Change: 12-Aug-2013. +" Last Change: 05-Feb-2017 by Bilal Wasim " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -74,7 +74,7 @@ function SystemVerilogIndent() " Indent after if/else/for/case/always/initial/specify/fork blocks elseif last_line =~ '`\@' || - \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\|do\|foreach\|randcase\)\>' || + \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\|do\|foreach\|forever\|randcase\)\>' || \ last_line =~ '^\s*\<\(always\|always_comb\|always_ff\|always_latch\)\>' || \ last_line =~ '^\s*\<\(initial\|specify\|fork\|final\)\>' if last_line !~ '\(;\|\\)\s*' . sv_comment . '*$' || @@ -129,9 +129,9 @@ function SystemVerilogIndent() " De-indent for the end of one-line block elseif ( last_line !~ '\' || \ last_line =~ '\(//\|/\*\).*\' ) && - \ last_line2 =~ '\<\(`\@.*' . + \ last_line2 =~ '\<\(`\@.*' . \ sv_comment . '*$' && - \ last_line2 !~ '\(//\|/\*\).*\<\(`\@' && + \ last_line2 !~ '\(//\|/\*\).*\<\(`\@' && \ last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' && \ ( last_line2 !~ '\' || \ last_line2 =~ '\(//\|/\*\).*\' ) @@ -194,7 +194,7 @@ function SystemVerilogIndent() \ last_line !~ '^\s*\<\(property\|checker\|program\)\>' && \ last_line !~ '^\s*\()*\s*;\|)\+\)\s*' . sv_comment . '*$' && \ ( last_line =~ - \ '\<\(`\@' || + \ '\<\(`\@' || \ last_line =~ ')\s*' . sv_comment . '*$' || \ last_line =~ sv_openstat . '\s*' . sv_comment . '*$' ) let ind = ind - offset @@ -227,4 +227,4 @@ endfunction let &cpo = s:cpo_save unlet s:cpo_save -" vim:sw=2 +" vim:sw=2 \ No newline at end of file diff --git a/runtime/menu.vim b/runtime/menu.vim index 78306a57b8..3d0a873973 100644 --- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -29,7 +29,8 @@ if exists("v:lang") || &langmenu != "" let s:lang = v:lang endif " A language name must be at least two characters, don't accept "C" - if strlen(s:lang) > 1 + " Also skip "en_US" to avoid picking up "en_gb" translations. + if strlen(s:lang) > 1 && s:lang !~? '^en_us' " When the language does not include the charset add 'encoding' if s:lang =~ '^\a\a$\|^\a\a_\a\a$' let s:lang = s:lang . '.' . &enc diff --git a/runtime/syntax/bash.vim b/runtime/syntax/bash.vim new file mode 100644 index 0000000000..75ab99938e --- /dev/null +++ b/runtime/syntax/bash.vim @@ -0,0 +1,20 @@ +" Vim syntax file +" Language: bash +" Maintainer: Bram +" Last Change: 2019 Sep 27 + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" The actual syntax is in sh.vim and controlled by buffer-local variables. +unlet! b:is_sh +unlet! b:is_kornshell +let b:is_bash = 1 + +runtime! syntax/sh.vim + +let b:current_syntax = 'bash' + +" vim: ts=8 diff --git a/runtime/syntax/bindzone.vim b/runtime/syntax/bindzone.vim index df3c789d98..bb790bb75c 100644 --- a/runtime/syntax/bindzone.vim +++ b/runtime/syntax/bindzone.vim @@ -32,8 +32,8 @@ syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\ syn match zoneSpecial contained /^[@*.]\s/ syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite -syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite -syn keyword zoneRRType contained A AAAA CNAME DNAME HINFO MX NS PTR SOA SRV TXT SPF nextgroup=zoneRData skipwhite +syn keyword zoneClass contained IN CHAOS CH HS HESIOD nextgroup=zoneRRType,zoneTTL skipwhite +syn keyword zoneRRType contained A AAAA CERT CNAME DNAME DNSKEY DS HINFO LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RP RRSIG SSHFP SOA SPF SRV TLSA TXT nextgroup=zoneRData skipwhite syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/ diff --git a/runtime/syntax/hog.vim b/runtime/syntax/hog.vim index 7206815202..24aa2035ba 100644 --- a/runtime/syntax/hog.vim +++ b/runtime/syntax/hog.vim @@ -1,8 +1,9 @@ " Vim syntax file " Language: hog (Snort.conf + .rules) " Maintainer: Victor Roemer, . -" Last Change: 2015 Oct 24 -> Rename syntax items from Snort -> Hog +" Last Change: 2019 Sep 22 " 2012 Oct 24 -> Originalish release +" 2019 Sep 22 -> included PR 3069 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -91,7 +92,7 @@ syn match HogOpRange ":" contained " Rules syn keyword HogRuleAction activate alert drop block dynamic log pass reject sdrop sblock skipwhite nextgroup=HogRuleProto,HogRuleBlock -syn keyword HogRuleProto ip tcp udp icmp skipwhite contained nextgroup=HogRuleSrcIP +syn keyword HogRuleProto ip tcp tcp-pkt tcp-stream udp icmp http ftp tls smb dns dcerpc ssh smtp imap msn modbus dnp3 enip nfs ikev2 ntp skipwhite contained nextgroup=HogRuleSrcIP syn match HogRuleSrcIP "\S\+" transparent skipwhite contained contains=HogIPVarList,HogIPAddr,HogVar,HogOpNot nextgroup=HogRuleSrcPort syn match HogRuleSrcPort "\S\+" transparent skipwhite contained contains=HogPortVarList,HogVar,HogPort,HogOpRange,HogOpNot nextgroup=HogRuleDir syn match HogRuleDir "->\|<>" skipwhite contained nextgroup=HogRuleDstIP @@ -100,13 +101,21 @@ syn match HogRuleDstPort "\S\+" transparent skipwhite contained contain syn region HogRuleBlock start="(" end=")" transparent skipwhite contained contains=HogRuleOption,HogComment fold ",HogString,HogComment,HogVar,HogOptNot "syn region HogRuleOption start="\" end="\ze;" skipwhite contained contains=HogNumber -syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP msg gid sid rev classtype priority metadata content nocase rawbytes -syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP depth offset distance within http_client_body http_cookie http_raw_cookie http_header -syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_raw_header http_method http_uri http_raw_uri http_stat_code http_stat_msg -syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP fast_pattern uricontent urilen isdataat pcre pkt_data file_data base64_decode base64_data -syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP byte_test byte_jump byte_extract ftpbounce asn1 cvs dce_iface dce_opnum dce_stub_data +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP msg gid sid rev classtype priority metadata target content nocase rawbytes +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP depth startswith offset distance within http_client_body http_cookie http_raw_cookie http_header +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_raw_header http_request_line http_method http_uri http_raw_uri http_protocol http_response_line http_stat_code http_stat_msg +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_user_agent http_accept http_accept_enc http_accept_lang http_connection http_content_type http_content_len +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_referer http_start http_header_names http_server_body http_host http_raw_host +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP filename fileext filemagic filestore filemd5 filesha1 filesha256 filesize +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP dns_query tls_cert_subject tls_cert_issuer tls_cert_serial tls_cert_fingerprint +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP tls_sni tls_cert_notbefore tls_cert_notafter tls_cert_expired tls_cert_valid +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP tls.version tls.subject tls.issuerdn tls.fingerprint tls.store ja3_hash ja3_string +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP modbus dnp3_func dnp3_ind dnp3_obj dnp3_data enip_command cip_service +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP app-layer-protocol app-layer-event xbits iprep lua luajit +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP fast_pattern prefilter uricontent urilen isdataat pcre pkt_data file_data base64_decode base64_data +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP byte_test byte_jump byte_extract ftpdata_command ftpbounce asn1 cvs dce_iface dce_opnum dce_stub_data syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP sip_method sip_stat_code sip_header sip_body gtp_type gtp_info gtp_version ssl_version -syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP ssl_state fragoffset ttl tos id ipopts fragbits dsize flags flow flowbits seq ack window +syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP ssl_state fragoffset ttl tos id ipopts geoip fragbits dsize flags flow flowbits flowint seq ack window syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP itype icode icmp_id icmp_seq rpc ip_proto sameip stream_reassemble stream_size syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP logto session resp react tag activates activated_by count replace detection_filter syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP threshold reference sd_pattern file_type file_group diff --git a/runtime/syntax/iss.vim b/runtime/syntax/iss.vim index e58c618b7f..bd28c732b1 100644 --- a/runtime/syntax/iss.vim +++ b/runtime/syntax/iss.vim @@ -2,7 +2,7 @@ " Language: Inno Setup File (iss file) and My InnoSetup extension " Maintainer: Jason Mills (jmills@cs.mun.ca) " Previous Maintainer: Dominique Stéphan (dominique@mggen.com) -" Last Change: 2004 Dec 14 +" Last Change: 2019 Sep 27 " " Todo: " - The paramter String: is matched as flag string (because of case ignore). @@ -45,13 +45,13 @@ syn match issParam "Components:\|Description:\|GroupDescription:\|Types:\|Extra syn match issParam "StatusMsg:\|RunOnceId:\|Tasks:" syn match issParam "MessagesFile:\|LicenseFile:\|InfoBeforeFile:\|InfoAfterFile:" -syn match issComment "^\s*;.*$" +syn match issComment "^\s*;.*$" contains=@Spell " folder constant -syn match issFolder "{[^{]*}" +syn match issFolder "{[^{]*}" contains=@NoSpell " string -syn region issString start=+"+ end=+"+ contains=issFolder +syn region issString start=+"+ end=+"+ contains=issFolder,@Spell " [Dirs] syn keyword issDirsFlags deleteafterinstall uninsalwaysuninstall uninsneveruninstall diff --git a/runtime/syntax/jargon.vim b/runtime/syntax/jargon.vim index 415f2bc972..05f45a2c9b 100644 --- a/runtime/syntax/jargon.vim +++ b/runtime/syntax/jargon.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Jargon File -" Maintainer: -" Last Change: 2001 May 26 +" Maintainer: Dan Church (https://github.com/h3xx) +" Last Change: 2019 Sep 27 " " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -11,7 +11,7 @@ endif syn match jargonChaptTitle /:[^:]*:/ syn match jargonEmailAddr /[^<@ ^I]*@[^ ^I>]*/ syn match jargonUrl +\(http\|ftp\)://[^\t )"]*+ -syn match jargonMark /{[^}]*}/ +syn region jargonMark start="{" end="}" " Define the default highlighting. " Only when an item doesn't have highlighting yet diff --git a/runtime/syntax/ld.vim b/runtime/syntax/ld.vim index 22949d9759..6a117ee87b 100644 --- a/runtime/syntax/ld.vim +++ b/runtime/syntax/ld.vim @@ -48,7 +48,7 @@ syn match ldSpecSections '\.\%(text\|data\|bss\|symver\)\>' syn match ldNumber display '\<0[xX]\x\+\>' syn match ldNumber display '\d\+[KM]\>' contains=ldNumberMult -syn match ldNumberMult display '[KM]\>' +syn match ldNumberMult display '\(\d\+\)\@<=[KM]\>' syn match ldOctal contained display '\<0\o\+\>' \ contains=ldOctalZero syn match ldOctalZero contained display '\<0' diff --git a/runtime/syntax/reva.vim b/runtime/syntax/reva.vim index f605992190..39ad88dd85 100644 --- a/runtime/syntax/reva.vim +++ b/runtime/syntax/reva.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Reva Forth " Version: 2011.2 -" Last Change: 2012/02/13 +" Last Change: 2019 Sep 27 " Maintainer: Ron Aaron " URL: http://ronware.org/reva/ " Filetypes: *.rf *.frt @@ -150,7 +150,7 @@ syn match revaInclude '\<\(include\|needs\)\s\+\S\+' " Define the default highlighting. if !exists("did_reva_syntax_inits") let did_reva_syntax_inits=1 - " The default methods for highlighting. Can be overriden later. + " The default methods for highlighting. Can be overridden later. hi def link revaEOF cIf0 hi def link revaHelpStuff special hi def link revaHelpDesc Comment diff --git a/runtime/syntax/spec.vim b/runtime/syntax/spec.vim index 2d2550559b..f56a993ae5 100644 --- a/runtime/syntax/spec.vim +++ b/runtime/syntax/spec.vim @@ -3,7 +3,7 @@ " Language: SPEC: Build/install scripts for Linux RPM packages " Maintainer: Igor Gnatenko i.gnatenko.brain@gmail.com " Former Maintainer: Donovan Rebbechi elflord@panix.com (until March 2014) -" Last Change: 2019 May 07 +" Last Change: 2019 Sep 27 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -71,7 +71,7 @@ syn keyword specMacroNameOther contained buildroot buildsubdir distribution dist syn match specMacroNameOther contained '\<\(PATCH\|SOURCE\)\d*\>' "valid _macro names from /usr/lib/rpm/macros -syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _install_langs _install_script_path _instchangelog _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _pgpbin _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _usrsrc _var _vendor +syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _install_langs _install_script_path _instchangelog _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _pgpbin _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _unitdir _usrsrc _var _vendor "------------------------------------------------------------------------------ -- cgit From ecb48e7f8a8ade4a83cb4b6bd12d80a893832ec1 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Fri, 23 Apr 2021 01:23:43 -0400 Subject: fixup! man.vim: Refactor verify_exists to unset $MANSECT as needed ":unset" is not a valid Ex command. Use setenv() to set/unset environment variables. --- runtime/autoload/man.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'runtime') diff --git a/runtime/autoload/man.vim b/runtime/autoload/man.vim index c629923cd3..4f556e6e87 100644 --- a/runtime/autoload/man.vim +++ b/runtime/autoload/man.vim @@ -252,11 +252,11 @@ function! s:verify_exists(sect, name) abort if !empty($MANSECT) try let MANSECT = $MANSECT - unset $MANSECT + call setenv('MANSECT', v:null) return s:get_path('', a:name) catch /^command error (/ finally - let $MANSECT = MANSECT + call setenv('MANSECT', MANSECT) endtry endif -- cgit From f0bf853f41ac4ad765bf279c331669d8c9d1e5c5 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Fri, 23 Apr 2021 19:23:58 -0400 Subject: vim-patch:2e693a88b24d Update runtime files. https://github.com/vim/vim/commit/2e693a88b24dc6b12883fad78ff2cb9cd4469c98 --- runtime/doc/eval.txt | 68 +++++++++++++++++++++++++++++------------- runtime/doc/if_perl.txt | 13 ++++---- runtime/doc/if_ruby.txt | 10 +++---- runtime/doc/indent.txt | 6 ++-- runtime/doc/options.txt | 2 +- runtime/doc/syntax.txt | 4 +-- runtime/indent/testdir/yaml.in | 14 +++++++++ runtime/indent/testdir/yaml.ok | 14 +++++++++ runtime/indent/yaml.vim | 4 +-- runtime/syntax/named.vim | 4 +-- 10 files changed, 98 insertions(+), 41 deletions(-) create mode 100644 runtime/indent/testdir/yaml.in create mode 100644 runtime/indent/testdir/yaml.ok (limited to 'runtime') diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index bded8deb0f..685a6a52e8 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2506,7 +2506,7 @@ win_id2tabwin({expr}) List get tab and window nr from |window-ID| win_id2win({expr}) Number get window nr from |window-ID| win_screenpos({nr}) List get screen position of window {nr} win_splitmove({nr}, {target} [, {options}]) - none move window {nr} to split of {target} + Number move window {nr} to split of {target} winbufnr({nr}) Number buffer number of window {nr} wincol() Number window column of the cursor winheight({nr}) Number height of window {nr} @@ -2585,6 +2585,9 @@ append({lnum}, {text}) *append()* appendbufline({expr}, {lnum}, {text}) *appendbufline()* Like |append()| but append the text in buffer {expr}. + This function works only for loaded buffers. First call + |bufload()| if needed. + For the use of {expr}, see |bufname()|. {lnum} is used like with |append()|. Note that using |line()| @@ -3335,6 +3338,9 @@ deletebufline({expr}, {first}[, {last}]) *deletebufline()* If {last} is omitted then delete line {first} only. On success 0 is returned, on failure 1 is returned. + This function works only for loaded buffers. First call + |bufload()| if needed. + For the use of {expr}, see |bufname()| above. {first} and {last} are used like with |setline()|. Note that @@ -7369,13 +7375,24 @@ serverstop({address}) *serverstop()* address returned by |serverlist()|. setbufline({expr}, {lnum}, {text}) *setbufline()* - Set line {lnum} to {text} in buffer {expr}. To insert - lines use |append()|. + Set line {lnum} to {text} in buffer {expr}. This works like + |setline()| for the specified buffer. + + This function works only for loaded buffers. First call + |bufload()| if needed. + + To insert lines use |appendbufline()|. + Any text properties in {lnum} are cleared. + + {text} can be a string to set one line, or a list of strings + to set multiple lines. If the list extends below the last + line then those lines are added. For the use of {expr}, see |bufname()| above. {lnum} is used like with |setline()|. - This works like |setline()| for the specified buffer. + When {lnum} is just below the last line the {text} will be + added below the last line. On success 0 is returned, on failure 1 is returned. If {expr} is not a valid buffer or {lnum} is not valid, an @@ -7458,7 +7475,7 @@ setline({lnum}, {text}) *setline()* {lnum} is used like with |getline()|. When {lnum} is just below the last line the {text} will be - added as a new line. + added below the last line. If this succeeds, 0 is returned. If this fails (most likely because {lnum} is invalid) 1 is returned. @@ -9911,20 +9928,21 @@ This does NOT work: > *:let=<<* *:let-heredoc* *E990* *E991* *E172* *E221* -:let {var-name} =<< [trim] {marker} +:let {var-name} =<< [trim] {endmarker} text... text... -{marker} +{endmarker} Set internal variable {var-name} to a List containing - the lines of text bounded by the string {marker}. - {marker} cannot start with a lower case character. - The last line should end only with the {marker} string - without any other character. Watch out for white - space after {marker}! + the lines of text bounded by the string {endmarker}. + {endmarker} cannot start with a lower case character. + The last line should end only with the {endmarker} + string without any other character. Watch out for + white space after {endmarker}! Without "trim" any white space characters in the lines of text are preserved. If "trim" is specified before - {marker}, then indentation is stripped so you can do: > + {endmarker}, then indentation is stripped so you can + do: > let text =<< trim END if ok echo 'done' @@ -9938,23 +9956,31 @@ text... non-empty text line is stripped from the input lines. All leading indentation exactly matching the leading indentation before `let` is stripped from the line - containing {marker}. Note that the difference between - space and tab matters here. + containing {endmarker}. Note that the difference + between space and tab matters here. If {var-name} didn't exist yet, it is created. Cannot be followed by another command, but can be followed by a comment. + To avoid line continuation to be applied, consider + adding 'C' to 'cpoptions': > + set cpo+=C + let var =<< END + \ leading backslash + END + set cpo-=C +< Examples: > let var1 =<< END - Sample text 1 - Sample text 2 - Sample text 3 - END + Sample text 1 + Sample text 2 + Sample text 3 + END let data =<< trim DATA - 1 2 3 4 - 5 6 7 8 + 1 2 3 4 + 5 6 7 8 DATA < *E121* diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt index f1d07ddb20..ddcf220844 100644 --- a/runtime/doc/if_perl.txt +++ b/runtime/doc/if_perl.txt @@ -22,14 +22,15 @@ See |provider-perl| for more information. :[range]perl << [endmarker] {script} {endmarker} - Execute perl script {script}. Useful for including - perl code in Vim scripts. Requires perl, see - |script-here|. + Execute perl script {script}. + The {endmarker} after {script} must NOT be preceded by + any white space. -The {endmarker} below the {script} must NOT be preceded by any white space. + If [endmarker] is omitted, it defaults to a dot '.' + like for the |:append| and |:insert| commands. -If [endmarker] is omitted from after the "<<", a dot '.' must be used after -{script}, like for the |:append| and |:insert| commands. + Useful for including perl code in Vim scripts. + Requires perl, see |script-here|. Example: > function! MyVimMethod() diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt index c8d2409549..02edd50ae8 100644 --- a/runtime/doc/if_ruby.txt +++ b/runtime/doc/if_ruby.txt @@ -19,14 +19,14 @@ downloading Ruby there. :rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: > :ruby print "Hello" -:rub[y] << [endpattern] +:rub[y] << [endmarker] {script} -{endpattern} +{endmarker} Execute Ruby script {script}. - The {endpattern} after {script} must NOT be preceded - by any white space. + The {endmarker} after {script} must NOT be preceded by + any white space. - If [endpattern] is omitted, it defaults to a dot '.' + If [endmarker] is omitted, it defaults to a dot '.' like for the |:append| and |:insert| commands. This form of the |:ruby| command is mainly useful for diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt index f2278f8453..2896709cd1 100644 --- a/runtime/doc/indent.txt +++ b/runtime/doc/indent.txt @@ -951,10 +951,12 @@ Function call arguments will indent 1 extra level. For two-space indentation: > ------------- *PHP_IndentFunctionDeclarationParameters* -Extra indentation levels to add to arguments in multi-line function definitions. > +Extra indentation levels to add to arguments in multi-line function +definitions. > let g:PHP_IndentFunctionDeclarationParameters = 1 -Function arguments in declarations will indent 1 extra level. For two-space indentation: > +Function arguments in declarations will indent 1 extra level. For two-space +indentation: > function call_the_thing( $with_this, diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index b57a77a952..9d94b568a4 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1392,7 +1392,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'completeslash'* *'csl'* 'completeslash' 'csl' string (default: "") local to buffer - {not in Vi} {only for MS-Windows} + {only for MS-Windows} When this option is set it overrules 'shellslash' for completion: - When this option is set to "slash", a forward slash is used for path completion in insert mode. This is useful when editing HTML tag, or diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 7491577d8b..e527ef2158 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -37,8 +37,8 @@ If the VIM environment variable is not set, Vim will try to find the path in another way (see |$VIMRUNTIME|). Usually this works just fine. If it doesn't, try setting the VIM environment variable to the directory where the Vim stuff is located. For example, if your syntax files -are in the "/usr/vim/vim50/syntax" directory, set $VIMRUNTIME to -"/usr/vim/vim50". You must do this in the shell, before starting Vim. +are in the "/usr/vim/vim81/syntax" directory, set $VIMRUNTIME to +"/usr/vim/vim81". You must do this in the shell, before starting Vim. This command also sources the |menu.vim| script when the GUI is running or will start soon. See |'go-M'| about avoiding that. diff --git a/runtime/indent/testdir/yaml.in b/runtime/indent/testdir/yaml.in new file mode 100644 index 0000000000..e3d77e2543 --- /dev/null +++ b/runtime/indent/testdir/yaml.in @@ -0,0 +1,14 @@ +# vim: set ft=yaml sw=2 et : + +# START_INDENT +map1: +sub1: +- list item +map2: +- another list +# END_INDENT + +# START_INDENT +map: &anchor +map: val +# END_INDENT diff --git a/runtime/indent/testdir/yaml.ok b/runtime/indent/testdir/yaml.ok new file mode 100644 index 0000000000..b97b2e5896 --- /dev/null +++ b/runtime/indent/testdir/yaml.ok @@ -0,0 +1,14 @@ +# vim: set ft=yaml sw=2 et : + +# START_INDENT +map1: + sub1: + - list item +map2: + - another list +# END_INDENT + +# START_INDENT +map: &anchor +map: val +# END_INDENT diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim index 3eb16f845d..9621b2b6ed 100644 --- a/runtime/indent/yaml.vim +++ b/runtime/indent/yaml.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: YAML " Maintainer: Nikolai Pavlov -" Last Change: 2017 Jun 13 +" Last Change: 2019 Sep 28 " Only load this indent file when no other was loaded. if exists('b:did_indent') @@ -29,7 +29,7 @@ function s:FindPrevLessIndentedLine(lnum, ...) let curindent = a:0 ? a:1 : indent(a:lnum) while prevlnum \&& indent(prevlnum) >= curindent - \&& getline(prevlnum) =~# '^\s*#' + \&& getline(prevlnum) !~# '^\s*#' let prevlnum = prevnonblank(prevlnum-1) endwhile return prevlnum diff --git a/runtime/syntax/named.vim b/runtime/syntax/named.vim index 210d387ece..292d1b2bbf 100644 --- a/runtime/syntax/named.vim +++ b/runtime/syntax/named.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: BIND configuration file " Maintainer: Nick Hibma -" Last Change: 2007-01-30 +" Last Change: 2019 Oct 08 " Filenames: named.conf, rndc.conf " Location: http://www.van-laarhoven.org/vim/syntax/named.vim " @@ -54,7 +54,7 @@ syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhi syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword " --- IntSection: section that does not contain other sections -syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError +syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError,namedComment " --- IntKeyword: keywords contained within `{ ... }' sections only " + these keywords are contained within `key' and `acl' sections -- cgit From 233292b0ba9fb5d60ef7b2973c3a778e9c12be0c Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Fri, 23 Apr 2021 20:52:29 -0400 Subject: vim-patch:96f45c0b6fc9 Update runtime files https://github.com/vim/vim/commit/96f45c0b6fc9e9d404e6805593ed1e0e6795e470 Omit de.po changes. Same reason as before: too much and I don't understand the language. --- runtime/doc/eval.txt | 22 +-- runtime/doc/helphelp.txt | 6 +- runtime/doc/options.txt | 23 +-- runtime/doc/quickfix.txt | 2 +- runtime/doc/syntax.txt | 20 +++ runtime/doc/windows.txt | 3 + runtime/ftplugin/meson.vim | 19 +++ runtime/indent/meson.vim | 180 +++++++++++++++++++++ runtime/indent/sh.vim | 6 +- runtime/nvim.desktop | 4 +- runtime/pack/dist/opt/matchit/autoload/matchit.vim | 10 +- runtime/pack/dist/opt/matchit/doc/matchit.txt | 8 +- runtime/pack/dist/opt/matchit/plugin/matchit.vim | 16 +- runtime/syntax/dart.vim | 90 +++++++++++ runtime/syntax/dtd.vim | 13 +- runtime/syntax/meson.vim | 165 +++++++++++++++++++ 16 files changed, 542 insertions(+), 45 deletions(-) create mode 100644 runtime/ftplugin/meson.vim create mode 100644 runtime/indent/meson.vim create mode 100644 runtime/syntax/dart.vim create mode 100644 runtime/syntax/meson.vim (limited to 'runtime') diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 685a6a52e8..383acbe64f 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -3701,8 +3701,8 @@ expandcmd({expr}) *expandcmd()* Expand special items in {expr} like what is done for an Ex command such as `:edit`. This expands special keywords, like with |expand()|, and environment variables, anywhere in - {expr}. Returns the expanded string. - Example: > + {expr}. "~user" and "~/path" are only expanded at the start. + Returns the expanded string. Example: > :echo expandcmd('make %<.o') < extend({expr1}, {expr2} [, {expr3}]) *extend()* @@ -6691,15 +6691,15 @@ prompt_setprompt({buf}, {text}) *prompt_setprompt()* call prompt_setprompt(bufnr(''), 'command: ') pum_getpos() *pum_getpos()* - If the popup menu (see |ins-completion-menu|) is not visible, - returns an empty |Dictionary|, otherwise, returns a - |Dictionary| with the following keys: - height nr of items visible - width screen cells - row top screen row (0 first row) - col leftmost screen column (0 first col) - size total nr of items - scrollbar |TRUE| if visible + If the popup menu (see |ins-completion-menu|) is not visible, + returns an empty |Dictionary|, otherwise, returns a + |Dictionary| with the following keys: + height nr of items visible + width screen cells + row top screen row (0 first row) + col leftmost screen column (0 first col) + size total nr of items + scrollbar |TRUE| if scrollbar is visible The values are the same as in |v:event| during |CompleteChanged|. diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt index ba6dd02a29..182fc1cef5 100644 --- a/runtime/doc/helphelp.txt +++ b/runtime/doc/helphelp.txt @@ -103,7 +103,11 @@ Help on help files *helphelp* current file. See |help-translated|. *:helpc* *:helpclose* -:helpc[lose] Close one help window, if there is one. +:helpc[lose] Close one help window, if there is one. + Vim will try to restore the window layout (including + cursor position) to the same layout it was before + opening the help window initially. This might cause + triggering several autocommands. *:helpg* *:helpgrep* :helpg[rep] {pattern}[@xx] diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 9d94b568a4..9695aee15a 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -5243,10 +5243,10 @@ A jump table for the options with a short description can be found at |Q_op|. For Unix the default it "| tee". The stdout of the compiler is saved in a file and echoed to the screen. If the 'shell' option is "csh" or "tcsh" after initializations, the default becomes "|& tee". If the - 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the - default becomes "2>&1| tee". This means that stderr is also included. - Before using the 'shell' option a path is removed, thus "/bin/sh" uses - "sh". + 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta", + "bash" or "fish" the default becomes "2>&1| tee". This means that + stderr is also included. Before using the 'shell' option a path is + removed, thus "/bin/sh" uses "sh". The initialization of this option is done after reading the vimrc and the other initializations, so that when the 'shell' option is set there, the 'shellpipe' option changes automatically, unless it was @@ -5286,13 +5286,14 @@ A jump table for the options with a short description can be found at |Q_op|. The name of the temporary file can be represented by "%s" if necessary (the file name is appended automatically if no %s appears in the value of this option). - The default is ">". For Unix, if the 'shell' option is "csh", "tcsh" - or "zsh" during initializations, the default becomes ">&". If the - 'shell' option is "sh", "ksh" or "bash" the default becomes - ">%s 2>&1". This means that stderr is also included. - For Win32, the Unix checks are done and additionally "cmd" is checked - for, which makes the default ">%s 2>&1". Also, the same names with - ".exe" appended are checked for. + The default is ">". For Unix, if the 'shell' option is "csh" or + "tcsh" during initializations, the default becomes ">&". If the + 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", + "zsh-beta","bash" or "fish", the default becomes ">%s 2>&1". This + means that stderr is also included. For Win32, the Unix checks are + done and additionally "cmd" is checked for, which makes the default + ">%s 2>&1". Also, the same names with ".exe" appended are checked + for. The initialization of this option is done after reading the vimrc and the other initializations, so that when the 'shell' option is set there, the 'shellredir' option changes automatically unless it was diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index fab3b11430..a60e3d4b60 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -484,7 +484,7 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST: etc. < When the current file can't be |abandon|ed and the [!] is not present, the command fails. - When an error is detected execution stops. + When going to the next entry fails execution stops. The last buffer (or where an error occurred) becomes the current buffer. {cmd} can contain '|' to concatenate several commands. diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index e527ef2158..0fe4893924 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1135,6 +1135,26 @@ startup vimrc: > :let filetype_w = "cweb" +DART *dart.vim* *ft-dart-syntax* + +Dart is an object-oriented, typed, class defined, garbage collected language +used for developing mobile, desktop, web, and back-end applications. Dart uses +a C-like syntax derived from C, Java, and JavaScript, with features adopted +from Smalltalk, Python, Ruby, and others. + +More information about the language and its development environment at the +official Dart language website at https://dart.dev + +dart.vim syntax detects and highlights Dart statements, reserved words, +type declarations, storage classes, conditionals, loops, interpolated values, +and comments. There is no support idioms from Flutter or any other Dart +framework. + +Changes, fixes? Submit an issue or pull request via: + +https://github.com/pr3d4t0r/dart-vim-syntax/ + + DESKTOP *desktop.vim* *ft-desktop-syntax* Primary goal of this syntax file is to highlight .desktop and .directory files diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index 35efb1bbce..2de2351e11 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -287,6 +287,9 @@ CTRL-W CTRL-Q *CTRL-W_CTRL-Q* :+quit " quit the next window :+2quit " quit the second next window < + When closing a help window, Vim will try to restore the + previous window layout |:helpclose|. + :q[uit]! :{count}q[uit]! Without {count}: Quit the current window. If {count} is diff --git a/runtime/ftplugin/meson.vim b/runtime/ftplugin/meson.vim new file mode 100644 index 0000000000..e432ebf196 --- /dev/null +++ b/runtime/ftplugin/meson.vim @@ -0,0 +1,19 @@ +" Vim filetype plugin file +" Language: meson +" License: VIM License +" Original Author: Laurent Pinchart +" Last Change: 2018 Nov 27 + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 +let s:keepcpo= &cpo +set cpo&vim + +setlocal commentstring=#\ %s +setlocal comments=:# + +setlocal shiftwidth=2 +setlocal softtabstop=2 + +let &cpo = s:keepcpo +unlet s:keepcpo diff --git a/runtime/indent/meson.vim b/runtime/indent/meson.vim new file mode 100644 index 0000000000..f116781f74 --- /dev/null +++ b/runtime/indent/meson.vim @@ -0,0 +1,180 @@ +" Vim indent file +" Language: Meson +" License: VIM License +" Maintainer: Nirbheek Chauhan +" Original Authors: David Bustos +" Bram Moolenaar +" Last Change: 2019 Oct 18 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" Some preliminary settings +setlocal nolisp " Make sure lisp indenting doesn't supersede us +setlocal autoindent " indentexpr isn't much help otherwise + +setlocal indentexpr=GetMesonIndent(v:lnum) +setlocal indentkeys+==elif,=else,=endforeach,=endif,0) + +" Only define the function once. +if exists("*GetMesonIndent") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" Come here when loading the script the first time. + +let s:maxoff = 50 " maximum number of lines to look backwards for () + +function GetMesonIndent(lnum) + echom getline(line(".")) + + " If this line is explicitly joined: If the previous line was also joined, + " line it up with that one, otherwise add two 'shiftwidth' + if getline(a:lnum - 1) =~ '\\$' + if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$' + return indent(a:lnum - 1) + endif + return indent(a:lnum - 1) + (exists("g:mesonindent_continue") ? eval(g:mesonindent_continue) : (shiftwidth() * 2)) + endif + + " If the start of the line is in a string don't change the indent. + if has('syntax_items') + \ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$" + return -1 + endif + + " Search backwards for the previous non-empty line. + let plnum = prevnonblank(v:lnum - 1) + + if plnum == 0 + " This is the first non-empty line, use zero indent. + return 0 + endif + + " If the previous line is inside parenthesis, use the indent of the starting + " line. + " Trick: use the non-existing "dummy" variable to break out of the loop when + " going too far back. + call cursor(plnum, 1) + let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW', + \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if parlnum > 0 + let plindent = indent(parlnum) + let plnumstart = parlnum + else + let plindent = indent(plnum) + let plnumstart = plnum + endif + + + " When inside parenthesis: If at the first line below the parenthesis add + " a 'shiftwidth', otherwise same as previous line. + " i = (a + " + b + " + c) + call cursor(a:lnum, 1) + let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', + \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if p > 0 + if p == plnum + " When the start is inside parenthesis, only indent one 'shiftwidth'. + let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', + \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if pp > 0 + return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth()) + endif + return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : shiftwidth()) + endif + if plnumstart == p + return indent(plnum) + endif + return plindent + endif + + + " Get the line and remove a trailing comment. + " Use syntax highlighting attributes when possible. + let pline = getline(plnum) + let pline_len = strlen(pline) + if has('syntax_items') + " If the last character in the line is a comment, do a binary search for + " the start of the comment. synID() is slow, a linear search would take + " too long on a long line. + if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$" + let min = 1 + let max = pline_len + while min < max + let col = (min + max) / 2 + if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$" + let max = col + else + let min = col + 1 + endif + endwhile + let pline = strpart(pline, 0, min - 1) + endif + else + let col = 0 + while col < pline_len + if pline[col] == '#' + let pline = strpart(pline, 0, col) + break + endif + let col = col + 1 + endwhile + endif + + " If the previous line ended the conditional/loop + if getline(plnum) =~ '^\s*\(endif\|endforeach\)\>\s*' + " Maintain indent + return -1 + endif + + " If the previous line ended with a builtin, indent this line + if pline =~ '^\s*\(foreach\|if\|else\|elif\)\>\s*' + return plindent + shiftwidth() + endif + + " If the current line begins with a header keyword, deindent + if getline(a:lnum) =~ '^\s*\(else\|elif\|endif\|endforeach\)' + + " Unless the previous line was a one-liner + if getline(plnumstart) =~ '^\s*\(foreach\|if\)\>\s*' + return plindent + endif + + " Or the user has already dedented + if indent(a:lnum) <= plindent - shiftwidth() + return -1 + endif + + return plindent - shiftwidth() + endif + + " When after a () construct we probably want to go back to the start line. + " a = (b + " + c) + " here + if parlnum > 0 + return plindent + endif + + return -1 + +endfunction + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:sw=2 diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim index 3df6abbf97..d2fb1ba452 100644 --- a/runtime/indent/sh.vim +++ b/runtime/indent/sh.vim @@ -3,7 +3,7 @@ " Maintainer: Christian Brabandt " Original Author: Nikolai Weibull " Previous Maintainer: Peter Aronoff -" Latest Revision: 2019-07-26 +" Latest Revision: 2019-10-24 " License: Vim (see :h license) " Repository: https://github.com/chrisbra/vim-sh-indent " Changelog: @@ -134,7 +134,7 @@ function! GetShIndent() " TODO: should we do the same for other "end" lines? if curline =~ '^\s*\%(fi\);\?\s*\%(#.*\)\=$' let ind = indent(v:lnum) - let previous_line = searchpair('\', '', '\\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment"') + let previous_line = searchpair('\', '', '\\zs', 'bnW', 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"') if previous_line > 0 let ind = indent(previous_line) endif @@ -195,7 +195,7 @@ endfunction function! s:is_function_definition(line) return a:line =~ '^\s*\<\k\+\>\s*()\s*{' || \ a:line =~ '^\s*{' || - \ a:line =~ '^\s*function\s*\w\S\+\s*\%(()\)\?\s*{' + \ a:line =~ '^\s*function\s*\k\+\s*\%(()\)\?\s*{' endfunction function! s:is_array(line) diff --git a/runtime/nvim.desktop b/runtime/nvim.desktop index d08029d2b0..21bde61314 100644 --- a/runtime/nvim.desktop +++ b/runtime/nvim.desktop @@ -3,6 +3,7 @@ Name=Neovim GenericName=Text Editor GenericName[de]=Texteditor GenericName[sr]=Едитор текста +GenericName[tr]=Metin Düzenleyici Comment=Edit text files Comment[af]=Redigeer tekslêers Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ @@ -65,7 +66,7 @@ Comment[sv]=Redigera textfiler Comment[ta]=உரை கோப்புகளை தொகுக்கவும் Comment[th]=แก้ไขแฟ้มข้อความ Comment[tk]=Metin faýllary editle -Comment[tr]=Metin dosyalarını düzenle +Comment[tr]=Metin dosyaları düzenle Comment[uk]=Редактор текстових файлів Comment[vi]=Soạn thảo tập tin văn bản Comment[wa]=Asspougnî des fitchîs tecses @@ -76,6 +77,7 @@ Exec=nvim %F Terminal=true Type=Application Keywords=Text;editor; +Keywords[tr]=Metin;düzenleyici; Icon=nvim Categories=Utility;TextEditor; StartupNotify=false diff --git a/runtime/pack/dist/opt/matchit/autoload/matchit.vim b/runtime/pack/dist/opt/matchit/autoload/matchit.vim index abf06d3c4c..f56e9e223d 100644 --- a/runtime/pack/dist/opt/matchit/autoload/matchit.vim +++ b/runtime/pack/dist/opt/matchit/autoload/matchit.vim @@ -1,6 +1,6 @@ " matchit.vim: (global plugin) Extended "%" matching " autload script of matchit plugin, see ../plugin/matchit.vim -" Last Change: 2019 Jan 28 +" Last Change: 2019 Oct 24 let s:last_mps = "" let s:last_words = ":" @@ -211,6 +211,14 @@ function matchit#Match_wrapper(word, forward, mode) range execute "if " . skip . "| let skip = '0' | endif" endif let sp_return = searchpair(ini, mid, fin, flag, skip) + if &selection isnot# 'inclusive' && a:mode == 'v' + " move cursor one pos to the right, because selection is not inclusive + " add virtualedit=onemore, to make it work even when the match ends the " line + if !(col('.') < col('$')-1) + set ve=onemore + endif + norm! l + endif let final_position = "call cursor(" . line(".") . "," . col(".") . ")" " Restore cursor position and original screen. call winrestview(view) diff --git a/runtime/pack/dist/opt/matchit/doc/matchit.txt b/runtime/pack/dist/opt/matchit/doc/matchit.txt index b2b78089a0..8d810d3f57 100644 --- a/runtime/pack/dist/opt/matchit/doc/matchit.txt +++ b/runtime/pack/dist/opt/matchit/doc/matchit.txt @@ -4,7 +4,7 @@ For instructions on installing this file, type `:help matchit-install` inside Vim. -For Vim version 8.1. Last change: 2019 May 05 +For Vim version 8.1. Last change: 2019 Oct 24 VIM REFERENCE MANUAL by Benji Fisher et al @@ -377,6 +377,10 @@ The back reference '\'.d refers to the same thing as '\'.b:match_table[d] in ============================================================================== 5. Known Bugs and Limitations *matchit-bugs* +Repository: https://github.com/chrisbra/matchit/ +Bugs can be reported at the repository (alternatively you can send me a mail). +The latest development snapshot can also be downloaded there. + Just because I know about a bug does not mean that it is on my todo list. I try to respond to reports of bugs that cause real problems. If it does not cause serious problems, or if there is a work-around, a bug may sit there for @@ -388,4 +392,4 @@ try to implement this in a future version. (This is not so easy to arrange as you might think!) ============================================================================== -vim:tw=78:fo=tcq2:ft=help: +vim:tw=78:ts=8:fo=tcq2:ft=help: diff --git a/runtime/pack/dist/opt/matchit/plugin/matchit.vim b/runtime/pack/dist/opt/matchit/plugin/matchit.vim index 84147f1fc8..4d0f4e014a 100644 --- a/runtime/pack/dist/opt/matchit/plugin/matchit.vim +++ b/runtime/pack/dist/opt/matchit/plugin/matchit.vim @@ -1,13 +1,13 @@ " matchit.vim: (global plugin) Extended "%" matching " Maintainer: Christian Brabandt -" Version: 1.15 -" Last Change: 2019 Jan 28 +" Version: 1.16 +" Last Change: 2019 Oct 24 " Repository: https://github.com/chrisbra/matchit " Previous URL:http://www.vim.org/script.php?script_id=39 " Previous Maintainer: Benji Fisher PhD " Documentation: -" The documentation is in a separate file: ../doc/matchit.txt . +" The documentation is in a separate file: ../doc/matchit.txt " Credits: " Vim editor by Bram Moolenaar (Thanks, Bram!) @@ -48,8 +48,8 @@ set cpo&vim nnoremap (MatchitNormalForward) :call matchit#Match_wrapper('',1,'n') nnoremap (MatchitNormalBackward) :call matchit#Match_wrapper('',0,'n') -vnoremap (MatchitVisualForward) :call matchit#Match_wrapper('',1,'v')m'gv`` -vnoremap (MatchitVisualBackward) :call matchit#Match_wrapper('',0,'v')m'gv`` +xnoremap (MatchitVisualForward) :call matchit#Match_wrapper('',1,'v')m'gv`` +xnoremap (MatchitVisualBackward) :call matchit#Match_wrapper('',0,'v')m'gv`` onoremap (MatchitOperationForward) :call matchit#Match_wrapper('',1,'o') onoremap (MatchitOperationBackward) :call matchit#Match_wrapper('',0,'o') @@ -63,8 +63,8 @@ omap g% (MatchitOperationBackward) " Analogues of [{ and ]} using matching patterns: nnoremap (MatchitNormalMultiBackward) :call matchit#MultiMatch("bW", "n") nnoremap (MatchitNormalMultiForward) :call matchit#MultiMatch("W", "n") -vnoremap (MatchitVisualMultiBackward) :call matchit#MultiMatch("bW", "n")m'gv`` -vnoremap (MatchitVisualMultiForward) :call matchit#MultiMatch("W", "n")m'gv`` +xnoremap (MatchitVisualMultiBackward) :call matchit#MultiMatch("bW", "n")m'gv`` +xnoremap (MatchitVisualMultiForward) :call matchit#MultiMatch("W", "n")m'gv`` onoremap (MatchitOperationMultiBackward) :call matchit#MultiMatch("bW", "o") onoremap (MatchitOperationMultiForward) :call matchit#MultiMatch("W", "o") @@ -76,7 +76,7 @@ omap [% (MatchitOperationMultiBackward) omap ]% (MatchitOperationMultiForward) " text object: -vmap (MatchitVisualTextObject) (MatchitVisualMultiBackward)o(MatchitVisualMultiForward) +xmap (MatchitVisualTextObject) (MatchitVisualMultiBackward)o(MatchitVisualMultiForward) xmap a% (MatchitVisualTextObject) " Call this function to turn on debugging information. Every time the main diff --git a/runtime/syntax/dart.vim b/runtime/syntax/dart.vim new file mode 100644 index 0000000000..d1c2bf2158 --- /dev/null +++ b/runtime/syntax/dart.vim @@ -0,0 +1,90 @@ +" Vim syntax file +" +" Language: Dart +" Maintainer: Eugene 'pr3d4t0r' Ciurana +" Source: https://github.com/pr3d4t0r/dart-vim-syntax +" Last Update: 2019 Oct 19 +" +" License: Vim is Charityware. dart.vim syntax is Charityware. +" (c) Copyright 2019 by Eugene Ciurana / pr3d4t0r. Licensed +" under the standard VIM LICENSE - Vim command :help uganda.txt +" for details. +" +" Questions, comments: +" https://ciurana.eu/pgp, https://keybase.io/pr3d4t0r +" +" vim: set fileencoding=utf-8: + + +" Quit when a (custom) syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + + +syn keyword dartCommentTodo contained TODO FIXME XXX TBD +syn match dartLineComment "//.*" contains=dartTodo,@Spell +syn match dartCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" +syn region dartComment start="/\*" end="\*/" contains=@Spell,dartTodo +syn keyword dartReserved assert async await class const export extends external final hide import implements interface library mixin on show super sync yield +syn match dartNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" + + +syn keyword dartBoolean false true +syn keyword dartBranch break continue +syn keyword dartConditional if else switch +syn keyword dartException catch finally rethrow throw try +syn keyword dartIdentifier abstract covariant deferred dynamic factory Function operator part static this typedef var +syn keyword dartLabel case default +syn keyword dartNull null +syn keyword dartOperator is new +syn keyword dartRepeat for do in while +syn keyword dartStatement return with +syn keyword dartType bool double enum int String StringBuffer void +syn keyword dartTodo contained TODO FIXME XXX + + +syn match dartEscape contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" +syn match dartSpecialError contained "\\." +syn match dartStrInterpol contained "\${[\x, _]*\}" + +syn region dartDQString start=+"+ end=+"+ end=+$+ contains=dartEscape,dartStrInterpol,dartSpecialError,@Spell +syn region dartSQString start=+'+ end=+'+ end=+$+ contains=dartEscape,dartStrInterpol,dartSpecialError,@Spell + +syn match dartBraces "[{}\[\]]" +syn match dartParens "[()]" + + +syn sync fromstart +syn sync maxlines=100 + + +hi def link dartBoolean Boolean +hi def link dartBranch Conditional +hi def link dartComment Comment +hi def link dartConditional Conditional +hi def link dartDQString String +hi def link dartEscape SpecialChar +hi def link dartException Exception +hi def link dartIdentifier Identifier +hi def link dartLabel Label +hi def link dartLineComment Comment +hi def link dartNull Keyword +hi def link dartOperator Operator +hi def link dartRepeat Repeat +hi def link dartReserved Keyword +hi def link dartSQString String +hi def link dartSpecialError Error +hi def link dartStatement Statement +hi def link dartStrInterpol Special +hi def link dartTodo Todo +hi def link dartType Type + + +let b:current_syntax = "dart" +let &cpo = s:cpo_save +unlet s:cpo_save + diff --git a/runtime/syntax/dtd.vim b/runtime/syntax/dtd.vim index ae0bd1288e..ef0592e1d1 100644 --- a/runtime/syntax/dtd.vim +++ b/runtime/syntax/dtd.vim @@ -1,10 +1,11 @@ " Vim syntax file -" Language: DTD (Document Type Definition for XML) -" Maintainer: Johannes Zellner -" Author and previous maintainer: -" Daniel Amyot -" Last Change: Tue, 27 Apr 2004 14:54:59 CEST -" Filenames: *.dtd +" Language: DTD (Document Type Definition for XML) +" Maintainer: Christian Brabandt +" Repository: https://github.com/chrisbra/vim-xml-ftplugin +" Previous Maintainer: Johannes Zellner +" Author: Daniel Amyot +" Last Changed: Sept 24, 2019 +" Filenames: *.dtd " " REFERENCES: " http://www.w3.org/TR/html40/ diff --git a/runtime/syntax/meson.vim b/runtime/syntax/meson.vim new file mode 100644 index 0000000000..78de2ab89e --- /dev/null +++ b/runtime/syntax/meson.vim @@ -0,0 +1,165 @@ +" Vim syntax file +" Language: Meson +" License: VIM License +" Maintainer: Nirbheek Chauhan +" Last Change: 2019 Oct 18 +" Credits: Zvezdan Petkovic +" Neil Schemenauer +" Dmitry Vasiliev +" +" This version is copied and edited from python.vim +" It's very basic, and doesn't do many things I'd like it to +" For instance, it should show errors for syntax that is valid in +" Python but not in Meson. +" +" Optional highlighting can be controlled using these variables. +" +" let meson_space_error_highlight = 1 +" + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" We need nocompatible mode in order to continue lines with backslashes. +" Original setting will be restored. +let s:cpo_save = &cpo +set cpo&vim + +" http://mesonbuild.com/Syntax.html +syn keyword mesonConditional elif else if endif +syn keyword mesonRepeat foreach endforeach +syn keyword mesonOperator and not or + +syn match mesonComment "#.*$" contains=mesonTodo,@Spell +syn keyword mesonTodo FIXME NOTE NOTES TODO XXX contained + +" Strings can either be single quoted or triple counted across multiple lines, +" but always with a ' +syn region mesonString + \ start="\z('\)" end="\z1" skip="\\\\\|\\\z1" + \ contains=mesonEscape,@Spell +syn region mesonString + \ start="\z('''\)" end="\z1" keepend + \ contains=mesonEscape,mesonSpaceError,@Spell + +syn match mesonEscape "\\[abfnrtv'\\]" contained +syn match mesonEscape "\\\o\{1,3}" contained +syn match mesonEscape "\\x\x\{2}" contained +syn match mesonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained +" Meson allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ +syn match mesonEscape "\\N{\a\+\%(\s\a\+\)*}" contained +syn match mesonEscape "\\$" + +" Meson only supports integer numbers +" http://mesonbuild.com/Syntax.html#numbers +syn match mesonNumber "\<\d\+\>" + +" booleans +syn keyword mesonConstant false true + +" Built-in functions +syn keyword mesonBuiltin + \ add_global_arguments + \ add_global_link_arguments + \ add_languages + \ add_project_arguments + \ add_project_link_arguments + \ add_test_setup + \ alias_target + \ assert + \ benchmark + \ both_libraries + \ build_machine + \ build_target + \ configuration_data + \ configure_file + \ custom_target + \ declare_dependency + \ dependency + \ disabler + \ environment + \ error + \ executable + \ files + \ find_library + \ find_program + \ generator + \ get_option + \ get_variable + \ gettext + \ host_machine + \ import + \ include_directories + \ install_data + \ install_headers + \ install_man + \ install_subdir + \ is_disabler + \ is_variable + \ jar + \ join_paths + \ library + \ meson + \ message + \ option + \ project + \ run_command + \ run_target + \ set_variable + \ shared_library + \ shared_module + \ static_library + \ subdir + \ subdir_done + \ subproject + \ target_machine + \ test + \ vcs_tag + \ warning + +if exists("meson_space_error_highlight") + " trailing whitespace + syn match mesonSpaceError display excludenl "\s\+$" + " mixed tabs and spaces + syn match mesonSpaceError display " \+\t" + syn match mesonSpaceError display "\t\+ " +endif + +if version >= 508 || !exists("did_meson_syn_inits") + if version <= 508 + let did_meson_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default highlight links. Can be overridden later. + HiLink mesonStatement Statement + HiLink mesonConditional Conditional + HiLink mesonRepeat Repeat + HiLink mesonOperator Operator + HiLink mesonComment Comment + HiLink mesonTodo Todo + HiLink mesonString String + HiLink mesonEscape Special + HiLink mesonNumber Number + HiLink mesonBuiltin Function + HiLink mesonConstant Number + if exists("meson_space_error_highlight") + HiLink mesonSpaceError Error + endif + + delcommand HiLink +endif + +let b:current_syntax = "meson" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:set sw=2 sts=2 ts=8 noet: -- cgit From d4b65fa6fb330a5a174bdc3a8a838cffa28b0859 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Fri, 23 Apr 2021 22:48:41 -0400 Subject: vim-patch:1ff14ba24c4d Update runtime files. https://github.com/vim/vim/commit/1ff14ba24c4d85c008d7abe5e140dbb497ffea8d --- runtime/doc/options.txt | 4 +-- runtime/doc/windows.txt | 4 +++ runtime/filetype.vim | 4 +-- runtime/indent/testdir/vim.in | 15 ++++++++++ runtime/indent/testdir/vim.ok | 15 ++++++++++ runtime/indent/vim.vim | 27 +++++++++++++++++- runtime/plugin/matchparen.vim | 12 ++++---- runtime/syntax/debchangelog.vim | 30 ++++++++++++++++++-- runtime/syntax/debsources.vim | 4 +-- runtime/syntax/vim.vim | 63 +++++++++++++++++++++++++---------------- 10 files changed, 137 insertions(+), 41 deletions(-) (limited to 'runtime') diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 9695aee15a..5dfe8d595d 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -5176,8 +5176,8 @@ A jump table for the options with a short description can be found at |Q_op|. See |option-backslash| about including spaces and backslashes. Environment variables are expanded |:set_env|. - If the name of the shell contains a space, you might need to enclose - it in quotes. Example: > + If the name of the shell contains a space, you need to enclose it in + quotes. Example: > :set shell=\"c:\program\ files\unix\sh.exe\"\ -f < Note the backslash before each quote (to avoid starting a comment) and each space (to avoid ending the option value), so better use |:let-&| diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index 2de2351e11..1864c2ee30 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -521,6 +521,10 @@ CTRL-W + Increase current window height by N (default 1). CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* CTRL-W _ Set current window height to N (default: highest possible). +:{winnr}res[ize] [+-]N + Like `:resize` above, but apply the size to window {winnr} + instead of the current window. + z{nr} Set current window height to {nr}. *CTRL-W_<* diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 724a96cb01..a63ed3f709 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -392,8 +392,8 @@ au BufNewFile,BufRead configure.in,configure.ac setf config " CUDA Cumpute Unified Device Architecture au BufNewFile,BufRead *.cu,*.cuh setf cuda -" Dockerfile -au BufNewFile,BufRead Dockerfile,*.Dockerfile setf dockerfile +" Dockerfilb; Podman uses the same syntax with name Containerfile +au BufNewFile,BufRead Containerfile,Dockerfile,*.Dockerfile setf dockerfile " WildPackets EtherPeek Decoder au BufNewFile,BufRead *.dcd setf dcd diff --git a/runtime/indent/testdir/vim.in b/runtime/indent/testdir/vim.in index ca105f6eda..235f31d061 100644 --- a/runtime/indent/testdir/vim.in +++ b/runtime/indent/testdir/vim.in @@ -44,3 +44,18 @@ let f = x " prev-line endfunc " END_INDENT + +" START_INDENT +let a =<< END +nothing +END +" END_INDENT + +" START_INDENT +" INDENT_AT this-line +let a=<< trim END + blah + blah + blah this-line +END +" END_INDENT diff --git a/runtime/indent/testdir/vim.ok b/runtime/indent/testdir/vim.ok index 542861ec9c..61369d4b93 100644 --- a/runtime/indent/testdir/vim.ok +++ b/runtime/indent/testdir/vim.ok @@ -44,3 +44,18 @@ func Some() " prev-line endfunc " END_INDENT + +" START_INDENT +let a =<< END + nothing +END +" END_INDENT + +" START_INDENT +" INDENT_AT this-line +let a=<< trim END + blah + blah + blah this-line +END +" END_INDENT diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim index cd735c3a3c..db27f19714 100644 --- a/runtime/indent/vim.vim +++ b/runtime/indent/vim.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Vim script " Maintainer: Bram Moolenaar -" Last Change: 2016 Jun 27 +" Last Change: 2019 Oct 31 " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -56,6 +56,31 @@ function GetVimIndentIntern() " and :else. Add it three times for a line that starts with '\' or '"\ ' " after a line that doesn't (or g:vim_indent_cont if it exists). let ind = indent(lnum) + + " In heredoc indenting works completely differently. + if has('syntax_items') + let syn_here = synIDattr(synID(v:lnum, 1, 1), "name") + if syn_here =~ 'vimLetHereDocStop' + " End of heredoc: use indent of matching start line + let lnum = v:lnum - 1 + while lnum > 0 + if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc' + return indent(lnum) + endif + let lnum -= 1 + endwhile + return 0 + endif + if syn_here =~ 'vimLetHereDoc' + if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc' + " First line in heredoc: increase indent + return ind + shiftwidth() + endif + " Heredoc continues: no change in indent + return ind + endif + endif + if cur_text =~ s:lineContPat && v:lnum > 1 && prev_text !~ s:lineContPat if exists("g:vim_indent_cont") let ind = ind + g:vim_indent_cont diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim index 65b9fe57bf..59d33f4d4e 100644 --- a/runtime/plugin/matchparen.vim +++ b/runtime/plugin/matchparen.vim @@ -1,6 +1,6 @@ " Vim plugin for showing matching parens " Maintainer: Bram Moolenaar -" Last Change: 2018 Jul 3 +" Last Change: 2019 Oct 28 " Exit quickly when: " - this plugin was already loaded (or disabled) @@ -36,7 +36,7 @@ set cpo-=C " The function that is invoked (very often) to define a ":match" highlighting " for any matching paren. -function! s:Highlight_Matching_Pair() +func s:Highlight_Matching_Pair() " Remove any previous match. if exists('w:paren_hl_on') && w:paren_hl_on silent! call matchdelete(3) @@ -196,10 +196,10 @@ function! s:Highlight_Matching_Pair() endfunction " Define commands that will disable and enable the plugin. -command! DoMatchParen call s:DoMatchParen() -command! NoMatchParen call s:NoMatchParen() +command DoMatchParen call s:DoMatchParen() +command NoMatchParen call s:NoMatchParen() -func! s:NoMatchParen() +func s:NoMatchParen() let w = winnr() noau windo silent! call matchdelete(3) unlet! g:loaded_matchparen @@ -207,7 +207,7 @@ func! s:NoMatchParen() au! matchparen endfunc -func! s:DoMatchParen() +func s:DoMatchParen() runtime plugin/matchparen.vim let w = winnr() silent windo doau CursorMoved diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim index 2d612061f3..eb82613fef 100644 --- a/runtime/syntax/debchangelog.vim +++ b/runtime/syntax/debchangelog.vim @@ -3,7 +3,7 @@ " Maintainer: Debian Vim Maintainers " Former Maintainers: Gerfried Fuchs " Wichert Akkerman -" Last Change: 2019 Sep 07 +" Last Change: 2019 Oct 20 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim " Standard syntax initialization @@ -17,11 +17,33 @@ syn case ignore let s:urgency='urgency=\(low\|medium\|high\|emergency\|critical\)\( [^[:space:],][^,]*\)\=' let s:binNMU='binary-only=yes' +let s:cpo = &cpo +set cpo-=C +let s:supported = [ + \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', + \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm', + \ 'sid', 'rc-buggy', + \ + \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'focal', 'devel' + \ ] +let s:unsupported = [ + \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', + \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', + \ + \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty', + \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', + \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy', + \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic' + \ ] +let &cpo=s:cpo + " Define some common expressions we can use later on syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ " exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"' exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"' -syn match debchangelogTarget contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(squeeze|wheezy|jessie)-%(backports%(-sloppy)=|lts|security)|stretch%(-backports%(-sloppy)=|-security)=|buster%(-backports|-security)=|bullseye|bookworm|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan)%(-%(security|proposed|updates|backports|commercial|partner))=)+" +exe 'syn match debchangelogTarget contained "\%( \%('.join(s:supported, '\|').'\)\>[-[:alnum:]]*\)\+"' +exe 'syn match debchangelogUnsupportedTarget contained "\%( \%('.join(s:unsupported, '\|').'\)\>[-[:alnum:]]*\)\+"' +syn keyword debchangelogUnreleased contained UNRELEASED syn match debchangelogVersion contained "(.\{-})" syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*" syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*" @@ -29,7 +51,7 @@ syn match debchangelogEmail contained "[_=[:alnum:].+-]\+@[[:alnum:]./\-]\+" syn match debchangelogEmail contained "<.\{-}>" " Define the entries that make up the changelog -syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogVersion,debchangelogBinNMU oneline +syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogUnsupportedTarget,debchangelogUnreleased,debchangelogVersion,debchangelogBinNMU oneline syn region debchangelogFooter start="^ [^ ]" end="$" contains=debchangelogEmail oneline syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses,debchangelogLP oneline @@ -44,6 +66,8 @@ hi def link debchangelogOtherKV Identifier hi def link debchangelogName Comment hi def link debchangelogVersion Identifier hi def link debchangelogTarget Identifier +hi def link debchangelogUnsupportedTarget Identifier +hi def link debchangelogUnreleased WarningMsg hi def link debchangelogEmail Special let b:current_syntax = 'debchangelog' diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim index 97acbf60fc..349b2ac547 100644 --- a/runtime/syntax/debsources.vim +++ b/runtime/syntax/debsources.vim @@ -2,7 +2,7 @@ " Language: Debian sources.list " Maintainer: Debian Vim Maintainers " Former Maintainer: Matthijs Mohlmann -" Last Change: 2019 Sep 07 +" Last Change: 2019 Oct 18 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim " Standard syntax initialization @@ -26,7 +26,7 @@ let s:supported = [ \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm', \ 'sid', 'rc-buggy', \ - \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'devel' + \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'focal', 'devel' \ ] let s:unsupported = [ \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 92348d57ec..7fb075c229 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -53,16 +53,16 @@ syn case ignore syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo " Default highlighting groups {{{2 -syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual WarningMsg WildMenu +syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual WarningMsg WildMenu syn match vimHLGroup contained "Conceal" -syn keyword vimOnlyHLGroup contained VisualNOS -syn keyword nvimHLGroup contained Substitute TermCursor TermCursorNC QuickFixLine +syn keyword vimOnlyHLGroup contained LineNrAbove LineNrBelow StatusLineTerm Terminal VisualNOS +syn keyword nvimHLGroup contained Substitute TermCursor TermCursorNC "}}}2 syn case match " Special Vim Highlighting (not automatic) {{{1 -" Set up folding commands -if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]' +" Set up folding commands {{{2 +if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]' if g:vimsyn_folding =~# 'a' com! -nargs=* VimFolda fold else @@ -73,6 +73,11 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]' else com! -nargs=* VimFoldf endif + if g:vimsyn_folding =~# 'h' + com! -nargs=* VimFoldh fold + else + com! -nargs=* VimFoldh + endif if g:vimsyn_folding =~# 'l' com! -nargs=* VimFoldl fold else @@ -106,6 +111,7 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]' else com! -nargs=* VimFolda com! -nargs=* VimFoldf + com! -nargs=* VimFoldh com! -nargs=* VimFoldl com! -nargs=* VimFoldm com! -nargs=* VimFoldp @@ -114,7 +120,7 @@ else com! -nargs=* VimFoldt endif -" commands not picked up by the generator (due to non-standard format) +" commands not picked up by the generator (due to non-standard format) {{{2 syn keyword vimCommand contained py3 " Deprecated variable options {{{2 @@ -291,7 +297,8 @@ syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTw syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation syn cluster vimSubstList add=vimCollection syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<\%(\\|\\|\\)[:#[:alpha:]]\@!" nextgroup=vimSubstPat -syn match vimSubst "\%(^\|[^\\]\)\[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained +"syn match vimSubst "\%(^\|[^\\]\)\[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained +syn match vimSubst "\%(^\|[^\\\"']\)\[:#[:alpha:]\"']\@!" nextgroup=vimSubstPat contained syn match vimSubst "/\zs\\ze/" nextgroup=vimSubstPat syn match vimSubst "\(:\+\s*\|^\s*\)s\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat syn match vimSubst1 contained "\" nextgroup=vimSubstPat @@ -331,7 +338,7 @@ syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1 syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile -" Complex repeats (:h complex-repeat) {{{2 +" Complex Repeats: (:h complex-repeat) {{{2 syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1 syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)' @@ -342,22 +349,23 @@ syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ co syn match vimSetSep contained "[,:]" skipwhite nextgroup=vimCommand syn match vimSetMod contained "&vim\=\|[!&?<]\|all&" -" Let {{{2 +" Let: {{{2 " === -syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar +syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc +VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s\+\%(trim\>\)\=\s*\z(\h\w*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' contains=vimComment -" Abbreviations {{{2 +" Abbreviations: {{{2 " ============= syn keyword vimAbb ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs -" Autocmd {{{2 +" Autocmd: {{{2 " ======= syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent,nvimAutoEvent nextgroup=vimAutoCmdSpace syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList syn match vimAutoCmdSfxList contained "\S*" syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList -" Echo and Execute -- prefer strings! {{{2 +" Echo and Execute: -- prefer strings! {{{2 " ================ syn region vimEcho oneline excludenl matchgroup=vimCommand start="\" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar syn region vimExecute oneline excludenl matchgroup=vimCommand start="\" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar @@ -366,7 +374,7 @@ syn case ignore syn keyword vimEchoHLNone none syn case match -" Maps {{{2 +" Maps: {{{2 " ==== syn match vimMap "\!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs @@ -383,7 +391,7 @@ syn case ignore syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique syn case match -" Menus {{{2 +" Menus: {{{2 " ===== syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList @@ -395,7 +403,7 @@ syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList -" Angle-Bracket Notation (tnx to Michael Geddes) {{{2 +" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2 " ====================== syn case ignore syn match vimNotation "\%#=1\(\\\|\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cmd\|cr\|lf\|linefeed\|return\|enter\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|mouse\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket @@ -407,7 +415,7 @@ syn match vimNotation "\%#=1\(\\\|\)\=<\([cas]file\|abuf\|amatch\|cword\|cWO syn match vimBracket contained "[\\<>]" syn case match -" User Function Highlighting {{{2 +" User Function Highlighting: {{{2 " (following Gautam Iyer's suggestion) " ========================== syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute @@ -424,12 +432,12 @@ endif syn match vimNotFunc "\\|\\|\\|\" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation -" Norm {{{2 +" Norm: {{{2 " ==== syn match vimNorm "\" skipwhite nextgroup=v syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone syn keyword vimSyncNone contained NONE -" Additional IsCommand, here by reasons of precedence {{{2 +" Additional IsCommand: here by reasons of precedence {{{2 " ==================== syn match vimIsCommand "\s*\a\+" transparent contains=vimCommand,vimNotation -" Highlighting {{{2 +" Highlighting: {{{2 " ============ syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror") @@ -583,7 +591,7 @@ syn keyword vimHiClear contained clear nextgroup=vimHiGroup syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\\|\\)" end="$" contains=@vimHiCluster syn cluster vimFuncBodyList add=vimHiLink -" Control Characters {{{2 +" Control Characters: {{{2 " ================== syn match vimCtrlChar "[- -]" @@ -602,9 +610,11 @@ syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained syn region vimGlobal matchgroup=Statement start='\ Date: Sat, 24 Apr 2021 08:57:52 -0400 Subject: vim-patch:5ef1c6a4838a Update runtime files https://github.com/vim/vim/commit/5ef1c6a4838a9629b793f3ae676f72a764171b00 "scrollfocus" is for Windows GUI only so it is N/A. --- runtime/doc/diff.txt | 3 ++- runtime/doc/gui.txt | 5 +++-- runtime/doc/map.txt | 2 ++ runtime/doc/options.txt | 2 +- runtime/doc/visual.txt | 1 + runtime/menu.vim | 10 ++++++++-- runtime/plugin/netrwPlugin.vim | 2 +- runtime/syntax/erlang.vim | 11 +++++++---- runtime/syntax/vim.vim | 3 ++- 9 files changed, 27 insertions(+), 12 deletions(-) (limited to 'runtime') diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt index 3544882ceb..a9e2a0d522 100644 --- a/runtime/doc/diff.txt +++ b/runtime/doc/diff.txt @@ -57,11 +57,12 @@ reset to the global value. The options can still be overruled from a modeline when re-editing the file. However, 'foldmethod' and 'wrap' won't be set from a modeline when 'diff' is set. +See `:diffoff` for an easy way to revert the options. The differences shown are actually the differences in the buffer. Thus if you make changes after loading a file, these will be included in the displayed diffs. You might have to do ":diffupdate" now and then, not all changes are -immediately taken into account. +immediately taken into account, especially when using an external diff command. In your vimrc file you could do something special when Vim was started in diff mode. You could use a construct like this: > diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt index 0df776010b..227ad88872 100644 --- a/runtime/doc/gui.txt +++ b/runtime/doc/gui.txt @@ -191,8 +191,9 @@ Creating New Menus *creating-menus* *E330* *E327* *E331* *E336* *E333* *E328* *E329* *E337* *E792* To create a new menu item, use the ":menu" commands. They are mostly like -the ":map" set of commands but the first argument is a menu item name, given -as a path of menus and submenus with a '.' between them, e.g.: > +the ":map" set of commands (see |map-modes|), but the first argument is a menu +item name, given as a path of menus and submenus with a '.' between them, +e.g.: > :menu File.Save :w :inoremenu File.Save :w diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index 73ac3763d0..a7cec66111 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -382,6 +382,8 @@ Some commands work both in Insert mode and Command-line mode, some not: :cmap :cnoremap :cunmap :cmapclear - yes - :lmap :lnoremap :lunmap :lmapclear yes* yes* yes* +* If 'iminsert' is 1, see |language-mapping| below. + The original Vi did not have separate mappings for Normal/Visual/Operator-pending mode and for Insert/Command-line mode. Therefore the ":map" and ":map!" commands enter and display mappings for diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 5dfe8d595d..7803d48700 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -5177,7 +5177,7 @@ A jump table for the options with a short description can be found at |Q_op|. Environment variables are expanded |:set_env|. If the name of the shell contains a space, you need to enclose it in - quotes. Example: > + quotes. Example with quotes: > :set shell=\"c:\program\ files\unix\sh.exe\"\ -f < Note the backslash before each quote (to avoid starting a comment) and each space (to avoid ending the option value), so better use |:let-&| diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt index fd3d93ed98..2fefdb5222 100644 --- a/runtime/doc/visual.txt +++ b/runtime/doc/visual.txt @@ -103,6 +103,7 @@ gn Search forward for the last used search pattern, like E.g., "dgn" deletes the text of the next match. If Visual mode is active, extends the selection until the end of the next match. + 'wrapscan' applies Note: Unlike `n` the search direction does not depend on the previous search command. diff --git a/runtime/menu.vim b/runtime/menu.vim index 3d0a873973..40a397b73d 100644 --- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -159,6 +159,9 @@ an 20.335 &Edit.-SEP1- vnoremenu 20.340 &Edit.Cu&t"+x "+x vnoremenu 20.350 &Edit.&Copy"+y "+y cnoremenu 20.350 &Edit.&Copy"+y +if exists(':tlmenu') + tlnoremenu 20.350 &Edit.&Copy"+y : +endif nnoremenu 20.360 &Edit.&Paste"+gP "+gP cnoremenu &Edit.&Paste"+gP + exe 'vnoremenu
text @@ -32,5 +42,25 @@ dt text + + " END_INDENT + +% START_INDENT +% INDENT_EXE let g:html_indent_style1 = "inc" +% INDENT_EXE let g:html_indent_script1 = "zero" +% INDENT_EXE call HtmlIndent_CheckUserSettings() + + + + + + +% END_INDENT diff --git a/runtime/indent/testdir/html.ok b/runtime/indent/testdir/html.ok index a96141fb3b..ba2fd3fc7d 100644 --- a/runtime/indent/testdir/html.ok +++ b/runtime/indent/testdir/html.ok @@ -2,35 +2,65 @@ " START_INDENT -
-
- text -
-
- -
- text -
- -
- text -
- -
- text -
- -
-
- dd text -
-
- dt text -
-
+ + + + +
+
+ text +
+
+
+ text +
+ +
+ text +
+ +
+ text +
+ +
+
+ dd text +
+
+ dt text +
+
+ + + " END_INDENT + +% START_INDENT +% INDENT_EXE let g:html_indent_style1 = "inc" +% INDENT_EXE let g:html_indent_script1 = "zero" +% INDENT_EXE call HtmlIndent_CheckUserSettings() + + + + + + +% END_INDENT -- cgit From 0a0034718c00fd9f434d20d29e415287db284bbe Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 29 Apr 2021 08:54:38 -0400 Subject: vim-patch:2547aa930b59 Update runtime files. https://github.com/vim/vim/commit/2547aa930b59f5e2bcb70e81d5a57ed461e59b4f Omit modifyOtherKeys, vim9, vim.man. --- runtime/autoload/decada.vim | 2 +- runtime/doc/arabic.txt | 4 ++-- runtime/doc/change.txt | 2 +- runtime/doc/digraph.txt | 2 ++ runtime/doc/ft_sql.txt | 6 +++--- runtime/doc/mbyte.txt | 8 ++++---- runtime/doc/repeat.txt | 2 +- runtime/doc/rileft.txt | 2 +- runtime/doc/sign.txt | 2 +- runtime/doc/syntax.txt | 2 +- runtime/doc/usr_27.txt | 2 +- runtime/ftplugin/cpp.vim | 9 +++++++-- runtime/ftplugin/diff.vim | 5 ++++- runtime/ftplugin/vim.vim | 4 ++-- runtime/indent/vim.vim | 3 ++- .../pack/dist/opt/termdebug/plugin/termdebug.vim | 2 +- runtime/syntax/aidl.vim | 23 ++++++++++++++++++++++ runtime/syntax/vim.vim | 10 ++++++++-- 18 files changed, 65 insertions(+), 25 deletions(-) create mode 100644 runtime/syntax/aidl.vim (limited to 'runtime') diff --git a/runtime/autoload/decada.vim b/runtime/autoload/decada.vim index 7741ff0572..5124429a75 100644 --- a/runtime/autoload/decada.vim +++ b/runtime/autoload/decada.vim @@ -25,7 +25,7 @@ function decada#Unit_Name () dict " {{{1 " Convert filename into acs unit: " 1: remove the file extenstion. " 2: replace all double '_' or '-' with an dot (which denotes a separate) - " 3: remove a trailing '_' (wich denotes a specification) + " 3: remove a trailing '_' (which denotes a specification) return substitute (substitute (expand ("%:t:r"), '__\|-', ".", "g"), '_$', "", '') endfunction decada#Unit_Name " }}}1 diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt index a3d979e519..df91b8d065 100644 --- a/runtime/doc/arabic.txt +++ b/runtime/doc/arabic.txt @@ -72,7 +72,7 @@ Arabic requires ISO-8859-6 as well as Presentation Form-B fonts (without Form-B, Arabic will _NOT_ be usable). It is highly recommended that users search for so-called 'ISO-10646-1' fonts. Do an Internet search or check www.arabeyes.org for further -info on where to attain the necessary Arabic fonts. +info on where to obtain the necessary Arabic fonts. Font Installation @@ -118,7 +118,7 @@ o Setting the appropriate character Encoding > :set encoding=utf-8 < - to your vimrc file (entering the command manually into you VIM + to your vimrc file (entering the command manually into your Vim window is highly discouraged). In short, include ':set encoding=utf-8' to your vimrc file. diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index e8ca9ba7a0..18cafa8d63 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1698,7 +1698,7 @@ Some examples: Automatic formatting *auto-format* *autoformat* When the 'a' flag is present in 'formatoptions' text is formatted -automatically when inserting text or deleting text. This works nice for +automatically when inserting text or deleting text. This works nicely for editing text paragraphs. A few hints on how to use this: - You need to properly define paragraphs. The simplest is paragraphs that are diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt index 271b8c2597..b7dc16341d 100644 --- a/runtime/doc/digraph.txt +++ b/runtime/doc/digraph.txt @@ -30,6 +30,8 @@ An alternative is using the 'keymap' option. it is the Unicode character, see |digraph-encoding|. Example: > :digr e: 235 a: 228 +< You can use `:exe` to enter a hex number: > + :exe 'digr += ' .. 0x2A72 < Avoid defining a digraph with '_' (underscore) as the first character, it has a special meaning in the future. diff --git a/runtime/doc/ft_sql.txt b/runtime/doc/ft_sql.txt index f0a70d993e..f38c8edbf3 100644 --- a/runtime/doc/ft_sql.txt +++ b/runtime/doc/ft_sql.txt @@ -308,7 +308,7 @@ can create any of the following: > ~/.config/nvim/indent/sqlite.vim No changes are necessary to the SQLSetType function. It will automatically -pickup the new SQL files and load them when you issue the SQLSetType command. +pick up the new SQL files and load them when you issue the SQLSetType command. ============================================================================== @@ -515,7 +515,7 @@ beginning with those characters. > 4.3.2 Column Completion: *sql-completion-columns* The SQL completion plugin can also display a list of columns for particular -tables. The column completion is trigger via c. +tables. The column completion is triggered via c. NOTE: The following example uses to trigger a column list while the popup window is active. @@ -723,7 +723,7 @@ your platform (often a case on *nix) you define the following variable in your |init.vim|: > let g:omni_sql_no_default_maps = 1 -Do no edit ftplugin/sql.vim directly! If you change this file your changes +Do not edit ftplugin/sql.vim directly! If you change this file your changes will be over written on future updates. Vim has a special directory structure which allows you to make customizations without changing the files that are included with the Vim distribution. If you wish to customize the maps diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt index a6410a09cb..952e8efad7 100644 --- a/runtime/doc/mbyte.txt +++ b/runtime/doc/mbyte.txt @@ -90,7 +90,7 @@ There are several ways to enter multi-byte characters: - For MS-Windows IME can be used. See |IME|. - For all systems keymaps can be used. See |mbyte-keymap|. -The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose +The options 'iminsert', 'imsearch' and 'imcmdline' can be used to choose the different input methods or disable them temporarily. ============================================================================== @@ -103,8 +103,8 @@ in, or just use a certain locale inside Vim. WHAT IS A LOCALE? *locale* -There are many of languages in the world. And there are different cultures -and environments at least as much as the number of languages. A linguistic +There are many languages in the world. And there are different cultures and +environments at least as many as the number of languages. A linguistic environment corresponding to an area is called "locale". This includes information about the used language, the charset, collating order for sorting, date format, currency format and so on. For Vim only the language and charset @@ -512,7 +512,7 @@ input_server_name is your |IM-server| name (check your |IM-server| your_input_style is one of |OverTheSpot|, |OffTheSpot|, |Root|. See also |xim-input-style|. -*international may not necessary if you use X11R6. +*international may not be necessary if you use X11R6. *.inputMethod and *.preeditType are optional if you use X11R6. For example, when you are using kinput2 as |IM-server|, > diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt index 31bd93ca24..fb41c459f1 100644 --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -596,7 +596,7 @@ Creating Vim packages *package-create* This assumes you write one or more plugins that you distribute as a package. If you have two unrelated plugins you would use two packages, so that Vim -users can chose what they include or not. Or you can decide to use one +users can choose what they include or not. Or you can decide to use one package with optional plugins, and tell the user to add the ones he wants with `:packadd`. diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt index 550a696de0..d45a2dce7e 100644 --- a/runtime/doc/rileft.txt +++ b/runtime/doc/rileft.txt @@ -64,7 +64,7 @@ o Invocations + 'rightleft' ('rl') sets window orientation to right-to-left. + 'delcombine' ('deco'), boolean, if editing UTF-8 encoded languages, allows one to remove a composing character which gets superimposed - on those that proceeded them (some languages require this). + on those that preceded them (some languages require this). + 'rightleftcmd' ('rlc') sets the command-line within certain modes (such as search) to be utilized in right-to-left orientation as well. diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt index 563f14f4c8..2ee5c31c01 100644 --- a/runtime/doc/sign.txt +++ b/runtime/doc/sign.txt @@ -68,7 +68,7 @@ other plugins using signs. *sign-priority* Each placed sign is assigned a priority value. When multiple signs are placed on the same line, the attributes of the sign with the highest priority is used -independent of the sign group. The default priority for a sign is 10. The +independently of the sign group. The default priority for a sign is 10. The priority is assigned at the time of placing a sign. When the line on which the sign is placed is deleted, the sign is moved to the diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 124117169a..f0aded842c 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1906,7 +1906,7 @@ new highlightings for the following groups.: Debug, DebugSpecial, DebugString, DebugBoolean, DebugType which are used for the statement itself, special characters used in debug strings, strings, boolean constants and types (this, super) respectively. I -have opted to chose another background for those statements. +have opted to choose another background for those statements. Javadoc is a program that takes special comments out of Java program files and creates HTML pages. The standard configuration will highlight this HTML code diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt index 57eafce7a6..230603de70 100644 --- a/runtime/doc/usr_27.txt +++ b/runtime/doc/usr_27.txt @@ -434,7 +434,7 @@ redefined without changing the search pattern. /\f\+ -The "\f" items stands for file name characters. Thus this matches a sequence +The "\f" item stands for file name characters. Thus this matches a sequence of characters that can be a file name. Which characters can be part of a file name depends on the system you are using. On MS-Windows, the backslash is included, on Unix it is not. This is diff --git a/runtime/ftplugin/cpp.vim b/runtime/ftplugin/cpp.vim index 8c3f211da8..f9d31cbec3 100644 --- a/runtime/ftplugin/cpp.vim +++ b/runtime/ftplugin/cpp.vim @@ -1,12 +1,17 @@ " Vim filetype plugin file " Language: C++ " Maintainer: Bram Moolenaar -" Last Change: 2001 Jan 15 +" Last Change: 2020 Jul 26 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") finish endif -" Behaves just like C +" Behaves mostly just like C runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim + +" C++ uses templates with +" Disabled, because it gives an error for typing an unmatched ">". +" set matchpairs+=<:> +" let b:undo_ftplugin ..= ' | setl matchpairs<' diff --git a/runtime/ftplugin/diff.vim b/runtime/ftplugin/diff.vim index 3fe1b84a04..0464290475 100644 --- a/runtime/ftplugin/diff.vim +++ b/runtime/ftplugin/diff.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Diff " Maintainer: Bram Moolenaar -" Last Change: 2005 Jul 27 +" Last Change: 2020 Jul 18 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -13,3 +13,6 @@ let b:undo_ftplugin = "setl modeline<" " Don't use modelines in a diff, they apply to the diffed file setlocal nomodeline + +" If there are comments they start with # +let &commentstring = "# %s" diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim index 1009292788..ee189e39c0 100644 --- a/runtime/ftplugin/vim.vim +++ b/runtime/ftplugin/vim.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Vim " Maintainer: Bram Moolenaar -" Last Change: 2020 Jul 06 +" Last Change: 2020 Jul 26 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -86,7 +86,7 @@ endif if exists("loaded_matchit") let b:match_ignorecase = 0 let b:match_words = - \ '\<\%(fu\%[nction]\|def\)\>:\:\<\%(endf\%[unction]\|enddef\)\>,' . + \ '\<\%(fu\%[nction]\|def\)\>[^(]:\:\<\%(endf\%[unction]\|enddef\)\>,' . \ '\<\(wh\%[ile]\|for\)\>:\:\:\,' . \ '\:\:\,' . \ '{:},' . diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim index db27f19714..7b9fa734bc 100644 --- a/runtime/indent/vim.vim +++ b/runtime/indent/vim.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Vim script " Maintainer: Bram Moolenaar -" Last Change: 2019 Oct 31 +" Last Change: 2020 Jul 19 " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -11,6 +11,7 @@ let b:did_indent = 1 setlocal indentexpr=GetVimIndent() setlocal indentkeys+==end,=else,=cat,=fina,=END,0\\,0=\"\\\ +setlocal indentkeys-=0# let b:undo_indent = "setl indentkeys< indentexpr<" diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim index b9ee855836..82f6cc1884 100644 --- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim +++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @@ -2,7 +2,7 @@ " " Author: Bram Moolenaar " Copyright: Vim license applies, see ":help license" -" Last Change: 2020 Jun 12 +" Last Change: 2020 Jul 12 " " WORK IN PROGRESS - Only the basics work " Note: On MS-Windows you need a recent version of gdb. The one included with diff --git a/runtime/syntax/aidl.vim b/runtime/syntax/aidl.vim new file mode 100644 index 0000000000..1947ab97d8 --- /dev/null +++ b/runtime/syntax/aidl.vim @@ -0,0 +1,23 @@ +" Vim syntax file +" Language: aidl (Android Interface Definition Language) +" https://developer.android.com/guide/components/aidl +" Maintainer: Dominique Pelle +" LastChange: 2020/07/25 + +" Quit when a syntax file was already loaded. +if exists("b:current_syntax") + finish +endif + +source :p:h/java.vim + +syn keyword aidlParamDir in out inout +syn keyword aidlKeyword oneway parcelable + +" Needed for the 'in', 'out', 'inout' keywords to be highlighted. +syn cluster javaTop add=aidlParamDir + +hi def link aidlParamDir StorageClass +hi def link aidlKeyword Keyword + +let b:current_syntax = "aidl" diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 497a9332ca..0a8eaf887b 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -268,6 +268,7 @@ syn match vimComment +\\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\" contains=vimNotation +" User Command Highlighting: {{{2 +syn match vimUsrCmd '^\s*\zs\u\w*.*$' + " Errors And Warnings: {{{2 " ==================== if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror") @@ -572,7 +576,7 @@ syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'" syn match vimHiGuiRgb contained "#\x\{6}" " Highlighting: hi group key=arg ... {{{2 -syn cluster vimHiCluster contains=vimGroup,vimHiBlend,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation +syn cluster vimHiCluster contains=vimGroup,vimHiBlend,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror") syn match vimHiKeyError contained "\i\+="he=e-1 @@ -581,6 +585,7 @@ syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError +syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib @@ -604,7 +609,7 @@ syn match vimCtrlChar "[- -]" " Beginners - Patterns that involve ^ {{{2 " ========= syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle -syn match vim9LineComment +^[ \t:]\+#.*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle +syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup syn match vimContinue "^\s*\\" syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue @@ -856,6 +861,7 @@ if !exists("skip_vim_syntax_inits") hi def link vimError Error hi def link vimFBVar vimVar hi def link vimFgBgAttrib vimHiAttrib + hi def link vimHiCtermul vimHiTerm hi def link vimFold Folded hi def link vimFTCmd vimCommand hi def link vimFTOption vimSynType -- cgit From 09f3e62bc623dd3cbcbc708b019b55a8b9449de7 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 29 Apr 2021 18:34:49 -0400 Subject: vim-patch:e7b1ea0276cc Update runtime files. https://github.com/vim/vim/commit/e7b1ea0276cc83cd5c612f3189a174a60d57b5ed --- runtime/doc/autocmd.txt | 4 +- runtime/doc/eval.txt | 25 +++++----- runtime/doc/helphelp.txt | 18 ++++--- runtime/doc/indent.txt | 28 +++++------ runtime/doc/options.txt | 11 +++-- runtime/doc/syntax.txt | 14 +++--- runtime/doc/usr_04.txt | 2 +- runtime/doc/usr_05.txt | 4 +- runtime/doc/usr_20.txt | 8 +-- runtime/doc/usr_30.txt | 2 +- runtime/doc/usr_31.txt | 4 +- runtime/doc/usr_40.txt | 6 +-- runtime/doc/usr_41.txt | 4 +- runtime/doc/usr_42.txt | 4 +- runtime/doc/usr_toc.txt | 2 +- runtime/doc/visual.txt | 8 +-- runtime/ftplugin/vim.vim | 2 +- runtime/keymap/turkish-f.vim | 114 +++++++++++++++++++++++++++++++++++++++++++ runtime/keymap/turkish-q.vim | 62 +++++++++++++++++++++++ runtime/syntax/css.vim | 9 ++-- runtime/syntax/fstab.vim | 6 +-- runtime/syntax/help.vim | 2 +- runtime/syntax/pamconf.vim | 37 +++++++++----- 23 files changed, 286 insertions(+), 90 deletions(-) create mode 100644 runtime/keymap/turkish-f.vim create mode 100644 runtime/keymap/turkish-q.vim (limited to 'runtime') diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index cd789e6466..146f5bb533 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1209,8 +1209,8 @@ name! :aug[roup]! {name} Delete the autocmd group {name}. Don't use this if there is still an autocommand using this group! You will get a warning if doing - it anyway. when the group is the current group - you will get error E936. + it anyway. When the group is the current + group you will get error E936. To enter autocommands for a specific group, use this method: 1. Select the group with ":augroup {name}". diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index e79f97ee38..5a1f8cea54 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -4164,28 +4164,29 @@ getbufinfo([{dict}]) Each returned List item is a dictionary with the following entries: - bufnr buffer number. + bufnr Buffer number. changed TRUE if the buffer is modified. - changedtick number of changes made to the buffer. + changedtick Number of changes made to the buffer. hidden TRUE if the buffer is hidden. - lastused timestamp in seconds, like + lastused Timestamp in seconds, like |localtime()|, when the buffer was last used. listed TRUE if the buffer is listed. - lnum current line number in buffer. - linecount number of lines in the buffer (only + lnum Line number used for the buffer when + opened in the current window. + linecount Number of lines in the buffer (only valid when loaded) loaded TRUE if the buffer is loaded. - name full path to the file in the buffer. - signs list of signs placed in the buffer. + name Full path to the file in the buffer. + signs List of signs placed in the buffer. Each list item is a dictionary with the following fields: id sign identifier lnum line number name sign name - variables a reference to the dictionary with + variables A reference to the dictionary with buffer-local variables. - windows list of |window-ID|s that display this + windows List of |window-ID|s that display this buffer Examples: > @@ -4621,7 +4622,7 @@ getloclist({nr},[, {what}]) *getloclist()* :echo getloclist(5, {'filewinid': 0}) -getmarklist([{expr}] *getmarklist()* +getmarklist([{expr}]) *getmarklist()* Without the {expr} argument returns a |List| with information about all the global marks. |mark| @@ -7814,7 +7815,7 @@ settagstack({nr}, {dict} [, {action}]) *settagstack()* Returns zero for success, -1 for failure. - Examples (for more examples see |tagstack-examples||): + Examples (for more examples see |tagstack-examples|): Empty the tag stack of window 3: > call settagstack(3, {'items' : []}) @@ -8461,7 +8462,7 @@ swapname({expr}) *swapname()* The result is the swap file path of the buffer {expr}. For the use of {expr}, see |bufname()| above. If buffer {expr} is the current buffer, the result is equal to - |:swapname| (unless no swap file). + |:swapname| (unless there is no swap file). If buffer {expr} has no swap file, returns an empty string. synID({lnum}, {col}, {trans}) *synID()* diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt index c9bee17d70..ab14023137 100644 --- a/runtime/doc/helphelp.txt +++ b/runtime/doc/helphelp.txt @@ -369,14 +369,16 @@ highlighting. So do these: You can find the details in $VIMRUNTIME/syntax/help.vim *inclusion* -Some people make a big deal about using "his" when referring to the user, -thinking it means we assume the user is male. That is of course not the case, -it's just a habit of writing help text, which quite often is many years old. -Also, a lot of the text is written by contributors for who English is not -their first language. We do not make any assumptions about the gender of the -user, no matter how the text is phrased. And we do not want to waste time on -this discussion. The goal is that the reader understands how Vim works, the -exact wording is secondary. +Vim is for everybody, no matter race, gender or anything. Some people make a +big deal about using "he" or "his" when referring to the user, thinking it +means we assume the user is male. That is not the case, it's just a habit of +writing help text, which quite often is many years old. Also, a lot of the +text is written by contributors for whom English is not their first language. +We do not make any assumptions about the gender of the user, no matter how the +text is phrased. Some people have suggested using "they", but that is not +regular English. We do not want to spend much time on this discussion. The +goal is that the reader understands how Vim works, the exact wording is +secondary. vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt index 4113564169..dd6f0d901d 100644 --- a/runtime/doc/indent.txt +++ b/runtime/doc/indent.txt @@ -410,11 +410,11 @@ The examples below assume a 'shiftwidth' of 4. < *cino-(* (N When in unclosed parentheses, indent N characters from the line - with the unclosed parentheses. Add a 'shiftwidth' for every + with the unclosed parenthesis. Add a 'shiftwidth' for every extra unclosed parentheses. When N is 0 or the unclosed - parentheses is the first non-white character in its line, line + parenthesis is the first non-white character in its line, line up with the next non-white character after the unclosed - parentheses. (default 'shiftwidth' * 2). + parenthesis. (default 'shiftwidth' * 2). cino= cino=(0 > if (c1 && (c2 || if (c1 && (c2 || @@ -435,7 +435,7 @@ The examples below assume a 'shiftwidth' of 4. < *cino-U* UN When N is non-zero, do not ignore the indenting specified by - ( or u in case that the unclosed parentheses is the first + ( or u in case that the unclosed parenthesis is the first non-white character in its line. (default 0). cino= or cino=(s cino=(s,U1 > @@ -448,8 +448,8 @@ The examples below assume a 'shiftwidth' of 4. *cino-w* wN When in unclosed parentheses and N is non-zero and either using "(0" or "u0", respectively, or using "U0" and the unclosed - parentheses is the first non-white character in its line, line - up with the character immediately after the unclosed parentheses + parenthesis is the first non-white character in its line, line + up with the character immediately after the unclosed parenthesis rather than the first non-white character. (default 0). cino=(0 cino=(0,w1 > @@ -460,11 +460,11 @@ The examples below assume a 'shiftwidth' of 4. < *cino-W* WN When in unclosed parentheses and N is non-zero and either - using "(0" or "u0", respectively and the unclosed parentheses is + using "(0" or "u0", respectively and the unclosed parenthesis is the last non-white character in its line and it is not the - closing parentheses, indent the following line N characters + closing parenthesis, indent the following line N characters relative to the outer context (i.e. start of the line or the - next unclosed parentheses). (default: 0). + next unclosed parenthesis). (default: 0). cino=(0 cino=(0,W4 > a_long_line( a_long_line( @@ -491,8 +491,8 @@ The examples below assume a 'shiftwidth' of 4. < *cino-m* mN When N is non-zero, line up a line starting with a closing - parentheses with the first character of the line with the - matching opening parentheses. (default 0). + parenthesis with the first character of the line with the + matching opening parenthesis. (default 0). cino=(s cino=(s,m1 > c = c1 && ( c = c1 && ( @@ -506,7 +506,7 @@ The examples below assume a 'shiftwidth' of 4. < *cino-M* MN When N is non-zero, line up a line starting with a closing - parentheses with the first character of the previous line. + parenthesis with the first character of the previous line. (default 0). cino= cino=M1 > @@ -565,7 +565,7 @@ The examples below assume a 'shiftwidth' of 4. recognize preprocessor lines; right-shifting lines that start with "#" does not work. - + *cino-P* PN When N is non-zero recognize C pragmas, and indent them like any other code; does not concern other preprocessor directives. When N is zero (default): don't recognize C pragmas, treating @@ -992,7 +992,7 @@ Indent after a nested paren: > Indent for a continuation line: > let g:pyindent_continue = 'shiftwidth() * 2' -The method uses |searchpair()| to look back for unclosed parenthesis. This +The method uses |searchpair()| to look back for unclosed parentheses. This can sometimes be slow, thus it timeouts after 150 msec. If you notice the indenting isn't correct, you can set a larger timeout in msec: > let g:pyindent_searchpair_timeout = 500 diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 23354c0320..ef2957fcbe 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -2012,6 +2012,8 @@ A jump table for the options with a short description can be found at |Q_op|. 'directory' 'dir' string (default "$XDG_DATA_HOME/nvim/swap//") global List of directory names for the swap file, separated with commas. + + Possible items: - The swap file will be created in the first directory where this is possible. If it is not possible in any directory, but last directory listed in the option does not exist, it is created. @@ -2047,9 +2049,10 @@ A jump table for the options with a short description can be found at |Q_op|. the same file twice will result in a warning. Using "/tmp" on Unix is discouraged: When the system crashes you lose the swap file. "/var/tmp" is often not cleared when rebooting, thus is a better - choice than "/tmp". But it can contain a lot of files, your swap - files get lost in the crowd. That is why a "tmp" directory in your - home directory is tried first. + choice than "/tmp". But others on the computer may be able to see the + files, and it can contain a lot of files, your swap files get lost in + the crowd. That is why a "tmp" directory in your home directory is + tried first. The use of |:set+=| and |:set-=| is preferred when adding or removing directories from the list. This avoids problems when a future version uses another default. @@ -6622,7 +6625,7 @@ A jump table for the options with a short description can be found at |Q_op|. >= 14 Anything pending in a ":finally" clause. >= 15 Every executed Ex command from a script (truncated at 200 characters). - >= 16 Every executed Ex command + >= 16 Every executed Ex command. This option can also be set with the "-V" argument. See |-V|. This option is also set by the |:verbose| command. diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index f0aded842c..fa9a8bbd2b 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -3603,7 +3603,7 @@ DEFINING FOLDLEVEL *:syn-foldlevel* start: Use level of item containing start of line. minimum: Use lowest local-minimum level of items on line. - The default is 'start'. Use 'minimum' to search a line horizontally + The default is "start". Use "minimum" to search a line horizontally for the lowest level contained on the line that is followed by a higher level. This produces more natural folds when syntax items may close and open horizontally within a line. @@ -3748,9 +3748,9 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* [keepend] [extend] [excludenl] - start={start_pattern} .. - [skip={skip_pattern}] - end={end_pattern} .. + start={start-pattern} .. + [skip={skip-pattern}] + end={end-pattern} .. [{options}] This defines one region. It may span several lines. @@ -3772,12 +3772,12 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* extend a containing match or item. Only useful for end patterns. Must be given before the patterns it applies to. |:syn-excludenl| - start={start_pattern} The search pattern that defines the start of + start={start-pattern} The search pattern that defines the start of the region. See |:syn-pattern| below. - skip={skip_pattern} The search pattern that defines text inside + skip={skip-pattern} The search pattern that defines text inside the region where not to look for the end pattern. See |:syn-pattern| below. - end={end_pattern} The search pattern that defines the end of + end={end-pattern} The search pattern that defines the end of the region. See |:syn-pattern| below. Example: > diff --git a/runtime/doc/usr_04.txt b/runtime/doc/usr_04.txt index 23270e3154..f59597eb42 100644 --- a/runtime/doc/usr_04.txt +++ b/runtime/doc/usr_04.txt @@ -161,7 +161,7 @@ line break. ============================================================================== *04.3* Repeating a change -The "." command is one of the most simple yet powerful commands in Vim. It +The "." command is one of the simplest yet powerful commands in Vim. It repeats the last change. For instance, suppose you are editing an HTML file and want to delete all the tags. You position the cursor on the first < and delete the with the command "df>". You then go to the < of the next diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt index 70a0ad97c1..d8634ac6ed 100644 --- a/runtime/doc/usr_05.txt +++ b/runtime/doc/usr_05.txt @@ -45,8 +45,8 @@ This file is always used and is recommended: ~/AppData/Local/nvim/init.vim (Windows) ~ The vimrc file can contain all the commands that you type after a colon. The -most simple ones are for setting options. For example, if you want Vim to -always start with the 'ignorecase' option on, add this line your vimrc file: > +simplest ones are for setting options. For example, if you want Vim to always +start with the 'incsearch' option on, add this line your vimrc file: > set ignorecase diff --git a/runtime/doc/usr_20.txt b/runtime/doc/usr_20.txt index 8eee7aedb7..29252705d6 100644 --- a/runtime/doc/usr_20.txt +++ b/runtime/doc/usr_20.txt @@ -327,10 +327,10 @@ for next. ============================================================================== *20.5* Command line window -Typing the text in the command line works different from typing text in Insert -mode. It doesn't allow many commands to change the text. For most commands -that's OK, but sometimes you have to type a complicated command. That's where -the command line window is useful. +Typing the text in the command line works differently from typing text in +Insert mode. It doesn't allow many commands to change the text. For most +commands that's OK, but sometimes you have to type a complicated command. +That's where the command line window is useful. Open the command line window with this command: > diff --git a/runtime/doc/usr_30.txt b/runtime/doc/usr_30.txt index b729c7a263..98d1780cc4 100644 --- a/runtime/doc/usr_30.txt +++ b/runtime/doc/usr_30.txt @@ -336,7 +336,7 @@ How to do that is explained here: |indent-expression|. ============================================================================== *30.4* Other indenting -The most simple form of automatic indenting is with the 'autoindent' option. +The simplest form of automatic indenting is with the 'autoindent' option. It uses the indent from the previous line. A bit smarter is the 'smartindent' option. This is useful for languages where no indent file is available. 'smartindent' is not as smart as 'cindent', but smarter than 'autoindent'. diff --git a/runtime/doc/usr_31.txt b/runtime/doc/usr_31.txt index 74de3f1042..a35f392324 100644 --- a/runtime/doc/usr_31.txt +++ b/runtime/doc/usr_31.txt @@ -198,9 +198,9 @@ is not possible in most terminals. You can start the X-Windows version of gvim with an argument to specify the size and position of the window: > - gvim -geometry {width}x{height}+{x_offset}+{y_offset} + gvim -geometry {width}x{height}+{x-offset}+{y-offset} -{width} and {height} are in characters, {x_offset} and {y_offset} are in +{width} and {height} are in characters, {x-offset} and {y-offset} are in pixels. Example: > gvim -geometry 80x25+100+300 diff --git a/runtime/doc/usr_40.txt b/runtime/doc/usr_40.txt index 9a1fe50f31..5b1254e2ae 100644 --- a/runtime/doc/usr_40.txt +++ b/runtime/doc/usr_40.txt @@ -453,12 +453,12 @@ matching BufWritePre autocommands and executes them, and then it performs the ":write". The general form of the :autocmd command is as follows: > - :autocmd [group] {events} {file_pattern} [++nested] {command} + :autocmd [group] {events} {file-pattern} [++nested] {command} The [group] name is optional. It is used in managing and calling the commands (more on this later). The {events} parameter is a list of events (comma separated) that trigger the command. - {file_pattern} is a filename, usually with wildcards. For example, using + {file-pattern} is a filename, usually with wildcards. For example, using "*.txt" makes the autocommand be used for all files whose name end in ".txt". The optional [++nested] flag allows for nesting of autocommands (see below), and finally, {command} is the command to be executed. @@ -489,7 +489,7 @@ See |autocmd-events| for a complete list of events. PATTERNS -The {file_pattern} argument can actually be a comma-separated list of file +The {file-pattern} argument can actually be a comma-separated list of file patterns. For example: "*.c,*.h" matches files ending in ".c" and ".h". The usual file wildcards can be used. Here is a summary of the most often used ones: diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index fcf49c92ac..94d0422818 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -44,7 +44,7 @@ script file. You can think of other uses yourself. If you are familiar with Python, you can find a comparison between Python and Vim script here, with pointers to other documents: https://gist.github.com/yegappan/16d964a37ead0979b05e655aa036cad0 - And if you are familiar with Javascript: + And if you are familiar with JavaScript: https://w0rp.com/blog/post/vim-script-for-the-javascripter/ Let's start with a simple example: > @@ -1960,7 +1960,7 @@ Thus when a user types "\a", this sequence is invoked: > \a -> TypecorrAdd -> Add -> :call Add() -If another script would also map Add, it would get another script ID and +If another script was also map Add, it would get another script ID and thus define another mapping. Note that instead of s:Add() we use Add() here. That is because the diff --git a/runtime/doc/usr_42.txt b/runtime/doc/usr_42.txt index 501f02e745..99da1359c2 100644 --- a/runtime/doc/usr_42.txt +++ b/runtime/doc/usr_42.txt @@ -209,8 +209,8 @@ argument: > :amenu Mine.Next\ File :call NextFile() Don't use "" too often. It is not needed for short commands. If you -make a menu for someone else, being able the see the executed command will -give him a hint about what he could have typed, instead of using the mouse. +make a menu for someone else, being able to see the executed command will give +him a hint about what he could have typed, instead of using the mouse. LISTING MENUS diff --git a/runtime/doc/usr_toc.txt b/runtime/doc/usr_toc.txt index eb6dda84bb..f466a8ece9 100644 --- a/runtime/doc/usr_toc.txt +++ b/runtime/doc/usr_toc.txt @@ -327,7 +327,7 @@ Make Vim work as you like it. |44.11| Installing a syntax file |44.12| Portable syntax file layout -|usr_45.txt| Select your language +|usr_45.txt| Select your language (locale) |45.1| Language for Messages |45.2| Language for Menus |45.3| Using another encoding diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt index 2fefdb5222..f7828f0289 100644 --- a/runtime/doc/visual.txt +++ b/runtime/doc/visual.txt @@ -112,7 +112,7 @@ gN Like |gn| but searches backward, like with `N`. ** Set the current cursor position. If Visual mode is - active it is stopped. Only when 'mouse' option is + active it is stopped. Only when 'mouse' option contains 'n' or 'a'. If the position is within 'so' lines from the last line on the screen the text is scrolled up. If the position is within 'so' lines from @@ -123,7 +123,7 @@ gN Like |gn| but searches backward, like with `N`. Start Visual mode if it is not active. The text from the cursor position to the position of the click is highlighted. If Visual mode was already active move - the start or end of the highlighted text, which ever + the start or end of the highlighted text, whichever is closest, to the position of the click. Only when 'mouse' option contains 'n' or 'a'. @@ -226,7 +226,7 @@ The objects that can be used are: is inner sentence |v_is| ap a paragraph (with white space) |v_ap| ip inner paragraph |v_ip| - ab a () block (with parenthesis) |v_ab| + ab a () block (with parentheses) |v_ab| ib inner () block |v_ib| aB a {} block (with braces) |v_aB| iB inner {} block |v_iB| @@ -337,7 +337,7 @@ Visual-block Shift *v_b_>* The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The LHS of the block determines the point from which to apply a right shift, and padding includes TABs optimally according to 'ts' and 'et'. The LHS of the -block determines the point upto which to shift left. +block determines the point up to which to shift left. See |v_b_>_example|. See |v_b_<_example|. diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim index ee189e39c0..9369f7c63c 100644 --- a/runtime/ftplugin/vim.vim +++ b/runtime/ftplugin/vim.vim @@ -86,7 +86,7 @@ endif if exists("loaded_matchit") let b:match_ignorecase = 0 let b:match_words = - \ '\<\%(fu\%[nction]\|def\)\>[^(]:\:\<\%(endf\%[unction]\|enddef\)\>,' . + \ '\<\%(fu\%[nction]\|def\)\>)\@!:\:\<\%(endf\%[unction]\|enddef\)\>,' . \ '\<\(wh\%[ile]\|for\)\>:\:\:\,' . \ '\:\:\,' . \ '{:},' . diff --git a/runtime/keymap/turkish-f.vim b/runtime/keymap/turkish-f.vim new file mode 100644 index 0000000000..a2774dbfff --- /dev/null +++ b/runtime/keymap/turkish-f.vim @@ -0,0 +1,114 @@ +" Vim keymap file for Turkish F layout +" Maintainer: Emir SARI +" Last changed: 5 August 2020 + +scriptencoding utf-8 +let b:keymap_name = "tr-f" +loadkeymap + +F A LATIN CAPITAL LETTER A +< B LATIN CAPITAL LETTER B +V C LATIN CAPITAL LETTER C +B Ç LATIN CAPITAL LETTER C WITH CEDILLA +Y D LATIN CAPITAL LETTER D +D E LATIN CAPITAL LETTER E +Q F LATIN CAPITAL LETTER F +W G LATIN CAPITAL LETTER G +E Ğ LATIN CAPITAL LETTER G WITH BREVE +O H LATIN CAPITAL LETTER H +R I LATIN CAPITAL LETTER I +S İ LATIN CAPITAL LETTER I WITH DOT ABOVE +Z J LATIN CAPITAL LETTER J +J K LATIN CAPITAL LETTER K +K M LATIN CAPITAL LETTER M +I N LATIN CAPITAL LETTER N +T O LATIN CAPITAL LETTER O +X Ö LATIN CAPITAL LETTER O WITH DIAERESIS +U R LATIN CAPITAL LETTER R +M S LATIN CAPITAL LETTER S +\" Ş LATIN CAPITAL LETTER S WITH CEDILLA +H T LATIN CAPITAL LETTER T +A U LATIN CAPITAL LETTER U +G Ü LATIN CAPITAL LETTER U WITH DIAERESIS +C V LATIN CAPITAL LETTER V +: Y LATIN CAPITAL LETTER Y +N Z LATIN CAPITAL LETTER Z + +{ Q LATIN CAPITAL LETTER Q +} W LATIN CAPITAL LETTER W +| X LATIN CAPITAL LETTER X + +± * ASTERISK +@ " QUOTATION MARK +# ^ CIRCUMFLEX ACCENT +^ & AMPERSAND +& ' APOSTROPHE +* ( LEFT PARENTHESIS +( ) RIGHT PARENTHESIS +) = EQUALS SIGN +_ ? QUESTION MARK ++ _ LOW LINE +> : COLON +? ; SEMICOLON +~ > GREATER-THAN SIGN + +Å Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX +Í Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX +Ï Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX +` » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + +f a LATIN SMALL LETTER A +, b LATIN SMALL LETTER B +v c LATIN SMALL LETTER C +b ç LATIN SMALL LETTER C WITH CEDILLA +y d LATIN SMALL LETTER D +d e LATIN SMALL LETTER E +q f LATIN SMALL LETTER F +w g LATIN SMALL LETTER G +e ğ LATIN SMALL LETTER G WITH BREVE +o h LATIN SMALL LETTER H +r ı LATIN SMALL LETTER I +s i LATIN SMALL LETTER I WITH DOT ABOVE +z j LATIN SMALL LETTER J +j k LATIN SMALL LETTER K +k m LATIN SMALL LETTER M +i n LATIN SMALL LETTER N +t o LATIN SMALL LETTER O +x ö LATIN SMALL LETTER O WITH DIAERESIS +u r LATIN SMALL LETTER R +m s LATIN SMALL LETTER S +\' ş LATIN SMALL LETTER S WITH CEDILLA +h t LATIN SMALL LETTER T +a u LATIN SMALL LETTER U +g ü LATIN SMALL LETTER U WITH DIAERESIS +c v LATIN SMALL LETTER V +; y LATIN SMALL LETTER Y +n z LATIN SMALL LETTER Z + +[ q LATIN SMALL LETTER Q +] w LATIN SMALL LETTER W +\\ x LATIN SMALL LETTER X + +§ + PLUS SIGN +- / SOLIDUS += - HYPHEN-MINUS +/ , COMMA +` < LESS-THAN SIGN + +£ # NUMBER SIGN +¶ { LEFT CURLY BRACKET +• [ LEFT SQUARE BRACKET +ª ] RIGHT SQUARE BRACKET +º } RIGHT CURLY BRACKET +– \ REVERSE SOLIDUS +≠ | VERTICAL LINE +œ @ COMMERCIAL AT +‘ ~ TILDE +å û LATIN SMALL LETTER U WITH CIRCUMFLEX +ß î LATIN SMALL LETTER I WITH CIRCUMFLEX +∂ € EURO SIGN +ƒ â LATIN SMALL LETTER A WITH CIRCUMFLEX +˙ ₺ TURKISH LIRA SIGN +¬ £ POUND SIGN +… ¥ YEN SIGN +` « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK diff --git a/runtime/keymap/turkish-q.vim b/runtime/keymap/turkish-q.vim new file mode 100644 index 0000000000..900c10eb92 --- /dev/null +++ b/runtime/keymap/turkish-q.vim @@ -0,0 +1,62 @@ +" Vim keymap file for Turkish Q layout +" Maintainer: Emir SARI +" Last changed: 5 August 2020 + +scriptencoding utf-8 +let b:keymap_name = "tr-q" +loadkeymap + +\> Ç LATIN CAPITAL LETTER C WITH CEDILLA +\{ Ğ LATIN CAPITAL LETTER G WITH BREVE +\" İ LATIN CAPITAL LETTER I WITH DOT ABOVE +\< Ö LATIN CAPITAL LETTER O WITH DIAERESIS +\: Ş LATIN CAPITAL LETTER S WITH CEDILLA +\} Ü LATIN CAPITAL LETTER U WITH DIAERESIS + +± é LATIN SMALL LETTER E WITH ACUTE +@ ' APOSTROPHE +# ^ CIRCUMFLEX ACCENT +$ + PLUS SIGN +^ & AMPERSAND +& / SOLIDUS +* ( LEFT PARENTHESIS +( ) RIGHT PARENTHESIS +) = EQUAL SIGN +_ ? QUESTION MARK ++ _ LOW LINE +~ > GREATER-THAN SIGN +| ; SEMICOLON +? : COLON + +\. ç LATIN SMALL LETTER C WITH CEDILLA +\[ ğ LATIN SMALL LETTER G WITH BREVE +\' i LATIN SMALL LETTER I +\, ö LATIN SMALL LETTER O WITH DIAERESIS +\; ş LATIN SMALL LETTER S WITH CEDILLA +\] ü LATIN SMALL LETTER U WITH DIAERESIS +i ı LATIN SMALL LETTER DOTLESS I + +§ " QUOTATION MARK +- * ASTERISK += - HYPHEN-MINUS +\\ , COMMA +\/ . FULL STOP +` < LESS-THAN SIGN + +™ £ POUND SIGN +£ # NUMBER SIGN +¢ $ DOLLAR SIGN +∞ ½ VULGAR FRACTION ONE HALF +¶ { LEFT CURLY BRACKET +• [ LEFT SQUARE BRACKET +ª ] RIGHT SQUARE BRACKET +º } RIGHT CURLY BRACKET +– \ REVERSE SOLIDUS +≠ | VERTICAL LINE +œ @ COMMERCIAL AT +´ € EURO SIGN +† ₺ TURKISH LIRA SIGN +¥ ¥ YEN SIGN +‘ ~ TILDE +… ´ ACUTE ACCENT +« ` GRAVE ACCENT diff --git a/runtime/syntax/css.vim b/runtime/syntax/css.vim index 73bbd8d03f..f915b4d375 100644 --- a/runtime/syntax/css.vim +++ b/runtime/syntax/css.vim @@ -1,11 +1,12 @@ " Vim syntax file " Language: Cascading Style Sheets " Previous Contributor List: +" Jules Wang " Claudio Fleiner (Maintainer) " Yeti (Add full CSS2, HTML4 support) " Nikolai Weibull (Add CSS2 support) -" URL: https://github.com/JulesWang/css.vim -" Maintainer: Jules Wang +" URL: https://github.com/jsit/css.vim +" Maintainer: Jay Sitter " Last Change: 2019 Jul. 29 " quit when a syntax file was already loaded @@ -68,7 +69,7 @@ endtry " digits syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators -syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|fr\|vw\|vh\|vmin\|vmax\)\>" contains=cssUnitDecorators +syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|fr\|vw\|vh\|vmin\|vmax\|ch\)\>" contains=cssUnitDecorators syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=%" contains=cssUnitDecorators syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)\>" contains=cssUnitDecorators syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)\>" contains=cssUnitDecorators @@ -128,12 +129,14 @@ syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\)\=\gradient\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y\|Z\)\=\|translate\(3d\|X\|Y\|Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y\|Z\)\=\|perspective\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma +syn region cssFunction contained matchgroup=cssFunctionName start="\<\(blur\|brightness\|contrast\|drop-shadow\|grayscale\|hue-rotate\|invert\|opacity\|saturate\|sepia\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma syn keyword cssGradientAttr contained top bottom left right cover center middle ellipse at syn match cssFunctionComma contained "," " Common Prop and Attr syn keyword cssCommonAttr contained auto none inherit all default normal syn keyword cssCommonAttr contained top bottom center stretch hidden visible +syn match cssCommonAttr contained "\<\(max-\|min-\|fit-\)content\>" "------------------------------------------------ " CSS Animations " http://www.w3.org/TR/css3-animations/ diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim index e416a9abfc..6b17b5a35e 100644 --- a/runtime/syntax/fstab.vim +++ b/runtime/syntax/fstab.vim @@ -2,8 +2,8 @@ " Language: fstab file " Maintainer: Radu Dineiu " URL: https://raw.github.com/rid9/vim-fstab/master/fstab.vim -" Last Change: 2019 Jun 06 -" Version: 1.3 +" Last Change: 2020 Aug 06 +" Version: 1.4 " " Credits: " David Necas (Yeti) @@ -68,7 +68,7 @@ syn match fsOptionsString /[a-zA-Z0-9_-]\+/ syn keyword fsOptionsYesNo yes no syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck syn keyword fsOptionsSize 512 1024 2048 -syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail +syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail failok syn match fsOptionsGeneral /_netdev/ " Options: adfs diff --git a/runtime/syntax/help.vim b/runtime/syntax/help.vim index a387dd4342..d3d8f4f435 100644 --- a/runtime/syntax/help.vim +++ b/runtime/syntax/help.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Vim help file " Maintainer: Bram Moolenaar (Bram@vim.org) -" Last Change: 2020 Mar 06 +" Last Change: 2020 Jul 28 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") diff --git a/runtime/syntax/pamconf.vim b/runtime/syntax/pamconf.vim index 10d667bdf5..29132848a9 100644 --- a/runtime/syntax/pamconf.vim +++ b/runtime/syntax/pamconf.vim @@ -1,7 +1,8 @@ " Vim syntax file " Language: pam(8) configuration file " Previous Maintainer: Nikolai Weibull -" Latest Revision: 2011-08-03 +" Latest Revision: 2020/08/04 +" Changes By: Haochen Tong if exists("b:current_syntax") @@ -11,23 +12,32 @@ endif let s:cpo_save = &cpo set cpo&vim -syn match pamconfService '^[[:graph:]]\+' - \ nextgroup=pamconfType, - \ pamconfServiceLineCont skipwhite +let s:has_service_field = exists("b:pamconf_has_service_field") + \ ? b:pamconf_has_service_field + \ : expand('%:t') == 'pam.conf' ? 1 : 0 + +syn match pamconfType '-\?[[:alpha:]]\+' + \ contains=pamconfTypeKeyword + \ nextgroup=pamconfControl, + \ pamconfTypeLineCont skipwhite + +syn keyword pamconfTypeKeyword contained account auth password session + +if s:has_service_field + syn match pamconfService '^[[:graph:]]\+' + \ nextgroup=pamconfType, + \ pamconfServiceLineCont skipwhite + + syn match pamconfServiceLineCont contained '\\$' + \ nextgroup=pamconfType, + \ pamconfServiceLineCont skipwhite skipnl +endif syn keyword pamconfTodo contained TODO FIXME XXX NOTE syn region pamconfComment display oneline start='#' end='$' \ contains=pamconfTodo,@Spell -syn match pamconfServiceLineCont contained '\\$' - \ nextgroup=pamconfType, - \ pamconfServiceLineCont skipwhite skipnl - -syn keyword pamconfType account auth password session - \ nextgroup=pamconfControl, - \ pamconfTypeLineCont skipwhite - syn match pamconfTypeLineCont contained '\\$' \ nextgroup=pamconfControl, \ pamconfTypeLineCont skipwhite skipnl @@ -98,7 +108,8 @@ hi def link pamconfTodo Todo hi def link pamconfComment Comment hi def link pamconfService Statement hi def link pamconfServiceLineCont Special -hi def link pamconfType Type +hi def link pamconfType Special +hi def link pamconfTypeKeyword Type hi def link pamconfTypeLineCont pamconfServiceLineCont hi def link pamconfControl Macro hi def link pamconfControlBegin Delimiter -- cgit From 9f54d125d2b601029cb2b6dbffcc361c2e8fb974 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 29 Apr 2021 20:43:22 -0400 Subject: vim-patch:3d1cde8a2f28 Update runtime files. https://github.com/vim/vim/commit/3d1cde8a2f28dce2c82d2b2b4c5e35e6662030e0 --- runtime/compiler/checkstyle.vim | 20 ++++++++++++----- runtime/compiler/gawk.vim | 34 ++++++++++++++++++++++++++++ runtime/compiler/gjs.vim | 25 +++++++++++++++++++++ runtime/compiler/jest.vim | 30 +++++++++++++++++++++++++ runtime/compiler/jjs.vim | 24 ++++++++++++++++++++ runtime/compiler/jshint.vim | 25 +++++++++++++++++++++ runtime/compiler/jsonlint.vim | 25 +++++++++++++++++++++ runtime/compiler/rubocop.vim | 23 +++++++++++++++++++ runtime/compiler/stylelint.vim | 26 +++++++++++++++++++++ runtime/compiler/typedoc.vim | 28 +++++++++++++++++++++++ runtime/doc/cmdline.txt | 3 ++- runtime/doc/quickfix.txt | 2 +- runtime/doc/recover.txt | 4 ++-- runtime/doc/repeat.txt | 4 ++-- runtime/doc/spell.txt | 2 +- runtime/doc/usr_41.txt | 50 ++++++++++++++++++++--------------------- runtime/doc/windows.txt | 4 +++- runtime/ftplugin/cobol.vim | 5 +++-- runtime/ftplugin/css.vim | 7 +++--- runtime/ftplugin/vim.vim | 5 +++-- runtime/scripts.vim | 4 ++-- runtime/syntax/c.vim | 9 ++++---- runtime/tools/check_colors.vim | 2 +- 23 files changed, 309 insertions(+), 52 deletions(-) create mode 100644 runtime/compiler/gawk.vim create mode 100644 runtime/compiler/gjs.vim create mode 100644 runtime/compiler/jest.vim create mode 100644 runtime/compiler/jjs.vim create mode 100644 runtime/compiler/jshint.vim create mode 100644 runtime/compiler/jsonlint.vim create mode 100644 runtime/compiler/rubocop.vim create mode 100644 runtime/compiler/stylelint.vim create mode 100644 runtime/compiler/typedoc.vim (limited to 'runtime') diff --git a/runtime/compiler/checkstyle.vim b/runtime/compiler/checkstyle.vim index ccab3c585d..4ebd9e15b5 100644 --- a/runtime/compiler/checkstyle.vim +++ b/runtime/compiler/checkstyle.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Checkstyle " Maintainer: Doug Kearns -" Last Change: 2013 Jun 26 +" Last Change: 2020 Aug 2 if exists("current_compiler") finish @@ -12,8 +12,18 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal command -nargs=* CompilerSet setlocal endif -CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain +let s:cpo_save = &cpo +set cpo&vim -" sample error: WebTable.java:282: '+=' is not preceded with whitespace. -" WebTable.java:201:1: '{' should be on the previous line. -CompilerSet errorformat=%f:%l:%v:\ %m,%f:%l:\ %m,%-G%.%# +" CompilerSet makeprg=java\ com.puppycrawl.tools.checkstyle.Main\ -f\ plain\ -c\ /sun_checks.xml +" CompilerSet makeprg=java\ -jar\ checkstyle-X.XX-all.jar\ -f\ plain\ -c\ /sun_checks.xml + +CompilerSet makeprg=checkstyle\ -f\ plain +CompilerSet errorformat=[%tRROR]\ %f:%l:%v:\ %m, + \[%tARN]\ %f:%l:%v:\ %m, + \[%tRROR]\ %f:%l:\ %m, + \[%tARN]\ %f:%l:\ %m, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/gawk.vim b/runtime/compiler/gawk.vim new file mode 100644 index 0000000000..a109eb8642 --- /dev/null +++ b/runtime/compiler/gawk.vim @@ -0,0 +1,34 @@ +" Vim compiler file +" Compiler: GNU Awk +" Maintainer: Doug Kearns +" Last Change: 2020 Feb 10 + +if exists("current_compiler") + finish +endif +let current_compiler = "gawk" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +CompilerSet makeprg=gawk +CompilerSet errorformat=%Z%.awk:\ %f:%l:\ %p^\ %m, + \%Eg%\\=awk:\ %f:%l:\ fatal:\ %m, + \%Egawk:\ %f:%l:\ error:\ %m, + \%Wgawk:\ %f:%l:\ warning:\ %m, + \%Egawk:\ %f:%l:\ %.%#, + \gawk:\ %f:%l:\ %tatal:\ %m, + \gawk:\ %f:%l:\ %trror:\ %m, + \gawk:\ %f:%l:\ %tarning:\ %m, + \gawk:\ %tatal:\ %m, + \gawk:\ %trror:\ %m, + \gawk:\ %tarning:\ %m, + \%+C%.%#, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/gjs.vim b/runtime/compiler/gjs.vim new file mode 100644 index 0000000000..e033764030 --- /dev/null +++ b/runtime/compiler/gjs.vim @@ -0,0 +1,25 @@ +" Vim compiler file +" Compiler: GJS (Gnome JavaScript Bindings) +" Maintainer: Doug Kearns +" Last Change: 2019 Jul 10 + +if exists("current_compiler") + finish +endif +let current_compiler = "gjs" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +CompilerSet makeprg=gjs +CompilerSet errorformat=%.%#JS\ %tRROR:\ %m\ @\ %f:%c, + \%E%.%#JS\ ERROR:\ %m, + \%Z@%f:%l:%c, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/jest.vim b/runtime/compiler/jest.vim new file mode 100644 index 0000000000..fee70b7c55 --- /dev/null +++ b/runtime/compiler/jest.vim @@ -0,0 +1,30 @@ +" Vim compiler file +" Compiler: Jest +" Maintainer: Doug Kearns +" Last Change: 2018 May 15 + +if exists("current_compiler") + finish +endif +let current_compiler = "jest" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +" CompilerSet makeprg=npx\ jest\ --no-colors + +CompilerSet makeprg=jest\ --no-colors +CompilerSet errorformat=%E\ \ ●\ %m, + \%Z\ %\\{4}%.%#Error:\ %f:\ %m\ (%l:%c):%\\=, + \%Z\ %\\{6}at\ %\\S%#\ (%f:%l:%c), + \%+C\ %\\{4}%\\w%.%#, + \%+C\ %\\{4}%[-+]%.%#, + \%-C%.%#, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/jjs.vim b/runtime/compiler/jjs.vim new file mode 100644 index 0000000000..09a973683a --- /dev/null +++ b/runtime/compiler/jjs.vim @@ -0,0 +1,24 @@ +" Vim compiler file +" Compiler: Nashorn Shell +" Maintainer: Doug Kearns +" Last Change: 2018 Jan 9 + +if exists("current_compiler") + finish +endif +let current_compiler = "jjs" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +CompilerSet makeprg=jjs +CompilerSet errorformat=%f:%l:%c\ %m, + \%f:%l\ %m, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/jshint.vim b/runtime/compiler/jshint.vim new file mode 100644 index 0000000000..865591cd2b --- /dev/null +++ b/runtime/compiler/jshint.vim @@ -0,0 +1,25 @@ +" Vim compiler file +" Compiler: JSHint +" Maintainer: Doug Kearns +" Last Change: 2019 Jul 10 + +if exists("current_compiler") + finish +endif +let current_compiler = "jshint" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +" CompilerSet makeprg=npx\ jshint\ --verbose + +CompilerSet makeprg=jshint\ --verbose +CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m\ (%t%n), + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/jsonlint.vim b/runtime/compiler/jsonlint.vim new file mode 100644 index 0000000000..5466dcc7f4 --- /dev/null +++ b/runtime/compiler/jsonlint.vim @@ -0,0 +1,25 @@ +" Vim compiler file +" Compiler: JSON Lint +" Maintainer: Doug Kearns +" Last Change: 2019 Jul 10 + +if exists("current_compiler") + finish +endif +let current_compiler = "jsonlint" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +" CompilerSet makeprg=npx\ jsonlint\ --compact\ --quiet + +CompilerSet makeprg=jsonlint\ --compact\ --quiet +CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ found:\ %m, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/rubocop.vim b/runtime/compiler/rubocop.vim new file mode 100644 index 0000000000..7764b4ad20 --- /dev/null +++ b/runtime/compiler/rubocop.vim @@ -0,0 +1,23 @@ +" Vim compiler file +" Compiler: RuboCop +" Maintainer: Doug Kearns +" Last Change: 2019 Jul 10 + +if exists("current_compiler") + finish +endif +let current_compiler = "rubocop" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +CompilerSet makeprg=rubocop\ --format\ emacs +CompilerSet errorformat=%f:%l:%c:\ %t:\ %m, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/stylelint.vim b/runtime/compiler/stylelint.vim new file mode 100644 index 0000000000..784a61d46a --- /dev/null +++ b/runtime/compiler/stylelint.vim @@ -0,0 +1,26 @@ +" Vim compiler file +" Compiler: Stylelint +" Maintainer: Doug Kearns +" Last Change: 2020 Jun 10 + +if exists("current_compiler") + finish +endif +let current_compiler = "stylelint" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +" CompilerSet makeprg=npx\ stylelint\ --formatter\ compact + +CompilerSet makeprg=stylelint\ --formatter\ compact +CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %trror\ -\ %m, + \%f:\ line\ %l\\,\ col\ %c\\,\ %tarning\ -\ %m, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/typedoc.vim b/runtime/compiler/typedoc.vim new file mode 100644 index 0000000000..3be06f3d4e --- /dev/null +++ b/runtime/compiler/typedoc.vim @@ -0,0 +1,28 @@ +" Vim compiler file +" Compiler: TypeDoc +" Maintainer: Doug Kearns +" Last Change: 2020 Feb 10 + +if exists("current_compiler") + finish +endif +let current_compiler = "typedoc" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +" CompilerSet makeprg=npx\ typedoc + +CompilerSet makeprg=typedoc +CompilerSet errorformat=%EError:\ %f(%l), + \%WWarning:\ %f(%l), + \%+IDocumentation\ generated\ at\ %f, + \%Z\ %m, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index 10fcd69c28..52b7711e20 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -1080,7 +1080,8 @@ CTRL-C Continue in Command-line mode. The command-line under the in Normal mode. There is no redraw, thus the window will remain visible. :quit Discard the command line and go back to Normal mode. - ":close", ":exit", ":xit" and CTRL-\ CTRL-N also work. + ":close", CTRL-W c, ":exit", ":xit" and CTRL-\ CTRL-N also + work. :qall Quit Vim, unless there are changes in some buffer. :qall! Quit Vim, discarding changes to any buffer. diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index 1a08d6d51f..469adb6a12 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1657,7 +1657,7 @@ special problem here is that it doesn't print information on leaving the directory and that it doesn't print the absolute path. To solve the problem with relative paths and missing "leave directory" -messages Vim uses following algorithm: +messages Vim uses the following algorithm: 1) Check if the given directory is a subdirectory of the current directory. If this is true, store it as the current directory. diff --git a/runtime/doc/recover.txt b/runtime/doc/recover.txt index 9a8caefb42..9ef5a37452 100644 --- a/runtime/doc/recover.txt +++ b/runtime/doc/recover.txt @@ -56,8 +56,8 @@ Disadvantages: directories (although Vim tries to avoid that by comparing the path name). This will result in bogus ATTENTION warning messages. - When you use your home directory, and somebody else tries to edit the same - file, he will not see your swap file and will not get the ATTENTION warning - message. + file, that user will not see your swap file and will not get the ATTENTION + warning message. If you want to put swap files in a fixed place, put a command resembling the following ones in your vimrc: diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt index fb41c459f1..0c45488578 100644 --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -597,7 +597,7 @@ This assumes you write one or more plugins that you distribute as a package. If you have two unrelated plugins you would use two packages, so that Vim users can choose what they include or not. Or you can decide to use one -package with optional plugins, and tell the user to add the ones he wants with +package with optional plugins, and tell the user to add the preferred ones with `:packadd`. Decide how you want to distribute the package. You can create an archive or @@ -633,7 +633,7 @@ You could add this packadd command in one of your plugins, to be executed when the optional plugin is needed. Run the `:helptags` command to generate the doc/tags file. Including this -generated file in the package means that the user can drop the package in his +generated file in the package means that the user can drop the package in the pack directory and the help command works right away. Don't forget to re-run the command after changing the plugin help: > :helptags path/start/foobar/doc diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt index 0eef976819..8fa59c8dc3 100644 --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -1411,7 +1411,7 @@ are spelling mistakes this may not be quite right. Common words can be specified with the COMMON item. This will give better suggestions when editing a short file. Example: - COMMON the of to and a in is it you that he was for on are ~ + COMMON the of to and a in is it you that he she was for on are ~ The words must be separated by white space, up to 25 per line. When multiple regions are specified in a ":mkspell" command the common words diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 94d0422818..01ef1645f0 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1896,9 +1896,9 @@ for this mapping, but the user might already use it for something else. To allow the user to define which keys a mapping in a plugin uses, the item can be used: > - 22 map a TypecorrAdd + 22 map a TypecorrAdd; -The "TypecorrAdd" thing will do the work, more about that further on. +The "TypecorrAdd;" thing will do the work, more about that further on. The user can set the "mapleader" variable to the key sequence that he wants this mapping to start with. Thus if the user has done: > @@ -1914,15 +1914,15 @@ already happened to exist. |:map-| But what if the user wants to define his own key sequence? We can allow that with this mechanism: > - 21 if !hasmapto('TypecorrAdd') - 22 map a TypecorrAdd + 21 if !hasmapto('TypecorrAdd;') + 22 map a TypecorrAdd; 23 endif -This checks if a mapping to "TypecorrAdd" already exists, and only +This checks if a mapping to "TypecorrAdd/" already exists, and only defines the mapping from "a" if it doesn't. The user then has a chance of putting this in his vimrc file: > - map ,c TypecorrAdd + map ,c TypecorrAdd; Then the mapped key sequence will be ",c" instead of "_a" or "\a". @@ -1952,15 +1952,15 @@ function (without the "s:"), which is again another function. can be used with mappings. It generates a script ID, which identifies the current script. In our typing correction plugin we use it like this: > - 24 noremap " + \ fold + \ contains=@ps1xmlScriptBlock + \ keepend +syn region ps1xmlScriptBlock + \ matchgroup=xmlTag start="" + \ matchgroup=xmlEndTag end="" + \ fold + \ contains=@ps1xmlScriptBlock + \ keepend +syn region ps1xmlScriptBlock + \ matchgroup=xmlTag start="" + \ matchgroup=xmlEndTag end="" + \ fold + \ contains=@ps1xmlScriptBlock + \ keepend +syn region ps1xmlScriptBlock + \ matchgroup=xmlTag start="" + \ matchgroup=xmlEndTag end="" + \ fold + \ contains=@ps1xmlScriptBlock + \ keepend + +syn cluster xmlRegionHook add=ps1xmlScriptBlock + +let b:current_syntax = "ps1xml" + +let &cpo = s:ps1xml_cpo_save +unlet s:ps1xml_cpo_save + -- cgit From 7e36c9a2d3ddcb8b31e318e25767cfb32fa69391 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 2 May 2021 12:20:57 -0400 Subject: vim-patch:56994d215815 Update runtime files. https://github.com/vim/vim/commit/56994d215815139207f3c5ce02a1720e44e93c09 --- runtime/compiler/cm3.vim | 26 +++++++ runtime/doc/windows.txt | 6 +- runtime/filetype.vim | 2 +- runtime/ftplugin/gprof.vim | 4 +- runtime/ftplugin/m3build.vim | 24 ++++++ runtime/ftplugin/m3quake.vim | 33 ++++++++ runtime/ftplugin/modula2.vim | 39 ++++++++++ runtime/ftplugin/modula3.vim | 38 +++++++++ runtime/ftplugin/vim.vim | 10 +-- runtime/plugin/matchparen.vim | 4 +- runtime/syntax/gprof.vim | 6 +- runtime/syntax/hollywood.vim | 13 ++-- runtime/syntax/m3build.vim | 177 ++++++++++++++++++++++++++++++++++++++++++ runtime/syntax/m3quake.vim | 74 ++++++++++++++++++ runtime/syntax/modula3.vim | 113 ++++++++++++++++++--------- runtime/syntax/psl.vim | 83 ++++++++++++++++++++ runtime/syntax/ratpoison.vim | 22 ++++-- 17 files changed, 606 insertions(+), 68 deletions(-) create mode 100644 runtime/compiler/cm3.vim create mode 100644 runtime/ftplugin/m3build.vim create mode 100644 runtime/ftplugin/m3quake.vim create mode 100644 runtime/ftplugin/modula2.vim create mode 100644 runtime/ftplugin/modula3.vim create mode 100644 runtime/syntax/m3build.vim create mode 100644 runtime/syntax/m3quake.vim create mode 100644 runtime/syntax/psl.vim (limited to 'runtime') diff --git a/runtime/compiler/cm3.vim b/runtime/compiler/cm3.vim new file mode 100644 index 0000000000..3de51282e6 --- /dev/null +++ b/runtime/compiler/cm3.vim @@ -0,0 +1,26 @@ +" Vim compiler file +" Compiler: Critical Mass Modula-3 Compiler +" Maintainer: Doug Kearns +" Last Change: 2021 Apr 08 + +if exists("current_compiler") + finish +endif +let current_compiler = "cm3" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +" TODO: better handling of Quake errors +CompilerSet makeprg=cm3 +CompilerSet errorformat=%D---\ building\ in\ %f\ ---, + \%W\"%f\"\\,\ line\ %l:\ warning:\ %m, + \%E\"%f\"\\,\ line\ %l:\ %m, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index cb1c3dee10..3a58cc08d9 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -493,14 +493,14 @@ CTRL-W J Move the current window to be at the very bottom, using the CTRL-W H Move the current window to be at the far left, using the full height of the screen. This works like closing the current window and then creating another one with - ":vert topleft split", except that the current window contents + `:vert topleft split`, except that the current window contents is used for the new window. *CTRL-W_L* CTRL-W L Move the current window to be at the far right, using the full height of the screen. This works like closing the current window and then creating another one with - ":vert botright split", except that the current window + `:vert botright split`, except that the current window contents is used for the new window. *CTRL-W_T* @@ -543,7 +543,7 @@ CTRL-W < Decrease current window width by N (default 1). *CTRL-W_>* CTRL-W > Increase current window width by N (default 1). -:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar* +:vert[ical] res[ize] [N] *:vertical-resize* *CTRL-W_bar* CTRL-W | Set current window width to N (default: widest possible). You can also resize a window by dragging a status line up or down with the diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 8722503c59..bd572d6cf0 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" Last Change: 2021 Apr 05 +" Last Change: 2021 Apr 17 " Listen very carefully, I will say this only once if exists("did_load_filetypes") diff --git a/runtime/ftplugin/gprof.vim b/runtime/ftplugin/gprof.vim index 750751c372..d4547ae9a6 100644 --- a/runtime/ftplugin/gprof.vim +++ b/runtime/ftplugin/gprof.vim @@ -1,6 +1,6 @@ " Language: gprof " Maintainer: Dominique Pelle -" Last Change: 2013 Jun 09 +" Last Change: 2021 Apr 08 " When cursor is on one line of the gprof call graph, " calling this function jumps to this function in the call graph. @@ -16,7 +16,7 @@ fun! GprofJumpToFunctionIndex() norm! $y% call search('^' . escape(@", '[]'), 'sw') norm! zz - elseif l:line =~ '^\(\s\+[0-9\.]\+\)\{3}\s\+' + elseif l:line =~ '^\(\s*[0-9\.]\+\)\{3}\s\+' " We're in line in the flat profile. norm! 55|eby$ call search('^\[\d\+\].*\d\s\+' . escape(@", '[]*.') . '\>', 'sW') diff --git a/runtime/ftplugin/m3build.vim b/runtime/ftplugin/m3build.vim new file mode 100644 index 0000000000..9e1e169d38 --- /dev/null +++ b/runtime/ftplugin/m3build.vim @@ -0,0 +1,24 @@ +" Vim filetype plugin file +" Language: Modula-3 Makefile +" Maintainer: Doug Kearns +" Last Change: 2021 April 15 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +runtime! ftplugin/m3quake.vim + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Modula-3 Makefile (m3makefile m3overrides)\tm3makefile;m3overrides\n" .. + \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/runtime/ftplugin/m3quake.vim b/runtime/ftplugin/m3quake.vim new file mode 100644 index 0000000000..627aabdc3e --- /dev/null +++ b/runtime/ftplugin/m3quake.vim @@ -0,0 +1,33 @@ +" Vim filetype plugin file +" Language: Modula-3 Quake +" Maintainer: Doug Kearns +" Last Change: 2021 April 15 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=s1:/*,mb:*,ex:*/,:% +setlocal commentstring=%\ %s +setlocal formatoptions-=t formatoptions+=croql + +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_words = '\<\%(proc\|if\|foreach\)\>:\:\' +endif + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Modula-3 Quake Source Files (*.quake)\t*.quake\n" .. + \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl fo< com< cms< " .. + \ "| unlet! b:browsefilter b:match_words" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/runtime/ftplugin/modula2.vim b/runtime/ftplugin/modula2.vim new file mode 100644 index 0000000000..1d0e81ee70 --- /dev/null +++ b/runtime/ftplugin/modula2.vim @@ -0,0 +1,39 @@ +" Vim filetype plugin file +" Language: Modula-2 +" Maintainer: Doug Kearns +" Last Change: 2021 Apr 08 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=s0:(*,mb:\ ,ex:*) +setlocal commentstring=(*%s*) +setlocal formatoptions-=t formatoptions+=croql + +if exists("loaded_matchit") && !exists("b:match_words") + " The second branch of the middle pattern is intended to match CASE labels + let b:match_words = '\:\,' .. + \ '\<\%(BEGIN\|CASE\|FOR\|IF\|LOOP\|WHILE\|WITH\)\>' .. + \ ':' .. + \ '\<\%(ELSIF\|ELSE\)\>\|\%(^\s*\)\@<=\w\+\%(\s*\,\s*\w\+\)\=\s*\:=\@!' .. + \ ':' .. + \ '\' +endif + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Modula-2 Source Files (*.def *.mod)\t*.def;*.mod\n" .. + \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl com< cms< fo< " .. + \ "| unlet! b:browsefilter b:match_words" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/runtime/ftplugin/modula3.vim b/runtime/ftplugin/modula3.vim new file mode 100644 index 0000000000..fc9eb57949 --- /dev/null +++ b/runtime/ftplugin/modula3.vim @@ -0,0 +1,38 @@ +" Vim filetype plugin file +" Language: Modula-3 +" Maintainer: Doug Kearns +" Last Change: 2021 Apr 08 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=s0:(*,mb:\ ,ex:*) +setlocal commentstring=(*%s*) +setlocal formatoptions-=t formatoptions+=croql + +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_words = '\:\,' .. + \ '\<\%(BEGIN\|CASE\|FOR\|IF\|LOCK\|LOOP\|TRY\|TYPECASE\|WHILE\|WITH\)\>' .. + \ ':' .. + \ '\<\%(ELSIF\|ELSE\|EXCEPT\|FINALLY\)\>\|\%(^\s*\)\@<=\S.*=>' .. + \ ':' .. + \ '\' +endif + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Modula-3 Source Files (*.m3)\t*.m3\n" .. + \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl com< cms< fo< " .. + \ "| unlet! b:browsefilter b:match_words" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim index 61fabcbb32..64b64b45e3 100644 --- a/runtime/ftplugin/vim.vim +++ b/runtime/ftplugin/vim.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Vim " Maintainer: Bram Moolenaar -" Last Change: 2021 Feb 20 +" Last Change: 2021 Apr 11 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -98,11 +98,11 @@ if exists("loaded_matchit") " func name " require a parenthesis following, then there can be an "endfunc". let b:match_words = -+ \ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+(:\:\<\%(endf\%[unction]\|enddef\)\>,' . - \ '\<\(wh\%[ile]\|for\)\>:\:\:\,' . - \ '\:\:\,' . + \ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+(:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\<\%(endf\%[unction]\|enddef\)\>,' . + \ '\<\(wh\%[ile]\|for\)\>:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' . + \ '\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' . \ '{:},' . - \ '\:\:\:\,' . + \ '\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\:\%(\%(^\||\)\s*\)\@<=\,' . \ '\\)\@!\S:\,' " Ignore syntax region commands and settings, any 'en*' would clobber " if-endif. diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim index 0dad0ac0ea..cc4f38f669 100644 --- a/runtime/plugin/matchparen.vim +++ b/runtime/plugin/matchparen.vim @@ -1,6 +1,6 @@ " Vim plugin for showing matching parens " Maintainer: Bram Moolenaar -" Last Change: 2021 Apr 07 +" Last Change: 2021 Apr 08 " Exit quickly when: " - this plugin was already loaded (or disabled) @@ -110,7 +110,7 @@ func s:Highlight_Matching_Pair() " We match "escape" for special items, such as lispEscapeSpecial, and " match "symbol" for lispBarSymbol. let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' . - \ '''v:val =~? "string\\|character\\|singlequote\\|escape\\symbol\\|comment"''))' + \ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|symbol\\|comment"''))' " If executing the expression determines that the cursor is currently in " one of the syntax types, then we want searchpairpos() to find the pair " within those syntax types (i.e., not skip). Otherwise, the cursor is diff --git a/runtime/syntax/gprof.vim b/runtime/syntax/gprof.vim index 381a3c63b0..880452a84b 100644 --- a/runtime/syntax/gprof.vim +++ b/runtime/syntax/gprof.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Syntax for Gprof Output " Maintainer: Dominique Pelle -" Last Change: 2013 Jun 09 +" Last Change: 2021 Apr 08 " Quit when a syntax file was already loaded if exists("b:current_syntax") @@ -28,7 +28,7 @@ syn match gprofCallGraphTitle "Call graph (explanation follows)" syn region gprofCallGraphHeader \ start="^granularity: each sample hit covers.*" \ end="^\s*index % time\s\+self\s\+children\s\+called\s\+name$" -syn match gprofCallGraphFunction "\s\+\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\[" +syn match gprofCallGraphFunction "\<\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\[" syn match gprofCallGraphSeparator "^-\+$" syn region gprofCallGraphTrailer \ start="This table describes the call tree of the program" @@ -41,7 +41,7 @@ syn region gprofIndex syn match gprofIndexFunctionTitle "^Index by function name$" -syn match gprofNumbers "^\s\+[0-9 ./+]\+" +syn match gprofNumbers "^\s*[0-9 ./+]\+" syn match gprofFunctionIndex "\[\d\+\]" syn match gprofSpecial "<\(spontaneous\|cycle \d\+\)>" diff --git a/runtime/syntax/hollywood.vim b/runtime/syntax/hollywood.vim index 34fbb45c54..ce5ba29553 100644 --- a/runtime/syntax/hollywood.vim +++ b/runtime/syntax/hollywood.vim @@ -1,8 +1,8 @@ " Vim syntax file -" Language: Hollywood 8.0 +" Language: Hollywood 9.0 " Maintainer: Tom Crecelius " First Author: Tom Crecelius -" Last Change: 2018 May 18 +" Last Change: 2021 April 13 " Highlighting Issues: " Depending on your colour schema, Strings or Comments might be highlighted in " a way, you don't like. If so, try one of the following settings after @@ -30,7 +30,7 @@ let s:cpo_save = &cpo set cpo&vim if !exists("hw_version") - let hw_version = 8 + let hw_version = 9 let hw_subversion = 0 elseif !exists("hw_subversion") let hw_subversion = 0 @@ -109,12 +109,11 @@ syn match hwOperator "\%(&\|\*\|+\|-\|\.\||\|//\|/\|:\|<\|=\|>\|<>\|<=\|=>\|\^\| syn keyword hwConstant Nil syn keyword hwConstant True False " predefined preprocessing commands -syn match hwPreProcessor "@\<\%(BGPIC\|BRUSH\|ANIM\|SPRITE\|SAMPLE\|MUSIC\|FILE\|FONT\|VIDEO\|VERSION\|APPTITLE\|APPAUTHOR\|APPCOPYRIGHT\|APPDESCRIPTION\|APPVERSION\|APPICON\|BACKFILL\|SCREEN\|DISPLAY\|INCLUDE\|OPTIONS\|REQUIRE\|MENU\|APPIDENTIFIER\|WARNING\|ERROR\|IF\|ELSEIF\|ELSE\|ENDIF\)\>"ms=s+1 +syn match hwPreProcessor "@\<\%(ANIM\|APPAUTHOR\|APPCOPYRIGHT\|APPDESCRIPTION\|APPICON\|APPIDENTIFIER\|APPTITLE\|APPVERSION\|BACKFILL\|BGPIC\|BRUSH\|CATALOG\|DIRECTORY\|DISPLAY\|ELSE\|ELSEIF\|ENDIF\|ERROR\|FILE\|FONT\|ICON\|IF\|INCLUDE\|LINKER\|MENU\|MUSIC\|OPTIONS\|PALETTE\|REQUIRE\|SAMPLE\|SCREEN\|SPRITE\|VERSION\|VIDEO\|WARNING\)\>"ms=s+1 " predefined constants -syn match hwConstant "#\<\%(ERR_PORTNOTAVAIL\|SEEK_END\|ERR_CREATESHORTCUT\|PURPLE\|ERR_ALLOCCHANNEL\|PRGTYPE_SCRIPT\|ERR_NORETVAL\|ERR_DDRECVIDEO\|ERR_FINDPATH\|LANGUAGE_RUNDI\|ERR_STRINGCST\|COUNTRY_COLOMBIA\|LANGUAGE_KOREAN\|ERR_USERABORT\|ERR_WENDWOWHILE\|FONT\|FILEATTR_WRITE_OTH\|ERR_MODIFYABGPIC\|COUNTRY_DRCONGO\|LANGUAGE_KIRGHIZ\|LANGUAGE_ROMANSH\|FILEATTR_EXECUTE_GRP\|ERR_READVIDEOPIXELS\|SCROLLTOP\|ERR_ANIMDISK\|COUNTRY_IVORYCOAST\|LANGUAGE_GUJARATI\|SHORT\|COUNTRY_SOUTHAFRICA\|VIDEO\|ERR_BLKWOENDBLK\|ERR_WRONGHEX\|SPRITE_VS_BRUSH\|LANGUAGE_HIRIMOTU\|ZOOMSOUTHEAST\|COUNTRY_SLOVAKIA\|COUNTRY_GIBRALTAR\|ERR_INVALIDDATE\|RTS_ON\|PIXELZOOM1\|ATTRFRAMEDELAY\|AQUA\|ATTRFONTSCALABLE\|FILEATTR_NORMAL\|COUNTRY_ALBANIA\|COUNTRY_JAMAICA\|FONTWEIGHT_MEDIUM\|ERR_MALFORMPAT1\|COUNTRY_FRENCHGUIANA\|ERR_MAXPARAMS\|ERR_FORWONEXT\|COUNTRY_CONGO\|COUNTRY_GAMBIA\|UPNDOWN\|COUNTRY_ANDORRA\|BRUSH\|ERR_SELECTALPHACHANNEL\|MODLCOMMAND\|CLIENT\|COUNTRY_TRINIDADANDTOBAGO\|DIRECTORY\|LANGUAGE_ESPERANTO\|ATTRRAWHEIGHT\|COUNTRY_DENMARK\|FILETYPE_SOUND\|CLIPBOARD_TEXT\|LANGUAGE_FULAH\|ATTRPOSITION\|PLUGINCAPS_CONVERT\|ERR_APPLETVERSION\|COUNTRY_VANUATU\|COUNTDIRECTORIES\|ATTRNOHIDE\|VSTRIPES64\|AMIGAICON_SETPOSITION\|PUSHBOTTOM\|ERR_BACKFILL\|COUNTRY_MOROCCO\|ERR_FILEFORMAT\|COUNTRY_CHILE\|ATTRHOSTSCALEY\|ERR_AHI\|HW_VERSION\|ERR_ALRDYDECLRD\|ATTRRAWWIDTH\|ERR_PIXELFORMAT\|IMGFMT_PLUGIN\|LANGUAGE_HEBREW\|ERR_SETMENU\|ERR_NOLAYERS\|CRUSHTOP\|ERR_MAXLINES\|ATTRHASMASK\|LEFT\|ERR_SELECTANIM\|WALLPAPERLEFT\|TEXTOBJECT\|ERR_AFILEPROP\|LANGUAGE_CZECH\|LANGUAGE_XHOSA\|ERR_PIPE\|LANGUAGE_MANX\|ERR_EXECUTE\|ERR_ENDDOUBLEBUFFER\|ATTRGROUP\|ERR_NAMETOOLONG\|ATTRBORDERRIGHT\|COUNTRY_BOSNIAANDHERZEGOVINA\|ATTRMARGINRIGHT\|RTS_OFF\|LANGUAGE_MARSHALLESE\|LANGUAGE_AZERBAIJANI\|LANGUAGE_TAHITIAN\|JOINMITER\|ATTRNOCLOSE\|REQICON_WARNING\|ERR_NOTPROTRACKER\|LANGUAGE_LAO\|ERR_EMPTYPATH\|ERR_NOCALLBACK\|COUNTRY_UGANDA\|ERR_READFUNC\|IMGFMT_UNKNOWN\|ADF_ANIM\|ERR_LAYERSWITCH\|ERR_RECVCLOSED\|ERR_CTRLSTRUCT\|ERR_TABLEOVERFLOW\|SCROLLBOTTOM\|VSTRIPES\|ERR_VAREXPECTED\|ERR_NOTIGER\|BEEPSYSTEM\|ERR_LOWFREQ\|COUNTFILES\|COUNTRY_MONACO\|BLUE\|ERR_VFONT\|STRUDEL\|REQ_GALLERY\|ERR_NOCOORDCST\|MENU\|HSTRIPES64\|COUNTRY_COCOSISLANDS\|LANGUAGE_SOUTHNDEBELE\|COUNTRY_FALKLANDISLANDS\|COUNTRY_UAE\|LANGUAGE_KANNADA\|ERR_VIDRECMULTI\|FILETYPE_VIDEO\|LANGUAGE_ESTONIAN\|COUNTRY_CAYMANISLANDS\|ERR_BADINTEGER\|MONO16\|COUNTRY_CAMEROON\|COUNTRY_GUAM\|ERR_DISPLAYDESKTOP\|ERR_SETENV\|ERR_INTERNAL\|MASKVISIBLE\|ERR_OPENFONT\|LANGUAGE_WELSH\|ATTRRAWXPOS\|LANGUAGE_THAI\|ATTRHOSTMONITORS\|LANGUAGE_GALICIAN\|COUNTRY_GUATEMALA\|ATTRYPOS\|COUNTRY_UZBEKISTAN\|ERR_ELSEIFAFTERELSE\|MODRCONTROL\|BAUD_4800\|JOYDOWNRIGHT\|COUNTRY_LUXEMBOURG\|COUNTRY_MOZAMBIQUE\|ERR_PAKFORMAT\|LANGUAGE_TAJIK\|LANGUAGE_PANJABI\|ERR_MISSINGFIELD\|PLUGINCAPS_LIBRARY\|ERR_FUNCARGS\|LANGUAGE_MALAY\|COUNTRY_PORTUGAL\|COUNTRY_JAPAN\|ERR_ICONPARMS\|COUNTRY_NEWCALEDONIA\|REMOVELAYER\|MOVEWINDOW\|ATTRFONTASCENDER\|PLUGINCAPS_DIRADAPTER\|ERR_VARLENGTH\|ATTRSIZEABLE\|ERR_SENDUNKNOWN\|MENUITEM_RADIO\|COUNTRY_BELIZE\|ERR_LABELDOUBLE\|QUADRECT\|VBLINDS8\|ERR_UNKNOWNCMD\|SCROLLEAST\|ONBUTTONCLICKALL\|RECTNORTHEAST\|FONTWEIGHT_EXTRABOLD\|COUNTRY_SAINTKITTSANDNEVIS\|ERR_CLOSEDDISPLAY\|PLUGINCAPS_SAVEANIM\|ERR_WINDOW\|LANGUAGE_ZHUANG\|CAPROUND\|ERR_OUTOFRANGE\|REQ_CAMERA\|ERR_WARPOS\|COUNTRY_ELSALVADOR\|ERR_GROUPNAMEUSED\|COUNTRY_GUYANA\|ERR_ALREADYASYNC\|COUNTRY_PALESTINE\|DISPMODE_FAKEFULLSCREEN\|ERR_SYNTAXLEVELS\|ERR_BADPLATFORM\|ERR_VERSION\|ATTRVISIBLE\|HSTRETCHCENTER\|COUNTRY_REUNION\|COUNTRY_INDIA\|STRETCHLEFT\|ERR_ZERODIVISION\|LANGUAGE_NORTHERNSAMI\|SIMPLEBUTTON\|ERR_FINDMENU\|ERR_EMPTYOBJ\|LANGUAGE_BIHARI\|LANGUAGE_LIMBURGAN\|LANGUAGE_BOSNIAN\|ERR_SYSTOOOLD\|ERR_WRITEJPEG\|STOP_1\|COPYFILE_OVERWRITE\|ERR_REVDWORD\|PLUGINCAPS_ANIM\|ERR_ASSERTFAILED\|ERR_BRACEOPEN\|ERR_NEEDMORPHOS2\|BLACK\|LANGUAGE_SWEDISH\|ERR_DBLENCODING\|COPYFILE_STATUS\|ERR_WRONGOPCST\|ERR_BADIP\|ERR_UNKNOWNSEQ\|LANGUAGE_LUXEMBOURGISH\|ERR_WITHWOENDWITH\|ERR_LABINIF\|LANGUAGE_TATAR\|ERR_VIDEOLAYERDRV\|ERR_LEGACYPTMOD\|ERR_SAVEPNG\|NOTRANSPARENCY\|ATTRMASKMODE\|LANGUAGE_VENDA\|ERR_NEWHWPLUGIN\|LANGUAGE_LATIN\|LANGUAGE_EWE\|MENUITEM_TOGGLE\|ERR_BRACKETOPEN\|JOYUP\|COUNTRY_SENEGAL\|LANGUAGE_CHURCHSLAVIC\|ERR_ZLIBIO\|RECTBACKNORTHWEST\|MOVELIST\|ERR_TEXTARG\|ONBUTTONOVER\|VIDDRV_HOLLYWOOD\|IMGFMT_JPEG\|REQ_MULTISELECT\|COUNTRY_NIGERIA\|LANGUAGE_GUARANI\|LANGUAGE_POLISH\|ERR_ICONSTANDARD\|REQ_HIDEICONS\|LANGUAGE_CORSICAN\|DISPMODE_MODEREQUESTER\|ERR_NOABSPATH\|LANGUAGE_GERMAN\|ERR_RANDOMIZE\|ERR_ARGS\|PLUGINCAPS_AUDIOADAPTER\|IMAGETYPE_VECTOR\|LANGUAGE_GREEK\|COUNTRY_HOLYSEE\|COUNTRY_NORTHKOREA\|LANGUAGE_MALAYALAM\|COUNTRY_BOTSWANA\|LANGUAGE_CREE\|ATTRNUMENTRIES\|REQICON_ERROR\|IMGFMT_GIF\|FTPBINARY\|WORD\|VIDDRV_OS\|ATTRDURATION\|LANGUAGE_AKAN\|ERR_FTPERROR\|PLUGINCAPS_VIDEO\|ERR_EXAMINE\|HSTRIPES8\|COUNTRY_OMAN\|CIRCLE\|ERR_BRUSHLINK\|ERR_STREAMASSAMPLE\|ERR_DISPLAYSIZE\|ERR_WRONGFLOAT\|PLUGINCAPS_FILEADAPTER\|ERR_UNSUPPORTEDFEAT\|DISPLAY\|ERR_MUSPAUSED\|INTEGER\|COUNTRY_BOLIVIA\|ERR_RECVTIMEOUT\|ATTRMONITOR\|LANGUAGE_INUKTITUT\|ATTRPAUSED\|LANGUAGE_LITHUANIAN\|DATEYEAR\|JOYUPRIGHT\|ERR_LAYERSOFF\|ERR_EMPTYSCRIPT\|LIGHTUSERDATA\|ERR_FINDTIMER\|ALPHACHANNEL\|LANGUAGE_WALLOON\|ERR_ADFWRONGDISP\|ERR_HTTPERROR\|ERR_REWINDDIR\|ERR_LOCKEDOBJ\|COUNTRY_NEPAL\|HSTRIPES2\|RECTSOUTH\|ERR_UNKPROTOCOL\|COUNTRY_CANADA\|COUNTRY_VENEZUELA\|COUNTRY_MALDIVES\|ERR_SQBRACKETCLOSE\|ERR_HTTPTE\|VSTRIPES2\|COUNTRY_NORWAY\|ERR_FIRSTPREPROC\|SNAPDESKTOP\|LANGUAGE_FINNISH\|COUNTRY_TURKEY\|LANGUAGE_VIETNAMESE\|VBLINDS64\|ERR_FONTFORMAT\|ERR_PIXELRANGE\|LANGUAGE_AVESTAN\|ERR_SYSIMAGE\|BIGSINE\|CLIPBOARD_EMPTY\|ERR_WRONGCLIPREG\|AMIGAICON_NONE\|FONTWEIGHT_EXTRABLACK\|LANGUAGE_IDO\|ATTRFORMAT\|ERR_FUNCJMP\|PARITY_NONE\|ATTRHOSTDEPTH\|ERR_RENDERCALLBACK\|ERR_FINDPORT\|LANGUAGE_NEPALI\|COUNTRY_AMERICANSAMOA\|ERR_MISSINGSEPARTR\|MODRALT\|COUNTRY_BESISLANDS\|LANGUAGE_AVARIC\|ERR_VIDNOTPAUSED\|TOPOUT\|ERR_VALUEEXPECTED\|ERR_WRONGUSAGE\|TURNDOWNLEFT\|ERR_ICONDIMS\|LANGUAGE_HAUSA\|ERR_TRANSBGMOBILE\|SEEK_CURRENT\|ERR_MONITORRANGE\|COUNTRY_FAROEISLANDS\|SHAPE\|COUNTRY_SOLOMONISLANDS\|NAVY\|ERR_PREPROCSYM\|COUNTRY_GEORGIA\|LANGUAGE_OSSETIAN\|ERR_THREAD\|DATA_5\|ERR_INISYNTAX\|ERR_MUSFMTSUPPORT\|LANGUAGE_YIDDISH\|ATTRLAYERS\|SMOOTHOUT\|LANGUAGE_KONGO\|COUNTRY_KYRGYZSTAN\|ATTRDOUBLEBUFFER\|TOP\|ERR_SYSBUTTON\|ERR_DATATYPESAVE\|COUNTRY_LIBYA\|ERR_FUNCWOENDFUNC\|ANIMSTREAM\|ATTRUSERDATA\|LANGUAGE_NORTHNDEBELE\|UDPCLIENT\|ERR_MUSNOTPLYNG\|FILEATTR_READ_OTH\|ERR_EVNTEXPCTED\|ERR_BADDIMENSIONS\|ATTROUTPUTDEVICE\|LANGUAGE_BULGARIAN\|LANGUAGE_SPANISH\|DISPMODE_FULLSCREENSCALE\|LANGUAGE_INTERLINGUE\|FASTSPEED\|ERR_NODISPMODES\|LANGUAGE_CHAMORRO\|ATTRACTIVE\|COUNTRY_TOGO\|INACTIVEWINDOW\|ERR_CREATEEVENT\|COUNTRY_SAUDIARABIA\|FILEATTR_EXECUTE_OTH\|IPAUTO\|SHDWNORTHEAST\|MEMORY\|ERR_XF86VIDMODEEXT\|ARC\|TIMER\|COUNTRY_ICELAND\|FUCHSIA\|NETWORKUDP\|ERR_FINDCLIPREGION\|NETWORKSERVER\|NETWORKCONNECTION\|ATTRFONTNAME\|UDPOBJECT\|ERR_UNTERMINTDSTR\|LANGUAGE_NORWEGIANNYNORSK\|RECTBACKCENTER\|COUNTRY_BANGLADESH\|UPLOADFILE_RESPONSE\|COUNTRY_ITALY\|MASKINVISIBLE\|UPLOADFILE_STATUS\|ERR_FOREVERWOREPEAT\|STRETCHBOTTOM\|STRETCHRIGHT\|MOVEFILE_COPY\|FTPASCII\|RECEIVELINE\|RECEIVEBYTES\|ERR_DRAWPATH\|ATTRFONTAA\|VSTRANGEPUSH\|ERR_BADBASE64\|ERR_NOCLIPREG\|SCROLLNORTHWEST\|RECEIVEALL\|ERR_PLUGINARCH\|DTR_OFF\|HEXNUMERICAL\|FLOW_XON_XOFF\|ERR_LAYERSUPPORT2\|FLOW_HARDWARE\|LANGUAGE_GAELIC\|FLOW_OFF\|COUNTRY_ANTARCTICA\|ERR_REQAUTH\|STOP_2\|SERIF\|ERR_FINDANIM\|PARITY_ODD\|DATA_8\|VSTRIPES32\|COUNTRY_FRANCE\|DATA_6\|BAUD_460800\|HKEY_CURRENT_USER\|COUNTRY_BELARUS\|BAUD_115200\|BAUD_57600\|BAUD_38400\|BAUD_19200\|VSTRIPES4\|COUNTRY_ALANDISLANDS\|LANGUAGE_UKRAINIAN\|ERR_ICONSIZE\|BAUD_9600\|COUNTRY_SYRIA\|COUNTRY_NICARAGUA\|COUNTRY_PERU\|ERR_SIGNAL\|BAUD_2400\|JOYDOWN\|BAUD_300\|FILLRULEEVENODD\|ERR_COMMODITY\|ERR_UNKNOWN\|LANGUAGE_CORNISH\|FONTWEIGHT_LIGHT\|ERR_BAD8SVX\|ONBUTTONOVERALL\|CROSSFADE\|CAPSQUARE\|CAPBUTT\|ERR_STRORNUM\|LANGUAGE_SINDHI\|BEEPQUESTION\|JOINBEVEL\|ERR_PLUGINDOUBLET\|JOINROUND\|LANGUAGE_WESTERNFRISIAN\|ERR_PROTMETATABLE\|LANGUAGE_TURKISH\|BOTTOM\|ZOOMNORTH\|ERR_DATATYPEALPHA\|ERR_FINDUDPOBJECT\|SUN\|TURNDOWNRIGHT\|UDPSERVER\|MODRCOMMAND\|LANGUAGE_SWATI\|COUNTRY_MALAWI\|KEEPASPRAT\|DEFAULTICON\|LANGUAGE_TONGA\|ERR_NUMCALLBACK\|STRING\|ATTRPITCH\|ERR_ELSEWOIF\|COUNTRY_SAMOA\|LANGUAGE_PASHTO\|CARDTOP\|DENSITY_NONE\|ITALIC\|PLUGINCAPS_DISPLAYADAPTER\|FILEATTR_READ_USR\|LANGUAGE_UIGHUR\|ERR_EMPTYTABLE\|COUNTRY_CAPEVERDE\|ERR_FGRABVIDSTATE\|ERR_LOCK2\|LANGUAGE_ICELANDIC\|LIME\|ATTRCURSUBSONG\|CENTER\|ERR_VECGFXPLUGIN\|THREAD\|SLIDERIGHT\|NORMALSPEED\|SELMODE_LAYERS\|SLIDELEFT\|HLOWFLIPCOIN\|HFLIPCOIN\|VLOWFLIPCOIN\|ERR_INVCAPIDX\|VFLIPCOIN\|ASYNCDRAW\|ERR_INCOMPATBRUSH\|RECTBACKWEST\|FILEATTR_WRITE_USR\|ATTRONSCREEN\|CRUSHRIGHT\|LANGUAGE_BRETON\|ERR_REPEATWOUNTIL\|ERR_NOLOOP\|ATTRDISPLAY\|ERR_FILENOTFOUND\|ATTRDENSITY\|ERR_GETMONITORINFO\|ERR_POINTERFORMAT\|ZOOMIN\|PIXELZOOM2\|HSTRANGEPUSH\|FILEATTR_SYSTEM\|ERR_COLORSPACE\|LANGUAGE_ZULU\|ATTRHOSTWIDTH\|LANGUAGE_SANGO\|ERR_SOCKET\|STAR\|ERR_FINDBUTTON\|CLOCKWIPE\|FILLCOLOR\|USELAYERPOSITION\|LANGUAGE_BELARUSIAN\|COUNTRY_MICRONESIA\|COPYFILE_UNPROTECT\|DISSOLVE\|UNDERLINED\|WATER4\|COUNTRY_BURKINAFASO\|LANGUAGE_LINGALA\|WATER3\|MASK\|ATTRNOMODESWITCH\|ERR_SETFILEATTR\|LANGUAGE_KASHMIRI\|FILEATTR_HIDDEN\|DELETEFILE_UNPROTECT\|COUNTRY_CUBA\|HKEY_USERS\|ATTRKEYBOARD\|COUNTBOTH\|ROLLLEFT\|HSTRIPES\|CRUSHBOTTOM\|RECTBACKSOUTHWEST\|LANGUAGE_TSONGA\|RECTBACKSOUTH\|ERR_DIFFDEPTH\|RECTBACKSOUTHEAST\|RECTBACKEAST\|ERR_TRIALLIMIT\|ERR_FINDMOVE\|ERR_SCREEN\|ERR_FINDPLUGIN\|LANGUAGE_ITALIAN\|ERR_MULTIBGPIC\|ERR_BADLAYERTYPE\|JUSTIFIED\|ERR_ADDAPPWIN\|LANGUAGE_NAURU\|ERR_UNKNOWNFILTER\|RECTBACKNORTHEAST\|JOYDOWNLEFT\|RECTBACKNORTH\|WALLPAPERTOP\|ROLLTOP\|ERR_NOFALLTHROUGH\|BRUSH_VS_BOX\|USERDATA\|RANDOMPARAMETER\|IMAGETYPE_RASTER\|NATIVE\|DIAGONAL\|COUNTRY_SUDAN\|PUZZLE\|ERR_ENDIFWOIF\|ERR_MEM\|ERR_OPENSERIAL\|PUSHRIGHT\|NEXTFRAME\|DOSTYPE_FILE\|PUSHLEFT\|ERR_SORTFUNC\|ENCODING_ISO8859_1\|VOPENGATE\|ERR_XFIXES\|HCLOSEGATE\|ZOOMSOUTHWEST\|HOPENGATE\|VFLOWRIGHT\|ERR_BADBYTECODE\|VFLOWLEFT\|HFLOWBOTTOM\|HFLOWTOP\|ERR_DLOPEN\|ZOOMNORTHWEST\|ZOOMWEST\|ERR_NODOUBLEBUFFER\|ZOOMSOUTH\|ZOOMEAST\|ZOOMNORTHEAST\|COUNTRY_UK\|ZOOMCENTER\|ERR_FINDMEMBLK\|ERR_BGPICBUTTON\|VSTRETCHCENTER\|ERR_FREEABGPIC\|STRETCHTOP\|SCROLLNORTHEAST\|ATTRFUNCTION\|ERR_TABLEINDEX\|ERR_MULDISMOBILE\|COUNTRY_INDONESIA\|SCROLLSOUTHEAST\|NOCOLOR\|ERR_SELECTBGPIC2\|JOYUPLEFT\|MASKAND\|CLIPBOARD_SOUND\|SCROLLSOUTH\|SCROLLNORTH\|ERR_NOMENU\|ERR_NOANMLAYER\|SCROLLWEST\|ERR_CHANNELRANGE\|ERR_STRTABLEARG\|SCROLLRIGHT\|SCROLLLEFT\|RECTNORTHWEST\|ERR_BEGINREFRESH\|COUNTRY_SPAIN\|RECTSOUTHWEST\|COUNTRY_PHILIPPINES\|RECTSOUTHEAST\|ERR_LOADSOUND\|RECTEAST\|RECTNORTH\|LANGUAGE_ARABIC\|COUNTRY_JORDAN\|RECTCENTER\|ERR_TRANSBRUSH\|BLEND\|ERR_PLUGINVER\|RANDOMEFFECT\|FILLRULEWINDING\|ANMFMT_GIF\|VLINES\|ERR_LABINFOR\|DISPMODE_SYSTEMSCALE\|VLINES2\|ERR_NOARGBVISUAL\|COUNTRY_YEMEN\|HSTRIPES32\|ERR_SAVESAMPLE\|ERR_CHRCSTEMPTY\|LANGUAGE_CATALAN\|ERR_SEEK\|SANS\|LANGUAGE_JAVANESE\|ATTRLAYERID\|ERR_BRACECLOSE\|ERR_CONSOLEARG\|ATTRXPOS\|PLUGINCAPS_REQUESTERADAPTER\|REVEALRIGHT\|ERR_FINDFONT2\|REVEALLEFT\|LANGUAGE_DUTCH\|ERR_CHRCSTLEN\|HCLOSECURTAIN\|ERR_SELECTBGPIC\|ERR_MAGICKEY\|SELMODE_COMBO\|HOPENCURTAIN\|ERR_ZLIBSTREAM\|CARDBOTTOM\|VBLINDS16\|HBLINDS128\|HBLINDS64\|DURATION_SHORT\|COUNTRY_GREECE\|COUNTRY_MARSHALLISLANDS\|LANGUAGE_KAZAKH\|ERR_BADCONSTANT\|MODLCONTROL\|HBLINDS16\|COUNTRY_NAURU\|HBLINDS8\|SILVER\|DATA_7\|DAMPED\|ATTRORIENTATION\|COUNTRY_UNKNOWN\|COUNTRY_CZECHREPUBLIC\|LANGUAGE_INDONESIAN\|LANGUAGE_NAVAJO\|ERR_NOBLOCKBREAK\|ERR_8OR16BITONLY\|BOLD\|VSTRIPES8\|ERR_FUNCEXPECTED\|COUNTRY_AZERBAIJAN\|COUNTRY_KAZAKHSTAN\|ERR_FINDFONT\|QUARTERS\|WATER1\|HSTRIPES4\|COUNTRY_BRUNEI\|VOPENCURTAIN\|MONO8\|ERR_ICONENTRY\|PLUGINCAPS_VECTOR\|ATTRFIXED\|ALPHABETICAL\|VANILLACOPY\|MASKOR\|MASKXOR\|ERR_STAT\|SMPFMT_WAVE\|HSPLIT\|LANGUAGE_ABKHAZIAN\|COUNTRY_GABON\|ERR_ADDSYSEVENT\|ERR_INTEXPECTED\|COUNTRY_ECUADOR\|STEREO16\|ERR_UPDATEICON\|ERR_LABELDECLA\|MENUITEM_DISABLED\|ERR_FILEEXIST\|LANGUAGE_DIVEHI\|ATTRHOSTTASKBAR\|ERR_FINDOBJECTDATA\|ERR_BADENCODING\|ERR_GTK\|DENSITY_MEDIUM\|DENSITY_LOW\|VSPLIT\|ORIENTATION_LANDSCAPEREV\|TEAL\|ERR_COMMENTSTRUCT\|ORIENTATION_LANDSCAPE\|ERR_FT2\|ORIENTATION_PORTRAITREV\|DATELOCALNATIVE\|ERR_MAXLOCALS\|POLYGON\|BRUSHPART\|COUNTRY_CHINA\|ORIENTATION_NONE\|ERR_FIELDINIT\|CLIPREGION\|ERR_DELETEFILE\|LANGUAGE_SLOVENIAN\|SCALEMODE_LAYER\|MILLISECONDS\|COUNTRY_MALI\|SCALEMODE_AUTO\|LAYERBUTTON\|ERR_LOADICON\|COUNTRY_AUSTRIA\|ERR_NOFUNCTION\|COUNTRY_MALTA\|HLINES\|ERR_NUMSTRCMP\|ERR_SQBRACKETOPEN\|ERR_MODIFYABG\|LANGUAGE_GEORGIAN\|DISPMODE_ASK\|ERR_READRANGE\|ERR_UNTILWOREPEAT\|DISPMODE_WINDOWED\|FONTWEIGHT_REGULAR\|LANGUAGE_QUECHUA\|DISPSTATE_MINIMIZED\|DISPSTATE_CLOSED\|DISPSTATE_OPEN\|ERR_FREECURPOINTER\|DEINTERLACE_DOUBLE\|DEINTERLACE_DEFAULT\|ENCODING_AMIGA\|ENCODING_UTF8\|ENCODING_RAW\|FONTSLANT_OBLIQUE\|ERR_STRTOOSHORT\|ANMFMT_MJPEG\|ERR_CLIPWRITE\|FONTSLANT_ROMAN\|PERMREQ_READEXTERNAL\|TURNDOWNBOTTOM\|FONTWEIGHT_HEAVY\|ATTRPLAYING\|FONTWEIGHT_ULTRABOLD\|LANGUAGE_RUSSIAN\|FONTWEIGHT_BOLD\|FONTWEIGHT_DEMIBOLD\|REQICON_QUESTION\|COUNTRY_TANZANIA\|COUNTRY_SAINTBARTHELEMY\|DISPMODE_FULLSCREEN\|FONTWEIGHT_NORMAL\|ERR_GUIGFX\|ERR_LOADFRAME\|HIDELAYER\|COUNTRY_SAOTOMEANDPRINCIPE\|FONTWEIGHT_ULTRALIGHT\|ERR_GRABSCREEN\|SPIRAL\|FONTWEIGHT_THIN\|FONTENGINE_INBUILT\|COUNTRY_TIMOR\|ATTRDRIVER\|MONOSPACE\|ERR_SYNTAXERROR\|PRGTYPE_APPLET\|COUNTRY_URUGUAY\|PARITY_EVEN\|COUNTRY_ERITREA\|MODE_READ\|LANGUAGE_CENTRALKHMER\|ERR_SHORTIF\|BITMAP_DEFAULT\|ERR_ESCREPLACE\|ERR_FINDMUSIC\|ERR_MEMCODE\|ATTRMENU\|ERR_DISPMINIMIZED\|JOYNODIR\|ATTRMODE\|ERR_FINDDISPLAY\|ERR_BADWAVE\|LANGUAGE_PERSIAN\|SHDWSOUTHWEST\|ERR_ADDTASK\|ERR_NAMEUSED\|ERR_CLIPREAD\|LANGUAGE_TSWANA\|ATTRBORDERBOTTOM\|SPRITE\|ERR_DOUBLEMENU\|ERR_TOKENEXPECTED\|EDGE\|FILLTEXTURE\|IO_BUFFERED\|ERR_JAVAMETHOD\|GRAY\|NUMERICAL\|ERR_VFONTTYPE\|COUNTRY_LIECHTENSTEIN\|COUNTRY_GHANA\|ERR_LAYERSON\|LANGUAGE_BASQUE\|SERIAL\|ALL\|ERR_SELECTMASK\|COUNTRY_CYPRUS\|LANGUAGE_MAORI\|ERR_DBTRANSWIN\|ATTRID\|ERR_NUMBEREXPECTED\|ANTIALIAS\|SCROLLSOUTHWEST\|ERR_PLUGINSUPPORT\|ERR_WRONGID\|COUNTRY_SRILANKA\|ERR_SENDTIMEOUT\|ERR_EQUALEXPECTED\|ERR_SERIALIO\|COUNTRY_LESOTHO\|ERR_CREATEDOCKY\|ERR_INITSERIAL\|COUNTRY_SLOVENIA\|COUNTRY_AFGHANISTAN\|ERR_FUNCDECLA\|HW_REVISION\|ERR_MALFORMPAT2\|ERR_RENDERER\|COUNTRY_KUWAIT\|ERR_SURFACE\|ERR_FINDARRAY\|ERR_MULTIDISPLAYS\|ERR_TEXTSYNTAX\|ERR_ICONVECTOR\|ERR_BRACKETCLOSE\|SELMODE_NORMAL\|SCALEMODE_NONE\|LANGUAGE_KINYARWANDA\|ERR_CORETEXT\|COUNTRY_MONTENEGRO\|ERR_VIDEOINIT\|LANGUAGE_LUBAKATANGA\|ERR_TRIALINCLUDE\|ERR_READFILE\|ERR_TRIALSAVEVID\|ERR_ATSUI\|ERR_TRIALCOMPILE\|ERR_RADIOTOGGLEMENU\|LANGUAGE_MALAGASY\|COUNTRY_ALGERIA\|ERR_TABEXPECTED3\|LANGUAGE_TIBETAN\|ERR_ELSETWICE\|ERR_FINDSELECTOR\|ERR_FRAMEGRABBER\|ERR_COREFOUNDATION\|COUNTRY_HONDURAS\|ERR_FINDICON\|FILEATTR_READONLY\|ERR_INVALIDUTF8ARG\|ERR_DIFFENCODING\|COUNTRY_BARBADOS\|ERR_INVALIDUTF8\|ERR_INVREPLACE\|ERR_COMPLEXPATTERN\|ERR_AMIGAGUIDE\|LANGUAGE_AFRIKAANS\|ERR_LINKPLUGIN\|ERR_STACK\|MASKVANILLACOPY\|MODE_READWRITE\|ERR_FILESIZE\|ERR_MUSPLAYING\|ERR_VIDNOTPLAYING\|COUNTRY_DJIBOUTI\|ERR_ALLOCMASK\|ERR_ALLOCALPHA\|ERR_KEYFILE\|ERR_VISUALINFO\|ERR_FINDCLIENT\|ERR_SENDDATA\|LANGUAGE_NDONGA\|COUNTRY_DOMINICANREPUBLIC\|ERR_UNEXPECTEDSYM\|ERR_FULLSCREEN\|ERR_SCREENMODE\|ATTRBORDERLEFT\|COUNTRY_SWEDEN\|ERR_TFIMAGE\|ERR_LOCKBMAP\|ERR_FINDMONITOR\|COUNTRY_ROMANIA\|ATTRCURSORX\|ERR_NOCONTEXTMENU\|ERR_ACCELERATOR\|ERR_VECTORBRUSH\|FILEATTR_ARCHIVE\|ERR_ENDWITHWOWITH\|ERR_CONTEXTMENU\|SHDWNORTH\|SHDWNORTHWEST\|ERR_EMPTYMENUTREE\|ERR_FINDMENUITEM\|COUNTRY_RUSSIA\|ERR_DEFFONT\|ERR_CREATEMENU\|ANIM\|COUNTRY_ETHIOPIA\|ERR_MENUCOMPLEXITY\|MODLALT\|ERR_WRONGCMDRECVIDEO\|ERR_REGISTRYWRITE\|HIDEBRUSH\|ERR_SENDMESSAGE\|COUNTRY_LIBERIA\|ERR_FINDAPPLICATION\|ERR_NEEDAPPLICATION\|ERR_COORDSRANGE\|JOYRIGHT\|ERR_UNKNOWNATTR\|ERR_APPLICATION\|COUNTRY_FIJI\|ERR_SEEKFILE\|ERR_TABLEDECLA\|ERR_FINDDIR\|AMIGAICON_DRAWER\|COUNTRY_COMOROS\|ERR_MODIFYSPRITE\|STEREO8\|ERR_DDMOBILE\|ERR_HWBMCLOSEDISP\|ERR_HWDBFREEDISP\|BOTTOMOUT\|ERR_FINDBGPIC\|ERR_RETWOGOSUB\|ERR_BITMAP\|ERR_REQUIREPLUGIN\|ERR_DISPLAYADAPTERSUPPORT\|ERR_SOCKNAME\|RED\|ERR_SCRPIXFMT\|PI\|ERR_FINDSPRITE\|LANGUAGE_OJIBWA\|ERR_REQUIREFIELD\|COUNTRY_TAJIKISTAN\|ERR_WRITEONLY\|ERR_VIDLAYERFUNC\|ERR_VIDSTOPPED\|ERR_VIDEOLAYER\|ERR_CMDASVAR\|ERR_REGCLASS\|AMIGAICON_TOOL\|RECTWEST\|ERR_FINDACTIVITY\|ERR_JAVA\|ERR_UDEXPECTED\|LANGUAGE_CHICHEWA\|ERR_NOMIMEVIEWER\|ACTIVEWINDOW\|FILEATTR_SCRIPT\|ERR_GETSHORTCUT\|IMGFMT_PNG\|LAYER_VS_BOX\|LANGUAGE_MALTESE\|ATTRXSERVER\|ERR_CREATEICON\|LANGUAGE_DANISH\|ERR_SATFREEDISP\|ERR_PERCENTFORMATSTR\|COUNTRY_BELGIUM\|ERR_VIDPLAYING\|ERR_VIDPAUSED\|SECONDS\|ERR_SAVERALPHA\|ATTRMAXWIDTH\|ERR_HWBRUSHFUNC\|COUNTRY_ARGENTINA\|LANGUAGE_TIGRINYA\|SLOWSPEED\|LANGUAGE_NORWEGIAN\|ERR_HWBRUSH\|COUNTRY_BENIN\|DENSITY_HIGH\|ERR_PLUGINSYMBOL\|BARS\|ERR_UNKNOWNSMPOUT\|ERR_SAVEANIM\|ERR_FINDPOINTER\|ERR_UNKNOWNANMOUT\|LANGUAGE_FRENCH\|ERR_SAVEIMAGE\|ATTRSCALEMODE\|ERR_UNKNOWNIMGOUT\|CONICAL\|ERR_NOFMBHANDLER\|ERR_NOMUSICCB\|FILETYPE_ANIM\|LANGUAGE_SOMALI\|ATTRFONTSIZE\|COUNTRY_PARAGUAY\|COUNTRY_TURKMENISTAN\|ERR_SEEKFORMAT\|ERR_DBVIDEOLAYER\|LANGUAGE_IRISH\|COUNTRY_MAYOTTE\|ERR_BADCALLBACKRET\|YELLOW\|ERR_MODIFYPSMP\|DELETEFILE_STATUS\|ERR_DSOUNDNOTIPOS\|ERR_READONLY\|ERR_MOBILE\|ERR_MONITORFULLSCREEN\|ERR_WRONGDTYPE\|COUNTRY_CHAD\|LINEAR\|ONKEYDOWNALL\|ERR_INVNEXTKEY\|WHITE\|ATTRSIZE\|ATTRMAXHEIGHT\|ERR_FINDSERIAL\|LITTLEENDIAN\|ERR_NOCOLON\|ERR_LOADPLUGIN\|ERR_VIDEOTRANS\|COUNTRY_TUNISIA\|ERR_WRITE\|COUNTRY_PALAU\|ERR_SELECTBG\|ERR_VIDEOFRAME\|LANGUAGE_BURMESE\|SWISS\|COUNTRY_GREENLAND\|ERR_VIDATTACHED\|PLOT\|ERR_SOCKOPT\|ERR_QUICKTIME\|LANGUAGE_ARMENIAN\|REQICON_INFORMATION\|ERR_OLDAPPLET\|ERR_LOADVIDEO\|ERR_MOVEFILE\|ERR_ENDBLKWOBLK\|ERR_NOTENOUGHPIXELS\|ATTRSCALEHEIGHT\|LANGUAGE_SAMOAN\|VCLOSECURTAIN\|COUNTRY_IRELAND\|ERR_OPENAUDIO\|ERR_NOFILTERNAME\|ATTRMAXIMIZED\|ADF_FX\|COUNTRY_SAINTVINCENT\|RECEIVEDATA_PACKET\|COUNTRY_ARUBA\|ERR_UNSETENV\|ERR_ALSAPCM\|ERR_XCURSOR\|LANGUAGE_ALBANIAN\|HLINES2\|LANGUAGE_KURDISH\|ERR_CREATEGC\|ERR_TOOSMALL2\|COUNTRY_TUVALU\|BIGENDIAN\|LANGUAGE_GREENLANDIC\|ERR_UPLOADFORBIDDEN\|ERR_DINPUT\|TICKS\|ERR_NOCOMPRESS\|ERR_BADURL\|ERR_NOLOOPCONT\|ERR_HOSTNAME\|ERR_PEERNAME\|DOUBLE\|ERR_FINDSERVER\|ERR_OPENSOCKET\|ATTRHOSTSCALE\|ERR_XDISPLAY\|ERR_TFVBRUSH\|ERR_TOOMANYARGS\|DATELOCAL\|ERR_DEMO\|ERR_NOJOYATPORT\|COUNTRY_USA\|ERR_RENDERADLAYER\|ERR_OPENLIB\|COUNTRY_EGYPT\|DTR_ON\|FADE\|COUNTRY_MARTINIQUE\|HKEY_CLASSES_ROOT\|ERR_NOACCESS\|ERR_TFVBGPICBRUSH\|ERR_CLOSEFILE\|ERR_BGPICTYPE\|LANGUAGE_AFAR\|ERR_DEMO2\|VCLOSEGATE\|ERR_LINKFONT\|ERR_FTPAUTH\|ERR_WRONGSPRITESIZE\|ERR_SPRITELINK\|ERR_ADFFREEDISP\|ERR_MONITORDIR\|ERR_REGISTRYREAD\|ERR_REMADLAYER\|ERR_FINDINTERVAL\|ATTRSTATE\|ERR_FINDLAYER\|FONTSLANT_ITALIC\|ERR_SCALEBGPIC\|SHDWSOUTHEAST\|ERR_CLIPOPEN\|ERR_BRUSHTYPE\|ERR_CLIPFORMAT\|ERR_LOADPICTURE2\|ERR_OPENSOUND2\|ATTRZPOS\|ERR_OPENANIM2\|ERR_NEEDOS41\|LANGUAGE_JAPANESE\|ERR_TABEXPECTED\|ATTRTEXT\|ERR_FINDBRUSH\|COUNTRY_BRAZIL\|COUNTRY_SINGAPORE\|LANGUAGE_SANSKRIT\|ERR_ADDAPPICON\|LOWERCURVE\|ERR_FREEADISPLAY\|ERR_ARRAYDECLA\|ERR_SMODEALPHA\|ERR_FINDANIMSTREAM\|ATTRSCALEWIDTH\|ERR_MODIFYAANIM\|CLIPBOARD_UNKNOWN\|ERR_FONTPATH\|COUNTRY_BAHAMAS\|ERR_NEGCOORDS\|ERR_JOYSTICK\|ERR_CASECST\|LANGUAGE_TAGALOG\|LANGUAGE_KANURI\|COUNTRY_PITCAIRN\|NONE\|ERR_WRONGVSTRATEGY\|ERR_APPLET\|ERR_VIDEOSTRATEGY\|ERR_READTABLE\|COUNTRY_SWAZILAND\|BEEPWARNING\|BOUNCE\|LANGUAGE_SLOVAK\|LANGUAGE_SERBIAN\|ERR_FINDASYNCDRAW\|ERR_SPRITEONSCREEN2\|ERR_NOHWFUNC\|ERR_POINTERIMG\|ERR_MUSNOTPLYNG2\|ERR_NODISLAYERS\|ERR_NUMCONCAT\|COUNTRY_PUERTORICO\|ERR_DDAUTOSCALE\|ERR_DIRECTSHOW\|ATTRALPHAINTENSITY\|FILLNONE\|SHDWSOUTH\|ERR_ZLIBVERSION\|IMGFMT_BMP\|LANGUAGE_BENGALI\|COUNTRY_HAITI\|COUNTRY_GRENADA\|VBLINDS128\|ERR_TABCALLBACK\|FILETYPE_IMAGE\|BOOLEAN\|ERR_TEXTCONVERT\|ERR_MSGPORT\|ERR_LOADPICTURE\|VSTRIPES16\|ERR_SEMAPHORE\|ERR_MASKNALPHA\|ERR_TIMER\|PRINT\|ERR_HEXPOINT\|ERR_NODIRPATTERN\|ONBUTTONRIGHTCLICKALL\|ERR_NOTXTLAYER\|ERR_STRCALLBACK\|ERR_CONCAT\|ERR_COMPLEXWHILE\|REQ_NORMAL\|ERR_NOCHANNEL\|FONTWEIGHT_EXTRALIGHT\|COUNTRY_FRENCHPOLYNESIA\|FILEATTR_PURE\|ERR_SETFILEDATE\|HSTRIPES16\|COUNTRY_SEYCHELLES\|ERR_DEMO3\|COUNTRY_HONGKONG\|FASTMEMORY\|ERR_KEYNOTFOUND\|FONTWEIGHT_BOOK\|ERR_DATATYPESAVE2\|ERR_ZLIBDATA\|TEXTOUT\|ATTRCOUNT\|SHDWWEST\|ERR_RENAME\|ERR_CMPUNSUPPORTED\|COUNTRY_MAURITIUS\|ERR_DSOUNDPLAY\|ERR_UNIMPLCMD\|AMIGAICON_DISK\|ERR_NOREXX\|COUNTRY_LAOS\|LANGUAGE_ENGLISH\|ERR_ANTIALIAS\|ERR_MENUATTACHED\|COUNTRY_MAURITANIA\|LANGUAGE_TAMIL\|ERR_UNKTEXTFMT\|ERR_NOTADIR\|ERR_REQUIRETAGFMT\|COUNTRY_CROATIA\|ERR_CACHEERROR\|ERR_TASKSETUP\|LANGUAGE_YORUBA\|ERR_CSTDOUBLEDEF\|NATIVEENDIAN\|ATTRNUMFRAMES\|ATTRSTANDARD\|LANGUAGE_SICHUANYI\|LANGUAGE_WOLOF\|LANGUAGE_SHONA\|ONKEYDOWN\|VOID\|COUNTRY_NIUE\|ERR_UNKNOWNMUSFMT\|ATTRSPRITES\|ERR_MIXMUSMOD\|ERR_SEEKRANGE\|COUNTRY_NEWZEALAND\|LANGUAGE_PALI\|FILLGRADIENT\|ERR_NOKEYWORDS\|ERR_UNKNOWNTAG\|COUNTRY_MYANMAR\|STDPTR_BUSY\|RIGHTOUT\|COUNTRY_JERSEY\|MOVEFILE_UNPROTECT\|IPUNKNOWN\|ERR_FUNCREMOVED\|MENUITEM_SELECTED\|COUNTRY_NORFOLKISLAND\|ERR_OPENANIM\|CHIPMEMORY\|COUNTRY_MADAGASCAR\|ERR_NUMTABLEARG\|ATTRCLIPREGION\|LANGUAGE_SUNDANESE\|ERR_TOOMANYCAPTURES\|ERR_NOALPHA\|ERR_BADSIGNATURE\|ERR_BADUPVALUES\|FILEATTR_DELETE_USR\|COUNTRY_LATVIA\|REQ_SAVEMODE\|ERR_VMMISMATCH\|ERR_NUMEXPECTED\|ERR_UNEXPECTEDEOF\|ERR_UNKNOWNCOND\|ERR_STRINGEXPECTED\|DURATION_LONG\|LANGUAGE_GANDA\|PRGTYPE_PROGRAM\|COUNTRY_CENTRALAFRICANREPUBLIC\|CLIPBOARD_IMAGE\|ERR_LOCK\|ERR_INVINSERT\|ERR_LAYERSUPPORT\|LANGUAGE_ASSAMESE\|COUNTRY_ANTIGUAANDBARBUDA\|FLOAT\|COUNTRY_RWANDA\|FILEATTR_READ_GRP\|LANGUAGE_TELUGU\|COUNTRY_GUINEABISSAU\|JOYLEFT\|SHDWEAST\|BGPIC\|ERR_VARSYNTAX\|ATTRNUMSUBSONGS\|PLUGINCAPS_TIMERADAPTER\|ERR_UNMPARENTHESES\|ERR_ERRORCALLED\|ERR_PERCENTFORMAT\|COUNTRY_GERMANY\|LANGUAGE_BISLAMA\|UNDO\|ERR_FINDFILE\|LANGUAGE_URDU\|PLUGINCAPS_REQUIRE\|SINE\|ERR_FINDTEXTOBJECT\|LANGUAGE_AMHARIC\|REVEALTOP\|COUNTRY_SAINTLUCIA\|ERR_DIRLOCK\|MODE_WRITE\|LANGUAGE_TURKMEN\|ERR_VIDRECTRANS\|LINE\|COUNTRY_NAMIBIA\|FILETYPEFLAGS_SAVE\|LANGUAGE_SARDINIAN\|ERR_NOMASKBRUSH\|ERR_MUSNOTPAUSED\|IPV4\|ERR_UNKNUMFMT\|ERR_DOUBLEDECLA\|ERR_INVPATCAP\|LANGUAGE_HUNGARIAN\|COUNTRY_MONTSERRAT\|LANGUAGE_FAROESE\|LANGUAGE_DZONGKHA\|ERR_LOOPRANGE\|ATTRHASALPHA\|ERR_ENDSWCHWOSWCH\|POINTER\|COUNTRY_BOUVETISLAND\|BYTE\|FILE\|ATTRRAWYPOS\|FONTWEIGHT_ULTRABLACK\|ERR_EXETYPE\|ERR_UNBALANCEDPAT\|COUNTRY_NIGER\|EOF\|ERR_LABMAINBLK\|RIGHT\|LANGUAGE_KUANYAMA\|KEEPPOSITION\|ERR_BRUSHSIZE\|LANGUAGE_KIKUYU\|CLOSEWINDOW\|ERR_CREATEPORT\|ZOOMOUT\|ERR_MODIFYABR\|IMGFMT_TIFF\|ERR_MISSINGPARAMTR\|NORMAL\|STDPTR_CUSTOM\|ERR_MEMRANGE\|LEFTOUT\|LANGUAGE_CHECHEN\|COUNTRY_BERMUDA\|MOVEFILE_DELETE\|SPRITE_VS_BOX\|LANGUAGE_BASHKIR\|ERR_SPRITEONSCREEN\|ERR_SETADAPTER\|LANGUAGE_INUPIAQ\|ALPHANUMERICAL\|COUNTRY_MACEDONIA\|COUNTRY_KENYA\|COUNTRY_PAKISTAN\|BGPICPART\|IO_UNBUFFERED\|FILETYPEFLAGS_ALPHA\|COUNTRY_ZAMBIA\|ERR_STREXPECTED\|ATTRTITLE\|UPPERCURVE\|ERR_MEMCST\|ERR_SELECTBRUSH\|ERR_NOTRANSPARENCY\|COUNTRY_SWITZERLAND\|ERR_INTERNAL1\|LANGUAGE_SINHALA\|ERR_UNKNOWNSEC\|ATTRCANSEEK\|COUNTRY_ISRAEL\|COUNTRY_SANMARINO\|VECTORPATH\|ERR_PLUGINTYPE\|ERR_CONFIG2\|ERR_SWCHWOENDSWCH\|DOUBLEBUFFER\|ERR_TABLEORNIL\|DOSTYPE_DIRECTORY\|MAROON\|ATTRBORDERTOP\|SAMPLE\|ATTRBGPIC\|PLUGINCAPS_SAVESAMPLE\|ERR_SCREENSIZE\|AMIGAICON_PROJECT\|SNAPDISPLAY\|COUNTRY_GUINEA\|SHADOW\|ERR_MAXUPVALS\|ORIENTATION_PORTRAIT\|COUNTRY_CAMBODIA\|ERR_TABEXPECTED2\|ERR_NOCHAR\|ERR_DSOUNDNOTIFY\|ERR_UNFINISHEDCAPTURE\|ATTRBITRATE\|ERR_NOCOMMA\|ERR_IFWOENDIF\|STDPTR_SYSTEM\|LANGUAGE_IGBO\|HKEY_CURRENT_CONFIG\|LANGUAGE_INTERLINGUA\|AMIGAICON_SHOW\|IPV6\|ERR_CONFIG\|ERR_COMPLEXEXPR\|ERR_FINDSAMPLE\|MODLSHIFT\|ERR_ENDFUNCWOFUNC\|PLUGINCAPS_IMAGE\|UDPNONE\|LANGUAGE_OROMO\|ERR_NEEDCOMPOSITE\|ATTRBORDERLESS\|ERR_SETFILECOMMENT\|LANGUAGE_MARATHI\|ERR_LFSYNTAX\|COUNTRY_BULGARIA\|ERR_FINDTIMEOUT\|ERR_RECVUNKNOWN\|ERR_RENDER\|ERR_CREATEDIR\|WATER2\|SLIDETOP\|ERR_PALSCREEN\|CRUSHLEFT\|COUNTRY_UKRAINE\|RADIAL\|ERR_WRONGOP\|COUNTRY_CURACAO\|ERR_NOCONSTANTS\|COUNTRY_IRAN\|FONTWEIGHT_BLACK\|REVEALBOTTOM\|ERR_PLAYERCOMP\|COUNTRY_PANAMA\|COUNTRY_ARMENIA\|INSERTBRUSH\|LANGUAGE_KOMI\|DATEDAY\|TABLE\|ATTRHARDWARE\|ONBUTTONRIGHTCLICK\|AMIGAICON_HIDE\|ERR_OPENSOUND\|SIZEWINDOW\|ATTRHOSTSCALEX\|FONTENGINE_NATIVE\|COUNTRY_IRAQ\|COUNTRY_ISLEOFMAN\|NUMBER\|HOLLYWOOD\|COUNTRY_SERBIA\|AMIGAICON_SETTITLE\|ERR_NEXTWOFOR\|FUNCTION\|ERR_GETDISKOBJ\|MODRSHIFT\|ERR_WRITEFILE\|LANGUAGE_ARAGONESE\|FILEATTR_WRITE_GRP\|LANGUAGE_UNKNOWN\|ERR_KICKSTART\|ERR_KEYWORD\|PLUGINCAPS_SAVEIMAGE\|FREESPACE\|COUNTRY_BHUTAN\|ERR_AUDIOCONVERTER\|TIMEOUT\|PERMREQ_WRITEEXTERNAL\|ERR_FINDCST\|ATTRTYPE\|ATTRHOSTTITLEBARHEIGHT\|ERR_TEXTURE\|OLIVE\|ERR_SATELLITE\|USEDSPACE\|LANGUAGE_HAITIAN\|COUNTRY_SOUTHSUDAN\|ERR_LABINWHILE\|COUNTRY_BAHRAIN\|ERR_WHILEWOWEND\|LANGUAGE_CROATIAN\|LANGUAGE_TWI\|ERR_NOAPPLET\|COUNTRY_QATAR\|ONBUTTONCLICK\|PUSHTOP\|ERR_READ\|BOX\|ADF_MOVEOBJECT\|COUNTRY_COSTARICA\|COUNTRY_POLAND\|ERR_NONE\|INTERVAL\|SLIDEBOTTOM\|HBLINDS32\|LANGUAGE_CHUVASH\|VBLINDS32\|BEEPINFORMATION\|COUNTRY_NETHERLANDS\|BEEPERROR\|FILETYPEFLAGS_FPS\|ATTRADAPTER\|COUNTRY_TONGA\|LANGUAGE_HINDI\|ERR_UNKNOWNMIMETYPE\|ERR_ANIMFRAME\|ERR_NOSPRITES\|IMGFMT_NATIVE\|LAYER\|MUSIC\|COUNTRY_LITHUANIA\|PLUGINCAPS_SOUND\|ELLIPSE\|COUNTRY_VIETNAM\|LANGUAGE_NORWEGIANBOKMAL\|ERR_IMAGEERROR\|REQICON_NONE\|FONTWEIGHT_SEMIBOLD\|SNAPWINDOW\|ATTRLOADER\|ATTRCURFRAME\|LANGUAGE_PORTUGUESE\|NEXTFRAME2\|COUNTRY_SURINAME\|ATTRXDPI\|LANGUAGE_CHINESE\|DATEMONTH\|ATTRMARGINLEFT\|COUNTRY_SOMALIA\|ERR_CONITEMS\|LANGUAGE_FIJIAN\|COUNTRY_SIERRALEONE\|LANGUAGE_OCCITAN\|LANGUAGE_SOUTHERNSOTHO\|COUNTRY_DOMINICA\|LANGUAGE_HERERO\|LANGUAGE_SWAHILI\|COUNTRY_PAPUANEWGUINEA\|COUNTRY_COOKISLANDS\|ATTRFONTDESCENDER\|COUNTRY_HUNGARY\|ERR_MODIFYSPRITE2\|DEFAULTSPEED\|TRUETYPE_DEFAULT\|LANGUAGE_AYMARA\|COUNTRY_MONGOLIA\|ATTRCURSORY\|COUNTRY_MOLDOVA\|COUNTRY_MEXICO\|ERR_PUBSCREEN\|ERR_LAYERRANGE\|ATTRLAYERSON\|DOWNLOADFILE_STATUS\|NIL\|COUNTRY_MALAYSIA\|LONG\|COUNTRY_MACAO\|LANGUAGE_LATVIAN\|COUNTRY_LEBANON\|SERVER\|COUNTRY_SOUTHKOREA\|COUNTRY_KIRIBATI\|COUNTRY_ESTONIA\|COUNTRY_ANGUILLA\|COUNTRY_TAIWAN\|ERR_TAGEXPECTED\|ATTRHEIGHT\|ERR_TFVBRUSHBGPIC\|ATTRYDPI\|COUNTRY_EQUATORIALGUINEA\|DATETIME\|LANGUAGE_BAMBARA\|EVENTHANDLER\|ATTRPOINTER\|FILETYPEFLAGS_QUALITY\|ERR_FINDVIDEO\|TURNDOWNTOP\|COUNTRY_CHRISTMASISLAND\|COUNTRY_BURUNDI\|COUNTRY_FINLAND\|ERR_MISSINGBRACKET\|LANGUAGE_ORIYA\|LANGUAGE_MONGOLIAN\|COUNTRY_THAILAND\|HKEY_LOCAL_MACHINE\|ATTRTRANSPARENTCOLOR\|COUNTRY_AUSTRALIA\|LANGUAGE_UZBEK\|ERR_SMPRANGE\|ATTRHOSTHEIGHT\|LANGUAGE_ROMANIAN\|LANGUAGE_MACEDONIAN\|COUNTRY_ANGOLA\|SEEK_BEGINNING\|IMGFMT_ILBM\|COUNTRY_GUADELOUPE\|DATEUTC\|ERR_REXXERR\|ATTRWIDTH\|FILEATTR_EXECUTE_USR\|COUNTRY_SAINTHELENA\|ICON\|ERR_LABINFUNC\|ATTRPUBSCREEN\|COUNTRY_GUERNSEY\|ERR_FINDLAYERDATA\|GREEN\|ERR_MISSINGOPBRACK\|HW_AMIGA\|HW_MACOS\|HW_LINUX\|HW_WINDOWS\|HW_ANDROID\|HW_IOS\|HW_LITTLE_ENDIAN\|HW_64BIT\|HW_AMIGAOS4\|HW_MORPHOS\|HW_AROS\|HW_WARPOS\|HW_AMIGAOS3\)\>" - +syn match hwConstant "#\<\%(ACTIVEWINDOW\|ADF_ANIM\|ADF_FX\|ADF_MOVEOBJECT\|ALL\|ALPHABETICAL\|ALPHACHANNEL\|ALPHANUMERICAL\|AMIGAICON_DEVICE\|AMIGAICON_DISK\|AMIGAICON_DRAWER\|AMIGAICON_GARBAGE\|AMIGAICON_HIDE\|AMIGAICON_KICKSTART\|AMIGAICON_NONE\|AMIGAICON_PROJECT\|AMIGAICON_SETPOSITION\|AMIGAICON_SETTITLE\|AMIGAICON_SHOW\|AMIGAICON_TOOL\|ANIM\|ANIMSTREAM\|ANIMTYPE_RASTER\|ANIMTYPE_VECTOR\|ANMFMT_GIF\|ANMFMT_IFF\|ANMFMT_MJPEG\|ANTIALIAS\|AQUA\|ARC\|ASYNCDRAW\|ASYNCOBJ\|ATTRACTIVE\|ATTRADAPTER\|ATTRALPHAINTENSITY\|ATTRBGPIC\|ATTRBITRATE\|ATTRBORDERBOTTOM\|ATTRBORDERLEFT\|ATTRBORDERLESS\|ATTRBORDERPEN\|ATTRBORDERRIGHT\|ATTRBORDERTOP\|ATTRBULLETPEN\|ATTRCANSEEK\|ATTRCLIPREGION\|ATTRCOUNT\|ATTRCURFRAME\|ATTRCURSORX\|ATTRCURSORY\|ATTRCURSUBSONG\|ATTRCYCLE\|ATTRDENSITY\|ATTRDEPTH\|ATTRDISPLAY\|ATTRDITHERMODE\|ATTRDOUBLEBUFFER\|ATTRDRIVER\|ATTRDURATION\|ATTRELAPSE\|ATTRENCODING\|ATTRFIXED\|ATTRFONTAA\|ATTRFONTASCENDER\|ATTRFONTCHARMAP\|ATTRFONTDEPTH\|ATTRFONTDESCENDER\|ATTRFONTENGINE\|ATTRFONTNAME\|ATTRFONTPALETTE\|ATTRFONTSCALABLE\|ATTRFONTSIZE\|ATTRFONTTRANSPARENTPEN\|ATTRFONTTYPE\|ATTRFORMAT\|ATTRFRAMEDELAY\|ATTRFUNCTION\|ATTRGROUP\|ATTRHARDWARE\|ATTRHASALPHA\|ATTRHASMASK\|ATTRHEIGHT\|ATTRHOSTDEPTH\|ATTRHOSTHEIGHT\|ATTRHOSTMONITORS\|ATTRHOSTSCALE\|ATTRHOSTSCALEX\|ATTRHOSTSCALEY\|ATTRHOSTTASKBAR\|ATTRHOSTTITLEBARHEIGHT\|ATTRHOSTWIDTH\|ATTRID\|ATTRIMMERSIVEMODE\|ATTRINTERPOLATE\|ATTRKEYBOARD\|ATTRLAYERID\|ATTRLAYERS\|ATTRLAYERSON\|ATTRLOADER\|ATTRMARGINLEFT\|ATTRMARGINRIGHT\|ATTRMASKMODE\|ATTRMAXHEIGHT\|ATTRMAXIMIZED\|ATTRMAXWIDTH\|ATTRMENU\|ATTRMODE\|ATTRMONITOR\|ATTRNOCLOSE\|ATTRNOHIDE\|ATTRNOMODESWITCH\|ATTRNUMENTRIES\|ATTRNUMFRAMES\|ATTRNUMSUBSONGS\|ATTRONSCREEN\|ATTRORIENTATION\|ATTROUTPUTDEVICE\|ATTRPALETTE\|ATTRPALETTEMODE\|ATTRPAUSED\|ATTRPEN\|ATTRPITCH\|ATTRPLAYING\|ATTRPOINTER\|ATTRPOSITION\|ATTRPUBSCREEN\|ATTRRAWHEIGHT\|ATTRRAWWIDTH\|ATTRRAWXPOS\|ATTRRAWYPOS\|ATTRSCALEHEIGHT\|ATTRSCALEMODE\|ATTRSCALESWITCH\|ATTRSCALEWIDTH\|ATTRSHADOWPEN\|ATTRSIZE\|ATTRSIZEABLE\|ATTRSPRITES\|ATTRSTANDARD\|ATTRSTATE\|ATTRSYSTEMBARS\|ATTRTEXT\|ATTRTITLE\|ATTRTRANSPARENTCOLOR\|ATTRTRANSPARENTPEN\|ATTRTYPE\|ATTRUSERDATA\|ATTRVISIBLE\|ATTRWIDTH\|ATTRXDPI\|ATTRXPOS\|ATTRXSERVER\|ATTRYDPI\|ATTRYPOS\|ATTRZPOS\|BARS\|BAUD_115200\|BAUD_1200\|BAUD_19200\|BAUD_2400\|BAUD_300\|BAUD_38400\|BAUD_460800\|BAUD_4800\|BAUD_57600\|BAUD_600\|BAUD_9600\|BEEPERROR\|BEEPINFORMATION\|BEEPQUESTION\|BEEPSYSTEM\|BEEPWARNING\|BGPIC\|BGPICPART\|BIGENDIAN\|BIGSINE\|BITMAP_DEFAULT\|BLACK\|BLEND\|BLUE\|BOLD\|BOOLEAN\|BORDER\|BOTTOM\|BOTTOMOUT\|BOUNCE\|BOX\|BRUSH\|BRUSH_VS_BOX\|BRUSHPART\|BULLET_ARROW\|BULLET_BOX\|BULLET_CHECKMARK\|BULLET_CIRCLE\|BULLET_CROSS\|BULLET_DASH\|BULLET_DIAMOND\|BULLET_LALPHA\|BULLET_LALPHADOUBLE\|BULLET_LALPHASINGLE\|BULLET_LROMAN\|BULLET_LROMANDOUBLE\|BULLET_LROMANSINGLE\|BULLET_NONE\|BULLET_NUMERIC\|BULLET_NUMERICDOUBLE\|BULLET_NUMERICSINGLE\|BULLET_UALPHA\|BULLET_UALPHADOUBLE\|BULLET_UALPHASINGLE\|BULLET_UROMAN\|BULLET_UROMANDOUBLE\|BULLET_UROMANSINGLE\|BYTE\|CAPBUTT\|CAPROUND\|CAPSQUARE\|CARDBOTTOM\|CARDTOP\|CENTER\|CHARMAP_ADOBECUSTOM\|CHARMAP_ADOBEEXPERT\|CHARMAP_ADOBELATIN1\|CHARMAP_ADOBESTANDARD\|CHARMAP_APPLEROMAN\|CHARMAP_BIG5\|CHARMAP_DEFAULT\|CHARMAP_JOHAB\|CHARMAP_MSSYMBOL\|CHARMAP_OLDLATIN2\|CHARMAP_SJIS\|CHARMAP_UNICODE\|CHARMAP_WANSUNG\|CHIPMEMORY\|CIRCLE\|CLIENT\|CLIPBOARD_EMPTY\|CLIPBOARD_IMAGE\|CLIPBOARD_SOUND\|CLIPBOARD_TEXT\|CLIPBOARD_UNKNOWN\|CLIPREGION\|CLOCKWIPE\|CLOSEWINDOW\|CONICAL\|COPYFILE_FAILED\|COPYFILE_OVERWRITE\|COPYFILE_STATUS\|COPYFILE_UNPROTECT\|COUNTBOTH\|COUNTDIRECTORIES\|COUNTFILES\|COUNTRY_AFGHANISTAN\|COUNTRY_ALANDISLANDS\|COUNTRY_ALBANIA\|COUNTRY_ALGERIA\|COUNTRY_AMERICANSAMOA\|COUNTRY_ANDORRA\|COUNTRY_ANGOLA\|COUNTRY_ANGUILLA\|COUNTRY_ANTARCTICA\|COUNTRY_ANTIGUAANDBARBUDA\|COUNTRY_ARGENTINA\|COUNTRY_ARMENIA\|COUNTRY_ARUBA\|COUNTRY_AUSTRALIA\|COUNTRY_AUSTRIA\|COUNTRY_AZERBAIJAN\|COUNTRY_BAHAMAS\|COUNTRY_BAHRAIN\|COUNTRY_BANGLADESH\|COUNTRY_BARBADOS\|COUNTRY_BELARUS\|COUNTRY_BELGIUM\|COUNTRY_BELIZE\|COUNTRY_BENIN\|COUNTRY_BERMUDA\|COUNTRY_BESISLANDS\|COUNTRY_BHUTAN\|COUNTRY_BOLIVIA\|COUNTRY_BOSNIAANDHERZEGOVINA\|COUNTRY_BOTSWANA\|COUNTRY_BOUVETISLAND\|COUNTRY_BRAZIL\|COUNTRY_BRUNEI\|COUNTRY_BULGARIA\|COUNTRY_BURKINAFASO\|COUNTRY_BURUNDI\|COUNTRY_CAMBODIA\|COUNTRY_CAMEROON\|COUNTRY_CANADA\|COUNTRY_CAPEVERDE\|COUNTRY_CAYMANISLANDS\|COUNTRY_CENTRALAFRICANREPUBLIC\|COUNTRY_CHAD\|COUNTRY_CHILE\|COUNTRY_CHINA\|COUNTRY_CHRISTMASISLAND\|COUNTRY_COCOSISLANDS\|COUNTRY_COLOMBIA\|COUNTRY_COMOROS\|COUNTRY_CONGO\|COUNTRY_COOKISLANDS\|COUNTRY_COSTARICA\|COUNTRY_CROATIA\|COUNTRY_CUBA\|COUNTRY_CURACAO\|COUNTRY_CYPRUS\|COUNTRY_CZECHREPUBLIC\|COUNTRY_DENMARK\|COUNTRY_DJIBOUTI\|COUNTRY_DOMINICA\|COUNTRY_DOMINICANREPUBLIC\|COUNTRY_DRCONGO\|COUNTRY_ECUADOR\|COUNTRY_EGYPT\|COUNTRY_ELSALVADOR\|COUNTRY_EQUATORIALGUINEA\|COUNTRY_ERITREA\|COUNTRY_ESTONIA\|COUNTRY_ETHIOPIA\|COUNTRY_FALKLANDISLANDS\|COUNTRY_FAROEISLANDS\|COUNTRY_FIJI\|COUNTRY_FINLAND\|COUNTRY_FRANCE\|COUNTRY_FRENCHGUIANA\|COUNTRY_FRENCHPOLYNESIA\|COUNTRY_GABON\|COUNTRY_GAMBIA\|COUNTRY_GEORGIA\|COUNTRY_GERMANY\|COUNTRY_GHANA\|COUNTRY_GIBRALTAR\|COUNTRY_GREECE\|COUNTRY_GREENLAND\|COUNTRY_GRENADA\|COUNTRY_GUADELOUPE\|COUNTRY_GUAM\|COUNTRY_GUATEMALA\|COUNTRY_GUERNSEY\|COUNTRY_GUINEA\|COUNTRY_GUINEABISSAU\|COUNTRY_GUYANA\|COUNTRY_HAITI\|COUNTRY_HOLYSEE\|COUNTRY_HONDURAS\|COUNTRY_HONGKONG\|COUNTRY_HUNGARY\|COUNTRY_ICELAND\|COUNTRY_INDIA\|COUNTRY_INDONESIA\|COUNTRY_IRAN\|COUNTRY_IRAQ\|COUNTRY_IRELAND\|COUNTRY_ISLEOFMAN\|COUNTRY_ISRAEL\|COUNTRY_ITALY\|COUNTRY_IVORYCOAST\|COUNTRY_JAMAICA\|COUNTRY_JAPAN\|COUNTRY_JERSEY\|COUNTRY_JORDAN\|COUNTRY_KAZAKHSTAN\|COUNTRY_KENYA\|COUNTRY_KIRIBATI\|COUNTRY_KUWAIT\|COUNTRY_KYRGYZSTAN\|COUNTRY_LAOS\|COUNTRY_LATVIA\|COUNTRY_LEBANON\|COUNTRY_LESOTHO\|COUNTRY_LIBERIA\|COUNTRY_LIBYA\|COUNTRY_LIECHTENSTEIN\|COUNTRY_LITHUANIA\|COUNTRY_LUXEMBOURG\|COUNTRY_MACAO\|COUNTRY_MACEDONIA\|COUNTRY_MADAGASCAR\|COUNTRY_MALAWI\|COUNTRY_MALAYSIA\|COUNTRY_MALDIVES\|COUNTRY_MALI\|COUNTRY_MALTA\|COUNTRY_MARSHALLISLANDS\|COUNTRY_MARTINIQUE\|COUNTRY_MAURITANIA\|COUNTRY_MAURITIUS\|COUNTRY_MAYOTTE\|COUNTRY_MEXICO\|COUNTRY_MICRONESIA\|COUNTRY_MOLDOVA\|COUNTRY_MONACO\|COUNTRY_MONGOLIA\|COUNTRY_MONTENEGRO\|COUNTRY_MONTSERRAT\|COUNTRY_MOROCCO\|COUNTRY_MOZAMBIQUE\|COUNTRY_MYANMAR\|COUNTRY_NAMIBIA\|COUNTRY_NAURU\|COUNTRY_NEPAL\|COUNTRY_NETHERLANDS\|COUNTRY_NEWCALEDONIA\|COUNTRY_NEWZEALAND\|COUNTRY_NICARAGUA\|COUNTRY_NIGER\|COUNTRY_NIGERIA\|COUNTRY_NIUE\|COUNTRY_NORFOLKISLAND\|COUNTRY_NORTHKOREA\|COUNTRY_NORWAY\|COUNTRY_OMAN\|COUNTRY_PAKISTAN\|COUNTRY_PALAU\|COUNTRY_PALESTINE\|COUNTRY_PANAMA\|COUNTRY_PAPUANEWGUINEA\|COUNTRY_PARAGUAY\|COUNTRY_PERU\|COUNTRY_PHILIPPINES\|COUNTRY_PITCAIRN\|COUNTRY_POLAND\|COUNTRY_PORTUGAL\|COUNTRY_PUERTORICO\|COUNTRY_QATAR\|COUNTRY_REUNION\|COUNTRY_ROMANIA\|COUNTRY_RUSSIA\|COUNTRY_RWANDA\|COUNTRY_SAINTBARTHELEMY\|COUNTRY_SAINTHELENA\|COUNTRY_SAINTKITTSANDNEVIS\|COUNTRY_SAINTLUCIA\|COUNTRY_SAINTVINCENT\|COUNTRY_SAMOA\|COUNTRY_SANMARINO\|COUNTRY_SAOTOMEANDPRINCIPE\|COUNTRY_SAUDIARABIA\|COUNTRY_SENEGAL\|COUNTRY_SERBIA\|COUNTRY_SEYCHELLES\|COUNTRY_SIERRALEONE\|COUNTRY_SINGAPORE\|COUNTRY_SLOVAKIA\|COUNTRY_SLOVENIA\|COUNTRY_SOLOMONISLANDS\|COUNTRY_SOMALIA\|COUNTRY_SOUTHAFRICA\|COUNTRY_SOUTHKOREA\|COUNTRY_SOUTHSUDAN\|COUNTRY_SPAIN\|COUNTRY_SRILANKA\|COUNTRY_SUDAN\|COUNTRY_SURINAME\|COUNTRY_SWAZILAND\|COUNTRY_SWEDEN\|COUNTRY_SWITZERLAND\|COUNTRY_SYRIA\|COUNTRY_TAIWAN\|COUNTRY_TAJIKISTAN\|COUNTRY_TANZANIA\|COUNTRY_THAILAND\|COUNTRY_TIMOR\|COUNTRY_TOGO\|COUNTRY_TONGA\|COUNTRY_TRINIDADANDTOBAGO\|COUNTRY_TUNISIA\|COUNTRY_TURKEY\|COUNTRY_TURKMENISTAN\|COUNTRY_TUVALU\|COUNTRY_UAE\|COUNTRY_UGANDA\|COUNTRY_UK\|COUNTRY_UKRAINE\|COUNTRY_UNKNOWN\|COUNTRY_URUGUAY\|COUNTRY_USA\|COUNTRY_UZBEKISTAN\|COUNTRY_VANUATU\|COUNTRY_VENEZUELA\|COUNTRY_VIETNAM\|COUNTRY_YEMEN\|COUNTRY_ZAMBIA\|COUNTSEPARATE\|CR_DEAD\|CR_RUNNING\|CR_SUSPENDED\|CROSSFADE\|CRUSHBOTTOM\|CRUSHLEFT\|CRUSHRIGHT\|CRUSHTOP\|DAMPED\|DATA_5\|DATA_6\|DATA_7\|DATA_8\|DATEDAY\|DATELOCAL\|DATELOCALNATIVE\|DATEMONTH\|DATETIME\|DATEUTC\|DATEYEAR\|DEFAULTICON\|DEFAULTSPEED\|DEINTERLACE_DEFAULT\|DEINTERLACE_DOUBLE\|DELETEFILE_FAILED\|DELETEFILE_STATUS\|DELETEFILE_UNPROTECT\|DENSITY_HIGH\|DENSITY_LOW\|DENSITY_MEDIUM\|DENSITY_NONE\|DIAGONAL\|DIRECTORY\|DIRMONITOR_ADD\|DIRMONITOR_CHANGE\|DIRMONITOR_REMOVE\|DISPLAY\|DISPMODE_ASK\|DISPMODE_FAKEFULLSCREEN\|DISPMODE_FULLSCREEN\|DISPMODE_FULLSCREENSCALE\|DISPMODE_MODEREQUESTER\|DISPMODE_MODESWITCH\|DISPMODE_SYSTEMSCALE\|DISPMODE_WINDOWED\|DISPSTATE_CLOSED\|DISPSTATE_MINIMIZED\|DISPSTATE_OPEN\|DISSOLVE\|DITHERMODE_FLOYDSTEINBERG\|DITHERMODE_NONE\|DOSTYPE_DIRECTORY\|DOSTYPE_FILE\|DOUBLE\|DOUBLEBUFFER\|DOWNLOADFILE_STATUS\|DTR_OFF\|DTR_ON\|DURATION_LONG\|DURATION_SHORT\|EDGE\|ELLIPSE\|ENCODING_AMIGA\|ENCODING_ISO8859_1\|ENCODING_RAW\|ENCODING_UTF8\|EOF\|ERR_8OR16BITONLY\|ERR_ACCELERATOR\|ERR_ADDAPPICON\|ERR_ADDAPPWIN\|ERR_ADDSYSEVENT\|ERR_ADDTASK\|ERR_ADFFREEDISP\|ERR_ADFWRONGDISP\|ERR_AFILEPROP\|ERR_AHI\|ERR_ALLOCALPHA\|ERR_ALLOCCHANNEL\|ERR_ALLOCCHUNKY\|ERR_ALLOCMASK\|ERR_ALRDYDECLRD\|ERR_ALREADYASYNC\|ERR_ALSAPCM\|ERR_AMIGAGUIDE\|ERR_ANIMDISK\|ERR_ANIMFRAME\|ERR_ANTIALIAS\|ERR_APPLET\|ERR_APPLETVERSION\|ERR_APPLICATION\|ERR_ARGS\|ERR_ARRAYDECLA\|ERR_ASSERTFAILED\|ERR_ATSUI\|ERR_AUDIOCONVERTER\|ERR_BACKFILL\|ERR_BAD8SVX\|ERR_BADBASE64\|ERR_BADBYTECODE\|ERR_BADCALLBACKRET\|ERR_BADCONSTANT\|ERR_BADDIMENSIONS\|ERR_BADENCODING\|ERR_BADINTEGER\|ERR_BADIP\|ERR_BADLAYERTYPE\|ERR_BADPLATFORM\|ERR_BADSIGNATURE\|ERR_BADUPVALUES\|ERR_BADURL\|ERR_BADWAVE\|ERR_BADYIELD\|ERR_BEGINREFRESH\|ERR_BGPICBUTTON\|ERR_BGPICPALETTE\|ERR_BGPICTYPE\|ERR_BITMAP\|ERR_BLKWOENDBLK\|ERR_BRACECLOSE\|ERR_BRACEOPEN\|ERR_BRACKETCLOSE\|ERR_BRACKETOPEN\|ERR_BRUSHLINK\|ERR_BRUSHSIZE\|ERR_BRUSHTYPE\|ERR_CACHEERROR\|ERR_CASECST\|ERR_CHANGEDIR\|ERR_CHANNELRANGE\|ERR_CHRCSTEMPTY\|ERR_CHRCSTLEN\|ERR_CLIPFORMAT\|ERR_CLIPOPEN\|ERR_CLIPREAD\|ERR_CLIPWRITE\|ERR_CLOSEDDISPLAY\|ERR_CLOSEFILE\|ERR_CMDASVAR\|ERR_CMPUNSUPPORTED\|ERR_COLORSPACE\|ERR_COMMENTSTRUCT\|ERR_COMMODITY\|ERR_COMPLEXEXPR\|ERR_COMPLEXPATTERN\|ERR_COMPLEXWHILE\|ERR_CONCAT\|ERR_CONFIG\|ERR_CONFIG2\|ERR_CONITEMS\|ERR_CONSOLEARG\|ERR_CONTEXTMENU\|ERR_COORDSRANGE\|ERR_COREFOUNDATION\|ERR_CORETEXT\|ERR_CREATEDIR\|ERR_CREATEDOCKY\|ERR_CREATEEVENT\|ERR_CREATEGC\|ERR_CREATEICON\|ERR_CREATEMENU\|ERR_CREATEPORT\|ERR_CREATESHORTCUT\|ERR_CSTDOUBLEDEF\|ERR_CTRLSTRUCT\|ERR_CYIELD\|ERR_DATATYPEALPHA\|ERR_DATATYPESAVE\|ERR_DATATYPESAVE2\|ERR_DBLENCODING\|ERR_DBPALETTE\|ERR_DBTRANSWIN\|ERR_DBVIDEOLAYER\|ERR_DDAUTOSCALE\|ERR_DDMOBILE\|ERR_DDRECVIDEO\|ERR_DEADRESUME\|ERR_DEFFONT\|ERR_DELETEFILE\|ERR_DEMO\|ERR_DEMO2\|ERR_DEMO3\|ERR_DEPTHMISMATCH\|ERR_DEPTHRANGE\|ERR_DESERIALIZE\|ERR_DIFFDEPTH\|ERR_DIFFENCODING\|ERR_DINPUT\|ERR_DIRECTSHOW\|ERR_DIRLOCK\|ERR_DISPLAYADAPTERSUPPORT\|ERR_DISPLAYDESKTOP\|ERR_DISPLAYDESKTOPPAL\|ERR_DISPLAYSIZE\|ERR_DISPMINIMIZED\|ERR_DLOPEN\|ERR_DOUBLEDECLA\|ERR_DOUBLEMENU\|ERR_DRAWPATH\|ERR_DSOUNDNOTIFY\|ERR_DSOUNDNOTIPOS\|ERR_DSOUNDPLAY\|ERR_ELSEIFAFTERELSE\|ERR_ELSETWICE\|ERR_ELSEWOIF\|ERR_EMPTYMENUTREE\|ERR_EMPTYOBJ\|ERR_EMPTYPATH\|ERR_EMPTYSCRIPT\|ERR_EMPTYTABLE\|ERR_ENDBLKWOBLK\|ERR_ENDDOUBLEBUFFER\|ERR_ENDFUNCWOFUNC\|ERR_ENDIFWOIF\|ERR_ENDSWCHWOSWCH\|ERR_ENDWITHWOWITH\|ERR_EQUALEXPECTED\|ERR_ERRORCALLED\|ERR_ESCREPLACE\|ERR_EVNTEXPCTED\|ERR_EXAMINE\|ERR_EXECUTE\|ERR_EXETYPE\|ERR_FGRABVIDSTATE\|ERR_FIELDINIT\|ERR_FILEEXIST\|ERR_FILEFORMAT\|ERR_FILENOTFOUND\|ERR_FILESIZE\|ERR_FINDACTIVITY\|ERR_FINDANIM\|ERR_FINDANIMSTREAM\|ERR_FINDAPPLICATION\|ERR_FINDARRAY\|ERR_FINDASYNCDRAW\|ERR_FINDASYNCOBJ\|ERR_FINDBGPIC\|ERR_FINDBRUSH\|ERR_FINDBUTTON\|ERR_FINDCLIENT\|ERR_FINDCLIPREGION\|ERR_FINDCST\|ERR_FINDDIR\|ERR_FINDDISPLAY\|ERR_FINDFILE\|ERR_FINDFONT\|ERR_FINDFONT2\|ERR_FINDICON\|ERR_FINDINTERVAL\|ERR_FINDLAYER\|ERR_FINDLAYERDATA\|ERR_FINDMEMBLK\|ERR_FINDMENU\|ERR_FINDMENUITEM\|ERR_FINDMONITOR\|ERR_FINDMOVE\|ERR_FINDMUSIC\|ERR_FINDOBJECTDATA\|ERR_FINDPALETTE\|ERR_FINDPATH\|ERR_FINDPLUGIN\|ERR_FINDPOINTER\|ERR_FINDPORT\|ERR_FINDSAMPLE\|ERR_FINDSELECTOR\|ERR_FINDSERIAL\|ERR_FINDSERVER\|ERR_FINDSPRITE\|ERR_FINDTEXTOBJECT\|ERR_FINDTIMEOUT\|ERR_FINDTIMER\|ERR_FINDUDPOBJECT\|ERR_FINDVIDEO\|ERR_FIRSTPREPROC\|ERR_FONTFORMAT\|ERR_FONTPATH\|ERR_FONTPATH2\|ERR_FORBIDMODAL\|ERR_FOREVERWOREPEAT\|ERR_FORWONEXT\|ERR_FRAMEGRABBER\|ERR_FREEABGPIC\|ERR_FREEADISPLAY\|ERR_FREECURPOINTER\|ERR_FT2\|ERR_FTPAUTH\|ERR_FTPERROR\|ERR_FULLSCREEN\|ERR_FUNCARGS\|ERR_FUNCDECLA\|ERR_FUNCEXPECTED\|ERR_FUNCJMP\|ERR_FUNCREMOVED\|ERR_FUNCTABLEARG\|ERR_FUNCWOENDFUNC\|ERR_GETDISKOBJ\|ERR_GETIFADDRS\|ERR_GETMONITORINFO\|ERR_GETSHORTCUT\|ERR_GRABSCREEN\|ERR_GROUPNAMEUSED\|ERR_GTK\|ERR_GUIGFX\|ERR_HEXPOINT\|ERR_HOSTNAME\|ERR_HTTPERROR\|ERR_HTTPTE\|ERR_HWBMCLOSEDISP\|ERR_HWBRUSH\|ERR_HWBRUSHFUNC\|ERR_HWDBFREEDISP\|ERR_ICONDIMS\|ERR_ICONENTRY\|ERR_ICONPARMS\|ERR_ICONSIZE\|ERR_ICONSTANDARD\|ERR_ICONVECTOR\|ERR_IFWOENDIF\|ERR_IMAGEERROR\|ERR_INCOMPATBRUSH\|ERR_INISYNTAX\|ERR_INITSERIAL\|ERR_INTERNAL\|ERR_INTERNAL1\|ERR_INTEXPECTED\|ERR_INVALIDDATE\|ERR_INVALIDUTF8\|ERR_INVALIDUTF8ARG\|ERR_INVCAPIDX\|ERR_INVINSERT\|ERR_INVNEXTKEY\|ERR_INVPATCAP\|ERR_INVREPLACE\|ERR_JAVA\|ERR_JAVAMETHOD\|ERR_JOYSTICK\|ERR_KEYFILE\|ERR_KEYNOTFOUND\|ERR_KEYWORD\|ERR_KICKSTART\|ERR_LABELDECLA\|ERR_LABELDOUBLE\|ERR_LABINFOR\|ERR_LABINFUNC\|ERR_LABINIF\|ERR_LABINWHILE\|ERR_LABMAINBLK\|ERR_LAYERRANGE\|ERR_LAYERSOFF\|ERR_LAYERSON\|ERR_LAYERSUPPORT\|ERR_LAYERSUPPORT2\|ERR_LAYERSWITCH\|ERR_LEGACYPTMOD\|ERR_LFSYNTAX\|ERR_LINKFONT\|ERR_LINKPLUGIN\|ERR_LOADFRAME\|ERR_LOADICON\|ERR_LOADPICTURE\|ERR_LOADPICTURE2\|ERR_LOADPLUGIN\|ERR_LOADSOUND\|ERR_LOADVIDEO\|ERR_LOCK\|ERR_LOCK2\|ERR_LOCKBMAP\|ERR_LOCKEDOBJ\|ERR_LOOPRANGE\|ERR_LOWFREQ\|ERR_MAGICKEY\|ERR_MALFORMPAT1\|ERR_MALFORMPAT2\|ERR_MASKNALPHA\|ERR_MAXLINES\|ERR_MAXLOCALS\|ERR_MAXPARAMS\|ERR_MAXUPVALS\|ERR_MEDIAFOUNDATION\|ERR_MEM\|ERR_MEMCODE\|ERR_MEMCST\|ERR_MEMRANGE\|ERR_MENUATTACHED\|ERR_MENUCOMPLEXITY\|ERR_MISSINGBRACKET\|ERR_MISSINGFIELD\|ERR_MISSINGOPBRACK\|ERR_MISSINGPARAMTR\|ERR_MISSINGSEPARTR\|ERR_MIXMUSMOD\|ERR_MOBILE\|ERR_MODIFYAANIM\|ERR_MODIFYABG\|ERR_MODIFYABGPIC\|ERR_MODIFYABR\|ERR_MODIFYPSMP\|ERR_MODIFYSPRITE\|ERR_MODIFYSPRITE2\|ERR_MONITORDIR\|ERR_MONITORFULLSCREEN\|ERR_MONITORRANGE\|ERR_MOVEFILE\|ERR_MSGPORT\|ERR_MULDISMOBILE\|ERR_MULTIBGPIC\|ERR_MULTIDISPLAYS\|ERR_MUSFMTSUPPORT\|ERR_MUSNOTPAUSED\|ERR_MUSNOTPLYNG\|ERR_MUSNOTPLYNG2\|ERR_MUSPAUSED\|ERR_MUSPLAYING\|ERR_NAMETOOLONG\|ERR_NAMEUSED\|ERR_NEEDAPPLICATION\|ERR_NEEDCOMPOSITE\|ERR_NEEDMORPHOS2\|ERR_NEEDOS41\|ERR_NEEDPALETTEIMAGE\|ERR_NEGCOORDS\|ERR_NEWHWPLUGIN\|ERR_NEXTWOFOR\|ERR_NOABSPATH\|ERR_NOACCESS\|ERR_NOALPHA\|ERR_NOANMLAYER\|ERR_NOAPPLET\|ERR_NOARGBVISUAL\|ERR_NOBLOCKBREAK\|ERR_NOCALLBACK\|ERR_NOCHANNEL\|ERR_NOCHAR\|ERR_NOCLIPREG\|ERR_NOCOLON\|ERR_NOCOMMA\|ERR_NOCOMPRESS\|ERR_NOCONSTANTS\|ERR_NOCONTEXTMENU\|ERR_NOCOORDCST\|ERR_NODIRPATTERN\|ERR_NODISLAYERS\|ERR_NODISPMODES\|ERR_NODOUBLEBUFFER\|ERR_NOFALLTHROUGH\|ERR_NOFILTERNAME\|ERR_NOFMBHANDLER\|ERR_NOFUNCTION\|ERR_NOHWFUNC\|ERR_NOJOYATPORT\|ERR_NOKEYWORDS\|ERR_NOLAYERS\|ERR_NOLOOP\|ERR_NOLOOPCONT\|ERR_NOMASKBRUSH\|ERR_NOMENU\|ERR_NOMIMEVIEWER\|ERR_NOMUSICCB\|ERR_NONE\|ERR_NONSUSPENDEDRESUME\|ERR_NOPALETTE\|ERR_NOPALETTEIMAGE\|ERR_NOPALETTEMODE\|ERR_NORETVAL\|ERR_NOREXX\|ERR_NOSPRITES\|ERR_NOTADIR\|ERR_NOTENOUGHPIXELS\|ERR_NOTIGER\|ERR_NOTPROTRACKER\|ERR_NOTRANSPARENCY\|ERR_NOTXTLAYER\|ERR_NUMBEREXPECTED\|ERR_NUMCALLBACK\|ERR_NUMCONCAT\|ERR_NUMEXPECTED\|ERR_NUMSTRCMP\|ERR_NUMTABLEARG\|ERR_OLDAPPLET\|ERR_OPENANIM\|ERR_OPENANIM2\|ERR_OPENAUDIO\|ERR_OPENFONT\|ERR_OPENLIB\|ERR_OPENSERIAL\|ERR_OPENSOCKET\|ERR_OPENSOUND\|ERR_OPENSOUND2\|ERR_OUTOFRANGE\|ERR_PAKFORMAT\|ERR_PALETTEFILL\|ERR_PALETTEMODE\|ERR_PALSCREEN\|ERR_PEERNAME\|ERR_PENRANGE\|ERR_PERCENTFORMAT\|ERR_PERCENTFORMATSTR\|ERR_PIPE\|ERR_PIXELFORMAT\|ERR_PIXELRANGE\|ERR_PLAYERCOMP\|ERR_PLAYVIDEO\|ERR_PLUGINARCH\|ERR_PLUGINDOUBLET\|ERR_PLUGINSUPPORT\|ERR_PLUGINSYMBOL\|ERR_PLUGINTYPE\|ERR_PLUGINVER\|ERR_POINTERFORMAT\|ERR_POINTERIMG\|ERR_PORTNOTAVAIL\|ERR_PREPROCSYM\|ERR_PROTMETATABLE\|ERR_PUBSCREEN\|ERR_QUICKTIME\|ERR_RADIOTOGGLEMENU\|ERR_RANDOMIZE\|ERR_READ\|ERR_READFILE\|ERR_READFUNC\|ERR_READONLY\|ERR_READRANGE\|ERR_READTABLE\|ERR_READVIDEOPIXELS\|ERR_RECVCLOSED\|ERR_RECVTIMEOUT\|ERR_RECVUNKNOWN\|ERR_REGCLASS\|ERR_REGISTRYREAD\|ERR_REGISTRYWRITE\|ERR_REMADLAYER\|ERR_RENAME\|ERR_RENDER\|ERR_RENDERADLAYER\|ERR_RENDERCALLBACK\|ERR_RENDERER\|ERR_REPEATWOUNTIL\|ERR_REQAUTH\|ERR_REQUIREFIELD\|ERR_REQUIREPLUGIN\|ERR_REQUIRETAGFMT\|ERR_RETWOGOSUB\|ERR_REVDWORD\|ERR_REWINDDIR\|ERR_REXXERR\|ERR_SATELLITE\|ERR_SATFREEDISP\|ERR_SAVEANIM\|ERR_SAVEICON\|ERR_SAVEIMAGE\|ERR_SAVEPNG\|ERR_SAVERALPHA\|ERR_SAVESAMPLE\|ERR_SCALEBGPIC\|ERR_SCREEN\|ERR_SCREENMODE\|ERR_SCREENSIZE\|ERR_SCRPIXFMT\|ERR_SEEK\|ERR_SEEKFILE\|ERR_SEEKFORMAT\|ERR_SEEKRANGE\|ERR_SELECTALPHACHANNEL\|ERR_SELECTANIM\|ERR_SELECTBG\|ERR_SELECTBGPIC\|ERR_SELECTBGPIC2\|ERR_SELECTBRUSH\|ERR_SELECTMASK\|ERR_SEMAPHORE\|ERR_SENDDATA\|ERR_SENDMESSAGE\|ERR_SENDTIMEOUT\|ERR_SENDUNKNOWN\|ERR_SERIALIO\|ERR_SERIALIZE\|ERR_SERIALIZETYPE\|ERR_SETADAPTER\|ERR_SETENV\|ERR_SETFILEATTR\|ERR_SETFILECOMMENT\|ERR_SETFILEDATE\|ERR_SETMENU\|ERR_SHORTIF\|ERR_SIGNAL\|ERR_SMODEALPHA\|ERR_SMPRANGE\|ERR_SOCKET\|ERR_SOCKNAME\|ERR_SOCKOPT\|ERR_SORTFUNC\|ERR_SPRITELINK\|ERR_SPRITEONSCREEN\|ERR_SPRITEONSCREEN2\|ERR_SQBRACKETCLOSE\|ERR_SQBRACKETOPEN\|ERR_STACK\|ERR_STAT\|ERR_STRCALLBACK\|ERR_STREAMASSAMPLE\|ERR_STREXPECTED\|ERR_STRINGCST\|ERR_STRINGEXPECTED\|ERR_STRORNUM\|ERR_STRTABLEARG\|ERR_STRTOOSHORT\|ERR_SURFACE\|ERR_SWCHWOENDSWCH\|ERR_SYNTAXERROR\|ERR_SYNTAXLEVELS\|ERR_SYSBUTTON\|ERR_SYSIMAGE\|ERR_SYSTOOOLD\|ERR_TABCALLBACK\|ERR_TABEXPECTED\|ERR_TABEXPECTED2\|ERR_TABEXPECTED3\|ERR_TABLEDECLA\|ERR_TABLEINDEX\|ERR_TABLEORNIL\|ERR_TABLEOVERFLOW\|ERR_TAGEXPECTED\|ERR_TASKSETUP\|ERR_TEXTARG\|ERR_TEXTCONVERT\|ERR_TEXTCONVERT2\|ERR_TEXTSYNTAX\|ERR_TEXTURE\|ERR_TFIMAGE\|ERR_TFVANIM\|ERR_TFVBGPICBRUSH\|ERR_TFVBRUSH\|ERR_TFVBRUSHBGPIC\|ERR_THREAD\|ERR_THREADEXPECTED\|ERR_TIMER\|ERR_TOKENEXPECTED\|ERR_TOOMANYARGS\|ERR_TOOMANYCAPTURES\|ERR_TOOSMALL2\|ERR_TRANSBGMOBILE\|ERR_TRANSBRUSH\|ERR_TRAYICON\|ERR_TRIALCOMPILE\|ERR_TRIALINCLUDE\|ERR_TRIALLIMIT\|ERR_TRIALSAVEVID\|ERR_UDEXPECTED\|ERR_UNBALANCEDPAT\|ERR_UNEXPECTEDEOF\|ERR_UNEXPECTEDSYM\|ERR_UNFINISHEDCAPTURE\|ERR_UNIMPLCMD\|ERR_UNKNOWN\|ERR_UNKNOWNANMOUT\|ERR_UNKNOWNATTR\|ERR_UNKNOWNCMD\|ERR_UNKNOWNCOND\|ERR_UNKNOWNFILTER\|ERR_UNKNOWNICNOUT\|ERR_UNKNOWNIMGOUT\|ERR_UNKNOWNMIMETYPE\|ERR_UNKNOWNMUSFMT\|ERR_UNKNOWNPALETTE\|ERR_UNKNOWNSEC\|ERR_UNKNOWNSEQ\|ERR_UNKNOWNSMPOUT\|ERR_UNKNOWNTAG\|ERR_UNKNUMFMT\|ERR_UNKPROTOCOL\|ERR_UNKTEXTFMT\|ERR_UNMPARENTHESES\|ERR_UNSETENV\|ERR_UNSUPPORTEDFEAT\|ERR_UNTERMINTDSTR\|ERR_UNTILWOREPEAT\|ERR_UPDATEICON\|ERR_UPLOADFORBIDDEN\|ERR_USERABORT\|ERR_VALUEEXPECTED\|ERR_VAREXPECTED\|ERR_VARLENGTH\|ERR_VARSYNTAX\|ERR_VECGFXPLUGIN\|ERR_VECTORANIM\|ERR_VECTORBRUSH\|ERR_VERSION\|ERR_VFONT\|ERR_VFONTTYPE\|ERR_VIDATTACHED\|ERR_VIDEOFRAME\|ERR_VIDEOINIT\|ERR_VIDEOLAYER\|ERR_VIDEOLAYERDRV\|ERR_VIDEOSTRATEGY\|ERR_VIDEOTRANS\|ERR_VIDLAYERFUNC\|ERR_VIDNOTPAUSED\|ERR_VIDNOTPLAYING\|ERR_VIDPAUSED\|ERR_VIDPLAYING\|ERR_VIDRECMULTI\|ERR_VIDRECTRANS\|ERR_VIDSTOPPED\|ERR_VISUALINFO\|ERR_VMMISMATCH\|ERR_WARPOS\|ERR_WENDWOWHILE\|ERR_WHILEWOWEND\|ERR_WINDOW\|ERR_WITHWOENDWITH\|ERR_WRITE\|ERR_WRITEFILE\|ERR_WRITEJPEG\|ERR_WRITEONLY\|ERR_WRONGCLIPREG\|ERR_WRONGCMDRECVIDEO\|ERR_WRONGDTYPE\|ERR_WRONGFLOAT\|ERR_WRONGHEX\|ERR_WRONGID\|ERR_WRONGOP\|ERR_WRONGOPCST\|ERR_WRONGSPRITESIZE\|ERR_WRONGUSAGE\|ERR_WRONGVSTRATEGY\|ERR_XCURSOR\|ERR_XDISPLAY\|ERR_XF86VIDMODEEXT\|ERR_XFIXES\|ERR_YIELD\|ERR_ZERODIVISION\|ERR_ZLIBDATA\|ERR_ZLIBIO\|ERR_ZLIBSTREAM\|ERR_ZLIBVERSION\|EVENTHANDLER\|FADE\|FASTMEMORY\|FASTSPEED\|FILE\|FILEATTR_ARCHIVE\|FILEATTR_DELETE_USR\|FILEATTR_EXECUTE_GRP\|FILEATTR_EXECUTE_OTH\|FILEATTR_EXECUTE_USR\|FILEATTR_HIDDEN\|FILEATTR_NORMAL\|FILEATTR_PURE\|FILEATTR_READ_GRP\|FILEATTR_READ_OTH\|FILEATTR_READ_USR\|FILEATTR_READONLY\|FILEATTR_SCRIPT\|FILEATTR_SYSTEM\|FILEATTR_WRITE_GRP\|FILEATTR_WRITE_OTH\|FILEATTR_WRITE_USR\|FILETYPE_ANIM\|FILETYPE_ICON\|FILETYPE_IMAGE\|FILETYPE_SOUND\|FILETYPE_VIDEO\|FILETYPEFLAGS_ALPHA\|FILETYPEFLAGS_FPS\|FILETYPEFLAGS_QUALITY\|FILETYPEFLAGS_SAVE\|FILLCOLOR\|FILLGRADIENT\|FILLNONE\|FILLRULEEVENODD\|FILLRULEWINDING\|FILLTEXTURE\|FLOAT\|FLOW_HARDWARE\|FLOW_OFF\|FLOW_XON_XOFF\|FONT\|FONTENGINE_INBUILT\|FONTENGINE_NATIVE\|FONTSLANT_ITALIC\|FONTSLANT_OBLIQUE\|FONTSLANT_ROMAN\|FONTTYPE_BITMAP\|FONTTYPE_COLOR\|FONTTYPE_VECTOR\|FONTWEIGHT_BLACK\|FONTWEIGHT_BOLD\|FONTWEIGHT_BOOK\|FONTWEIGHT_DEMIBOLD\|FONTWEIGHT_EXTRABLACK\|FONTWEIGHT_EXTRABOLD\|FONTWEIGHT_EXTRALIGHT\|FONTWEIGHT_HEAVY\|FONTWEIGHT_LIGHT\|FONTWEIGHT_MEDIUM\|FONTWEIGHT_NORMAL\|FONTWEIGHT_REGULAR\|FONTWEIGHT_SEMIBOLD\|FONTWEIGHT_THIN\|FONTWEIGHT_ULTRABLACK\|FONTWEIGHT_ULTRABOLD\|FONTWEIGHT_ULTRALIGHT\|FRAMEMODE_FULL\|FRAMEMODE_SINGLE\|FREESPACE\|FTPASCII\|FTPBINARY\|FUCHSIA\|FUNCTION\|GRAY\|GREEN\|HBLINDS128\|HBLINDS16\|HBLINDS32\|HBLINDS64\|HBLINDS8\|HCLOSECURTAIN\|HCLOSEGATE\|HEXNUMERICAL\|HFLIPCOIN\|HFLOWBOTTOM\|HFLOWTOP\|HIDEBRUSH\|HIDELAYER\|HKEY_CLASSES_ROOT\|HKEY_CURRENT_CONFIG\|HKEY_CURRENT_USER\|HKEY_LOCAL_MACHINE\|HKEY_USERS\|HLINES\|HLINES2\|HLOWFLIPCOIN\|HOLLYWOOD\|HOPENCURTAIN\|HOPENGATE\|HSPLIT\|HSTRANGEPUSH\|HSTRETCHCENTER\|HSTRIPES\|HSTRIPES16\|HSTRIPES2\|HSTRIPES32\|HSTRIPES4\|HSTRIPES64\|HSTRIPES8\|HW_64BIT\|HW_AMIGA\|HW_AMIGAOS3\|HW_AMIGAOS4\|HW_ANDROID\|HW_AROS\|HW_IOS\|HW_LINUX\|HW_LITTLE_ENDIAN\|HW_MACOS\|HW_MORPHOS\|HW_REVISION\|HW_VERSION\|HW_WARPOS\|HW_WINDOWS\|ICNFMT_HOLLYWOOD\|ICON\|IMAGETYPE_RASTER\|IMAGETYPE_VECTOR\|IMGFMT_BMP\|IMGFMT_GIF\|IMGFMT_ILBM\|IMGFMT_JPEG\|IMGFMT_NATIVE\|IMGFMT_PLUGIN\|IMGFMT_PNG\|IMGFMT_TIFF\|IMGFMT_UNKNOWN\|IMMERSIVE_LEANBACK\|IMMERSIVE_NONE\|IMMERSIVE_NORMAL\|IMMERSIVE_STICKY\|INACTIVEWINDOW\|INF\|INSERTBRUSH\|INTEGER\|INTERVAL\|IO_BUFFERED\|IO_FAKE64\|IO_LITTLEENDIAN\|IO_SIGNED\|IO_UNBUFFERED\|IO_UNSIGNED\|IPAUTO\|IPUNKNOWN\|IPV4\|IPV6\|ITALIC\|JOINBEVEL\|JOINMITER\|JOINROUND\|JOYDOWN\|JOYDOWNLEFT\|JOYDOWNRIGHT\|JOYLEFT\|JOYNODIR\|JOYRIGHT\|JOYUP\|JOYUPLEFT\|JOYUPRIGHT\|JUSTIFIED\|KEEPASPRAT\|KEEPPOSITION\|LANGUAGE_ABKHAZIAN\|LANGUAGE_AFAR\|LANGUAGE_AFRIKAANS\|LANGUAGE_AKAN\|LANGUAGE_ALBANIAN\|LANGUAGE_AMHARIC\|LANGUAGE_ARABIC\|LANGUAGE_ARAGONESE\|LANGUAGE_ARMENIAN\|LANGUAGE_ASSAMESE\|LANGUAGE_AVARIC\|LANGUAGE_AVESTAN\|LANGUAGE_AYMARA\|LANGUAGE_AZERBAIJANI\|LANGUAGE_BAMBARA\|LANGUAGE_BASHKIR\|LANGUAGE_BASQUE\|LANGUAGE_BELARUSIAN\|LANGUAGE_BENGALI\|LANGUAGE_BIHARI\|LANGUAGE_BISLAMA\|LANGUAGE_BOSNIAN\|LANGUAGE_BRETON\|LANGUAGE_BULGARIAN\|LANGUAGE_BURMESE\|LANGUAGE_CATALAN\|LANGUAGE_CENTRALKHMER\|LANGUAGE_CHAMORRO\|LANGUAGE_CHECHEN\|LANGUAGE_CHICHEWA\|LANGUAGE_CHINESE\|LANGUAGE_CHURCHSLAVIC\|LANGUAGE_CHUVASH\|LANGUAGE_CORNISH\|LANGUAGE_CORSICAN\|LANGUAGE_CREE\|LANGUAGE_CROATIAN\|LANGUAGE_CZECH\|LANGUAGE_DANISH\|LANGUAGE_DIVEHI\|LANGUAGE_DUTCH\|LANGUAGE_DZONGKHA\|LANGUAGE_ENGLISH\|LANGUAGE_ESPERANTO\|LANGUAGE_ESTONIAN\|LANGUAGE_EWE\|LANGUAGE_FAROESE\|LANGUAGE_FIJIAN\|LANGUAGE_FINNISH\|LANGUAGE_FRENCH\|LANGUAGE_FULAH\|LANGUAGE_GAELIC\|LANGUAGE_GALICIAN\|LANGUAGE_GANDA\|LANGUAGE_GEORGIAN\|LANGUAGE_GERMAN\|LANGUAGE_GREEK\|LANGUAGE_GREENLANDIC\|LANGUAGE_GUARANI\|LANGUAGE_GUJARATI\|LANGUAGE_HAITIAN\|LANGUAGE_HAUSA\|LANGUAGE_HEBREW\|LANGUAGE_HERERO\|LANGUAGE_HINDI\|LANGUAGE_HIRIMOTU\|LANGUAGE_HUNGARIAN\|LANGUAGE_ICELANDIC\|LANGUAGE_IDO\|LANGUAGE_IGBO\|LANGUAGE_INDONESIAN\|LANGUAGE_INTERLINGUA\|LANGUAGE_INTERLINGUE\|LANGUAGE_INUKTITUT\|LANGUAGE_INUPIAQ\|LANGUAGE_IRISH\|LANGUAGE_ITALIAN\|LANGUAGE_JAPANESE\|LANGUAGE_JAVANESE\|LANGUAGE_KANNADA\|LANGUAGE_KANURI\|LANGUAGE_KASHMIRI\|LANGUAGE_KAZAKH\|LANGUAGE_KIKUYU\|LANGUAGE_KINYARWANDA\|LANGUAGE_KIRGHIZ\|LANGUAGE_KOMI\|LANGUAGE_KONGO\|LANGUAGE_KOREAN\|LANGUAGE_KUANYAMA\|LANGUAGE_KURDISH\|LANGUAGE_LAO\|LANGUAGE_LATIN\|LANGUAGE_LATVIAN\|LANGUAGE_LIMBURGAN\|LANGUAGE_LINGALA\|LANGUAGE_LITHUANIAN\|LANGUAGE_LUBAKATANGA\|LANGUAGE_LUXEMBOURGISH\|LANGUAGE_MACEDONIAN\|LANGUAGE_MALAGASY\|LANGUAGE_MALAY\|LANGUAGE_MALAYALAM\|LANGUAGE_MALTESE\|LANGUAGE_MANX\|LANGUAGE_MAORI\|LANGUAGE_MARATHI\|LANGUAGE_MARSHALLESE\|LANGUAGE_MONGOLIAN\|LANGUAGE_NAURU\|LANGUAGE_NAVAJO\|LANGUAGE_NDONGA\|LANGUAGE_NEPALI\|LANGUAGE_NORTHERNSAMI\|LANGUAGE_NORTHNDEBELE\|LANGUAGE_NORWEGIAN\|LANGUAGE_NORWEGIANBOKMAL\|LANGUAGE_NORWEGIANNYNORSK\|LANGUAGE_OCCITAN\|LANGUAGE_OJIBWA\|LANGUAGE_ORIYA\|LANGUAGE_OROMO\|LANGUAGE_OSSETIAN\|LANGUAGE_PALI\|LANGUAGE_PANJABI\|LANGUAGE_PASHTO\|LANGUAGE_PERSIAN\|LANGUAGE_POLISH\|LANGUAGE_PORTUGUESE\|LANGUAGE_QUECHUA\|LANGUAGE_ROMANIAN\|LANGUAGE_ROMANSH\|LANGUAGE_RUNDI\|LANGUAGE_RUSSIAN\|LANGUAGE_SAMOAN\|LANGUAGE_SANGO\|LANGUAGE_SANSKRIT\|LANGUAGE_SARDINIAN\|LANGUAGE_SERBIAN\|LANGUAGE_SHONA\|LANGUAGE_SICHUANYI\|LANGUAGE_SINDHI\|LANGUAGE_SINHALA\|LANGUAGE_SLOVAK\|LANGUAGE_SLOVENIAN\|LANGUAGE_SOMALI\|LANGUAGE_SOUTHERNSOTHO\|LANGUAGE_SOUTHNDEBELE\|LANGUAGE_SPANISH\|LANGUAGE_SUNDANESE\|LANGUAGE_SWAHILI\|LANGUAGE_SWATI\|LANGUAGE_SWEDISH\|LANGUAGE_TAGALOG\|LANGUAGE_TAHITIAN\|LANGUAGE_TAJIK\|LANGUAGE_TAMIL\|LANGUAGE_TATAR\|LANGUAGE_TELUGU\|LANGUAGE_THAI\|LANGUAGE_TIBETAN\|LANGUAGE_TIGRINYA\|LANGUAGE_TONGA\|LANGUAGE_TSONGA\|LANGUAGE_TSWANA\|LANGUAGE_TURKISH\|LANGUAGE_TURKMEN\|LANGUAGE_TWI\|LANGUAGE_UIGHUR\|LANGUAGE_UKRAINIAN\|LANGUAGE_UNKNOWN\|LANGUAGE_URDU\|LANGUAGE_UZBEK\|LANGUAGE_VENDA\|LANGUAGE_VIETNAMESE\|LANGUAGE_WALLOON\|LANGUAGE_WELSH\|LANGUAGE_WESTERNFRISIAN\|LANGUAGE_WOLOF\|LANGUAGE_XHOSA\|LANGUAGE_YIDDISH\|LANGUAGE_YORUBA\|LANGUAGE_ZHUANG\|LANGUAGE_ZULU\|LAYER\|LAYER_VS_BOX\|LAYERBUTTON\|LEFT\|LEFTOUT\|LIGHTUSERDATA\|LIME\|LINE\|LINEAR\|LITTLEENDIAN\|LONG\|LOWERCURVE\|MAROON\|MASK\|MASKAND\|MASKINVISIBLE\|MASKOR\|MASKVANILLACOPY\|MASKVISIBLE\|MASKXOR\|MEMORY\|MENU\|MENUITEM_DISABLED\|MENUITEM_RADIO\|MENUITEM_SELECTED\|MENUITEM_TOGGLE\|MILLISECONDS\|MODE_READ\|MODE_READWRITE\|MODE_WRITE\|MODLALT\|MODLCOMMAND\|MODLCONTROL\|MODLSHIFT\|MODRALT\|MODRCOMMAND\|MODRCONTROL\|MODRSHIFT\|MONO16\|MONO8\|MONOSPACE\|MOVEFILE_COPY\|MOVEFILE_COPYFAILED\|MOVEFILE_DELETE\|MOVEFILE_DELETEFAILED\|MOVEFILE_UNPROTECT\|MOVELIST\|MOVEWINDOW\|MUSIC\|NAN\|NATIVE\|NATIVEENDIAN\|NAVY\|NETWORKCONNECTION\|NETWORKSERVER\|NETWORKUDP\|NEXTFRAME\|NEXTFRAME2\|NIL\|NOCOLOR\|NONE\|NOPEN\|NORMAL\|NORMALSPEED\|NOTRANSPARENCY\|NUMBER\|NUMERICAL\|OLIVE\|ONBUTTONCLICK\|ONBUTTONCLICKALL\|ONBUTTONOVER\|ONBUTTONOVERALL\|ONBUTTONRIGHTCLICK\|ONBUTTONRIGHTCLICKALL\|ONKEYDOWN\|ONKEYDOWNALL\|ORIENTATION_LANDSCAPE\|ORIENTATION_LANDSCAPEREV\|ORIENTATION_NONE\|ORIENTATION_PORTRAIT\|ORIENTATION_PORTRAITREV\|PALETTE\|PALETTE_AGA\|PALETTE_CGA\|PALETTE_DEFAULT\|PALETTE_EGA\|PALETTE_GRAY128\|PALETTE_GRAY16\|PALETTE_GRAY256\|PALETTE_GRAY32\|PALETTE_GRAY4\|PALETTE_GRAY64\|PALETTE_GRAY8\|PALETTE_MACINTOSH\|PALETTE_MONOCHROME\|PALETTE_OCS\|PALETTE_WINDOWS\|PALETTE_WORKBENCH\|PALETTEMODE_PEN\|PALETTEMODE_REMAP\|PARITY_EVEN\|PARITY_NONE\|PARITY_ODD\|PERMREQ_READEXTERNAL\|PERMREQ_WRITEEXTERNAL\|PI\|PIXELZOOM1\|PIXELZOOM2\|PLOT\|PLUGINCAPS_ANIM\|PLUGINCAPS_AUDIOADAPTER\|PLUGINCAPS_CONVERT\|PLUGINCAPS_DIRADAPTER\|PLUGINCAPS_DISPLAYADAPTER\|PLUGINCAPS_EXTENSION\|PLUGINCAPS_FILEADAPTER\|PLUGINCAPS_ICON\|PLUGINCAPS_IMAGE\|PLUGINCAPS_IPCADAPTER\|PLUGINCAPS_LIBRARY\|PLUGINCAPS_NETWORKADAPTER\|PLUGINCAPS_REQUESTERADAPTER\|PLUGINCAPS_REQUIRE\|PLUGINCAPS_SAVEANIM\|PLUGINCAPS_SAVEICON\|PLUGINCAPS_SAVEIMAGE\|PLUGINCAPS_SAVESAMPLE\|PLUGINCAPS_SERIALIZE\|PLUGINCAPS_SOUND\|PLUGINCAPS_TIMERADAPTER\|PLUGINCAPS_VECTOR\|PLUGINCAPS_VIDEO\|POINTER\|POLYGON\|PRGTYPE_APPLET\|PRGTYPE_PROGRAM\|PRGTYPE_SCRIPT\|PRINT\|PURPLE\|PUSHBOTTOM\|PUSHLEFT\|PUSHRIGHT\|PUSHTOP\|PUZZLE\|QUADRECT\|QUARTERS\|RADIAL\|RANDOMEFFECT\|RANDOMPARAMETER\|RECEIVEALL\|RECEIVEBYTES\|RECEIVEDATA_PACKET\|RECEIVELINE\|RECTBACKCENTER\|RECTBACKEAST\|RECTBACKNORTH\|RECTBACKNORTHEAST\|RECTBACKNORTHWEST\|RECTBACKSOUTH\|RECTBACKSOUTHEAST\|RECTBACKSOUTHWEST\|RECTBACKWEST\|RECTCENTER\|RECTEAST\|RECTNORTH\|RECTNORTHEAST\|RECTNORTHWEST\|RECTSOUTH\|RECTSOUTHEAST\|RECTSOUTHWEST\|RECTWEST\|RED\|REMOVELAYER\|REQ_CAMERA\|REQ_GALLERY\|REQ_HIDEICONS\|REQ_MULTISELECT\|REQ_NORMAL\|REQ_SAVEMODE\|REQICON_ERROR\|REQICON_INFORMATION\|REQICON_NONE\|REQICON_QUESTION\|REQICON_WARNING\|REVEALBOTTOM\|REVEALLEFT\|REVEALRIGHT\|REVEALTOP\|RIGHT\|RIGHTOUT\|ROLLLEFT\|ROLLTOP\|RTS_OFF\|RTS_ON\|SAMPLE\|SANS\|SCALEMODE_AUTO\|SCALEMODE_LAYER\|SCALEMODE_NONE\|SCROLLBOTTOM\|SCROLLEAST\|SCROLLLEFT\|SCROLLNORTH\|SCROLLNORTHEAST\|SCROLLNORTHWEST\|SCROLLRIGHT\|SCROLLSOUTH\|SCROLLSOUTHEAST\|SCROLLSOUTHWEST\|SCROLLTOP\|SCROLLWEST\|SECONDS\|SEEK_BEGINNING\|SEEK_CURRENT\|SEEK_END\|SELMODE_COMBO\|SELMODE_LAYERS\|SELMODE_NORMAL\|SERIAL\|SERIF\|SERVER\|SHADOW\|SHAPE\|SHDWEAST\|SHDWNORTH\|SHDWNORTHEAST\|SHDWNORTHWEST\|SHDWSOUTH\|SHDWSOUTHEAST\|SHDWSOUTHWEST\|SHDWWEST\|SHORT\|SILVER\|SIMPLEBUTTON\|SINE\|SIZEWINDOW\|SLIDEBOTTOM\|SLIDELEFT\|SLIDERIGHT\|SLIDETOP\|SLOWSPEED\|SMOOTHOUT\|SMPFMT_WAVE\|SNAPDESKTOP\|SNAPDISPLAY\|SNAPWINDOW\|SPIRAL\|SPRITE\|SPRITE_VS_BOX\|SPRITE_VS_BRUSH\|STAR\|STDERR\|STDIN\|STDOUT\|STDPTR_BUSY\|STDPTR_CUSTOM\|STDPTR_SYSTEM\|STEREO16\|STEREO8\|STOP_1\|STOP_2\|STRETCHBOTTOM\|STRETCHLEFT\|STRETCHRIGHT\|STRETCHTOP\|STRING\|STRUDEL\|SUN\|SWISS\|TABLE\|TEAL\|TEXTOBJECT\|TEXTOUT\|THREAD\|TICKS\|TIMEOUT\|TIMER\|TOP\|TOPOUT\|TRUETYPE_DEFAULT\|TURNDOWNBOTTOM\|TURNDOWNLEFT\|TURNDOWNRIGHT\|TURNDOWNTOP\|UDPCLIENT\|UDPNONE\|UDPOBJECT\|UDPSERVER\|UNDERLINED\|UNDO\|UPLOADFILE_RESPONSE\|UPLOADFILE_STATUS\|UPNDOWN\|UPPERCURVE\|USEDSPACE\|USELAYERPOSITION\|USERDATA\|VANILLACOPY\|VBLINDS128\|VBLINDS16\|VBLINDS32\|VBLINDS64\|VBLINDS8\|VCLOSECURTAIN\|VCLOSEGATE\|VECTORPATH\|VFLIPCOIN\|VFLOWLEFT\|VFLOWRIGHT\|VIDDRV_HOLLYWOOD\|VIDDRV_OS\|VIDEO\|VIEWMODE_DATE\|VIEWMODE_ICONS\|VIEWMODE_NAME\|VIEWMODE_NONE\|VIEWMODE_SIZE\|VIEWMODE_TYPE\|VLINES\|VLINES2\|VLOWFLIPCOIN\|VOID\|VOPENCURTAIN\|VOPENGATE\|VSPLIT\|VSTRANGEPUSH\|VSTRETCHCENTER\|VSTRIPES\|VSTRIPES16\|VSTRIPES2\|VSTRIPES32\|VSTRIPES4\|VSTRIPES64\|VSTRIPES8\|WALLPAPERLEFT\|WALLPAPERTOP\|WATER1\|WATER2\|WATER3\|WATER4\|WHITE\|WORD\|YELLOW\|ZOOMCENTER\|ZOOMEAST\|ZOOMIN\|ZOOMNORTH\|ZOOMNORTHEAST\|ZOOMNORTHWEST\|ZOOMOUT\|ZOOMSOUTH\|ZOOMSOUTHEAST\|ZOOMSOUTHWEST\|ZOOMWEST\)\>" " Hollywood Functions -syn keyword hwFunction LowerStr UpperStr Val StrStr UnrightStr UnleftStr Chr MidStr RightStr LeftStr FindStr AddStr HexStr Asc StrLen ReplaceStr BinStr SplitStr PadNum StrToArray TrimStr ToString ToNumber UnmidStr CountStr InsertStr RepeatStr MD5Str CRC32Str FormatStr PatternFindStr PatternReplaceStr Eval PatternFindStrDirect PatternFindStrShort ArrayToStr Base64Str ToUserData ByteOffset CharOffset CharWidth ValidateStr ConvertStr ReverseStr ByteLen IsAlNum IsAlpha IsCntrl IsDigit IsGraph IsLower IsPrint IsPunct IsSpace IsUpper IsXDigit CompareStr ByteAsc ByteChr StartsWith EndsWith StripStr EmptyStr ByteVal ByteStrStr Abs Sin Cos Tan ASin ACos ATan ATan2 Ceil Floor Mod FrExp LdExp Sqrt Min Max Log Ld Ln Exp Deg Pow Rad Rnd RndF Add Sub Div Mul Round Int Frac Shr Shl Rt Wrap Limit BitSet BitTest BitClear BitXor BitComplement Sgn Sar Ror Rol Cast Hypot EndianSwap RndStrong Red Green Blue RGB ARGB MovePointer HidePointer SetPointer ShowPointer GetAttribute GetPen VWait SetFPSLimit GetFPSLimit IsPicture GetRealColor SaveSnapshot MixRGB CreateClipRegion SetClipRegion FreeClipRegion CreatePointer FreePointer AsyncDrawFrame CancelAsyncDraw FinishAsyncDraw DumpVideoTime GetRandomColor SetDrawTagsDefault BeginRefresh EndRefresh Intersection Box Plot Ellipse Line Circle Polygon SetFillStyle ReadPixel Cls Arc SetFormStyle SetLineWidth GetFillStyle GetFormStyle GetLineWidth MoveBrush MoveAnim MoveTextObject MoveLayer MoveSprite OpenFile Eof ReadChr ReadLine ReadString Seek WriteChr WriteLine WriteString Exists FileSize PathPart FilePart MakeDirectory GetVolumeInfo DeleteFile Execute Run ChangeDirectory GetVolumeName CloseFile ReadDirectory FullPath CopyFile Rename IsDirectory CRC32 WriteShort WriteInt WriteFloat ReadShort ReadInt ReadFloat FilePos MatchPattern FlushFile SetIOMode GetFileAttributes SetFileAttributes GetTempFileName FileLength CompressFile DecompressFile OpenDirectory CloseDirectory NextDirectoryEntry WriteFunction ReadFunction DefineVirtualFile ReadTable WriteTable GetCurrentDirectory ApplyPatch DefineVirtualFileFromString UndefineVirtualStringFile FileToString StringToFile GetEnv SetEnv UnsetEnv MD5 FileLines FileAttributes GetAsset ReadByte WriteByte ReadBytes WriteBytes DirectoryItems MoveFile UseCarriageReturn HaveVolume GetDirectoryEntry RewindDirectory CountDirectoryEntries MonitorDirectory WaitLeftMouse WaitRightMouse WaitKeyDown IsKeyDown WhileRightMouseDown WhileMouseDown WhileKeyDown IsLeftMouse IsRightMouse BreakWhileMouseOn SetEventTimeout GetEventCode LeftMouseQuit EscapeQuit CtrlCQuit EnableEvent DisableEvent RemoveButton RemoveKeyDown ModifyButton ModifyKeyDown WhileMouseOn CreateButton CreateKeyDown FreeEventCache ClearEvents CheckEvent WaitEvent MouseX MouseY MakeButton DeleteButton DisableButton EnableButton InstallEventHandler SetInterval SetTimeout ClearInterval ClearTimeout ChangeInterval DumpButtons WaitMidMouse IsMidMouse ResetKeyStates JoyDir JoyFire CountJoysticks BreakEventHandler CheckEvents CreatePort SendMessage ShowKeyboard HideKeyboard Wait OpenCatalog CloseCatalog GetCatalogString GetDate GetTime GetWeekday GetDateNum GetTimer PauseTimer ResumeTimer StartTimer StopTimer SystemRequest GetMemoryInfo End GetErrorName Sort DebugStr DebugVal DebugPrint ExitOnError GetLastError DebugOutput GetType IIf InsertItem RemoveItem ListItems StringRequest Unpack SetMetaTable GetMetaTable RawEqual RawGet RawSet GCInfo CollectGarbage Error WaitTimer FileRequest PathRequest IPairs Pairs NextItem GetVersion GetCommandLine GetProgramInfo ResetTimer GetConstant SetClipboard GetClipboard PeekClipboard ClearClipboard CompareDates OpenURL CopyTable FontRequest ListRequest ColorRequest GetSystemLanguage GetSystemCountry DebugPrompt GetFileArgument Assert ForEach ForEachI Concat GetObjectType GetObjectData SetObjectData ClearObjectData CopyObjectData HaveObjectData GetObjects RaiseOnError HaveObject GetPlugins IsNil HaveItem DisablePlugin EnablePlugin LoadPlugin HavePlugin GetSystemInfo LegacyControl DisableLineHook EnableLineHook IncreasePointer DecreasePointer GetApplicationInfo DebugPrintNR TableItems IsTableEmpty LoadPrefs SavePrefs DeletePrefs IsUnicode GetTimestamp GetCountryInfo GetLanguageInfo GetTimeZone TimestampToDate DateToTimestamp ParseDate MakeDate DateToUTC UTCToDate ValidateDate Pack ConsolePrint ConsolePrintNR ConsolePrompt Beep ShowNotification GetIconProperties SetIconProperties SetWBIcon OpenAmigaGuide CloseAmigaGuide ShowRinghioMessage GetApplicationList SendApplicationMessage ChangeApplicationIcon ReadRegistryKey WriteRegistryKey CreateShortcut SetTrayIcon GetShortcutPath ShowToast PerformSelector OpenResourceMonitor CloseResourceMonitor ImageRequest PermissionRequest Vibrate CallJavaMethod Undo EnableLayers DisableLayers SwapLayers InsertLayer ShowLayer HideLayer RemoveLayer SetLayerTransparency SetLayerLight SetLayerTint AddMove ClearMove DoMove FreeLayers NextFrame SetLayerName Collision DumpLayers ScaleLayer RotateLayer SetLayerStyle GetLayerStyle TransformLayer SetLayerAnchor LayerExists SetLayerZPos TranslateLayer SelectLayer CreateLayer ModifyLayerFrames GetLayerAtPos SetLayerShadow SetLayerFilter SetLayerBorder LayerToFront LayerToBack PlayLayer StopLayer PauseLayer ResumeLayer SeekLayer SetLayerVolume RemoveLayers SetFont SetFontColor TextHeight TextWidth ResetTabs AddTab Locate SetMargins SetFontStyle Print NPrint TextOut CreateTextObject DisplayTextObject FreeTextObject InKeyStr TextExtent ScaleTextObject CopyTextObject RotateTextObject OpenFont CloseFont UseFont GetAvailableFonts FreeGlyphCache SetDefaultEncoding AddFontPath GetKerningPair GetDefaultEncoding GetFontColor GetFontStyle PlayAnim FreeAnim ScaleAnim PlayAnimDisk LoadAnimFrame LoadAnim IsAnim CreateAnim CopyAnim GetAnimFrame DisplayAnimFrame ModifyAnimFrames SelectAnim SaveAnim BeginAnimStream WriteAnimFrame FinishAnimStream SetAnimFrameDelay ChangeDisplaySize SetTitle MoveDisplay HideDisplay ShowDisplay SetDisplayAttributes CreateDisplay FreeDisplay OpenDisplay CloseDisplay SelectDisplay ActivateDisplay ChangeDisplayMode GetDisplayModes GetMonitors CreateMenu FreeMenu SelectMenuItem DeselectMenuItem IsMenuItemSelected DisableMenuItem EnableMenuItem IsMenuItemDisabled GetPubScreens ShowScreen HideScreen SetScreenTitle GetFrontScreen SetSubtitle FreeSample LoadSample IsSound GetPatternPosition GetSongPosition PlaySubsong WaitPatternPosition WaitSongPosition WaitSampleEnd IsSamplePlaying SetVolume SetPitch SetPanning StopSample PlaySample SetMasterVolume IsSample CreateSample OpenMusic CloseMusic PlayMusic StopMusic PauseMusic ResumeMusic SeekMusic SetMusicVolume IsMusic IsMusicPlaying PlayModule StopModule PauseModule ResumeModule LoadModule FreeModule IsModule SaveSample GetSampleData CreateMusic FillMusicBuffer MixSample CopySample InsertSample FlushMusicBuffer IsChannelPlaying HaveFreeChannel StopChannel GetChannels SetChannelVolume OpenAudio CloseAudio ForceSound CreateBrush DisplayBrush DisplayBrushPart ScaleBrush FreeBrush TintBrush ReplaceColors InvertBrush FlipBrush MixBrush BrushToGray RotateBrush GetBrushLink SelectBrush CopyBrush SetBrushTransparency LoadBrush SelectMask SetMaskMode SaveBrush SelectAlphaChannel SetAlphaIntensity DeleteAlphaChannel CropBrush InvertMask InvertAlphaChannel FloodFill DeleteMask BeginDoubleBuffer EndDoubleBuffer Flip ConvertToBrush GrabDesktop TransformBrush TrimBrush RasterizeBrush BlurBrush EmbossBrush EdgeBrush SharpenBrush SolarizeBrush GammaBrush ContrastBrush ModulateBrush SepiaToneBrush CharcoalBrush SwirlBrush PixelateBrush BrushToMonochrome ChangeBrushTransparency CreateShadowBrush CreateBorderBrush WaterRippleBrush OilPaintBrush BrushToRGBArray RGBArrayToBrush PerspectiveDistortBrush ArcDistortBrush PolarDistortBrush BarrelDistortBrush CreateGradientBrush CreateTexturedBrush ReadBrushPixel WriteBrushPixel QuantizeBrush ReduceAlphaChannel IsBrushEmpty DisplayBGPic DisplayBGPicPart ScaleBGPic CreateGradientBGPic CreateRainbowBGPic CreateTexturedBGPic BrushToBGPic BGPicToBrush CreateBGPic FreeBGPic LoadBGPic SelectBGPic EndSelect CopyBGPic DisplayBrushFX DisplayTextObjectFX DisplayTransitionFX DisplayBGPicPartFX UndoFX ShowLayerFX HideLayerFX RemoveLayerFX GetRandomFX ClearScreen CreateSprite DisplaySprite RemoveSprite FreeSprite LoadSprite ScaleSprite CopySprite FlipSprite RemoveSprites SetSpriteZPos AllocMem FreeMem Poke Peek FillMem CopyMem ReadMem WriteMem DumpMem MemToTable TableToMem GetMemPointer GetMemString AllocMemFromPointer AllocMemFromVirtualFile MoveTo LineTo CurveTo RelMoveTo RelLineTo RelCurveTo DrawPath StartPath StartSubPath ClosePath AddArcToPath AddCircleToPath AddEllipseToPath AddBoxToPath SetLineJoin SetLineCap SetDash SetFillRule FreePath ClearPath IsPathEmpty GetCurrentPoint GetPathExtents CopyPath AppendPath AddTextToPath TranslatePath NormalizePath ForcePathUse SetVectorEngine PathItems PathToBrush GetFillRule GetLineJoin GetLineCap GetDash SetMiterLimit GetMiterLimit CreateIcon FreeIcon LoadIcon SaveIcon AddIconImage RemoveIconImage SetStandardIconImage OpenSerialPort CloseSerialPort ReadSerialData WriteSerialData FlushSerialPort SetBaudRate SetStopBits SetDataBits SetParity SetFlowControl SetDTR SetRTS GetBaudRate GetStopBits GetDataBits GetParity GetFlowControl GetDTR GetRTS PollSerialQueue ClearSerialQueue OpenConnection CloseConnection CreateServer CloseServer SendData ReceiveData GetConnectionIP GetConnectionPort GetHostName ToIP ToHostName DownloadFile UploadFile SetNetworkTimeout GetLocalIP GetLocalPort CreateUDPObject CloseUDPObject SendUDPData ReceiveUDPData IsOnline GetMACAddress GetConnectionProtocol GetLocalProtocol SetNetworkProtocol ResolveHostName OpenVideo CloseVideo PlayVideo StopVideo PauseVideo ResumeVideo SeekVideo IsVideo SetVideoSize SetVideoPosition SetVideoVolume GetVideoFrame IsVideoPlaying ForceVideoMode ForceVideoDriver DumpVideo DisplayVideoFrame SendRexxCommand RunRexxScript CreateRexxPort +syn keyword hwFunction ACos ARGB ASin ATan ATan2 Abs ActivateDisplay Add AddArcToPath AddBoxToPath AddCircleToPath AddEllipseToPath AddFontPath AddIconImage AddMove AddStr AddTab AddTextToPath AllocMem AllocMemFromPointer AllocMemFromVirtualFile AppendPath ApplyPatch Arc ArcDistortBrush ArrayToStr Asc Assert AsyncDrawFrame BGPicToBrush BarrelDistortBrush Base64Str Beep BeginAnimStream BeginDoubleBuffer BeginRefresh BinStr BitClear BitComplement BitSet BitTest BitXor Blue BlurBrush Box BreakEventHandler BreakWhileMouseOn BrushToBGPic BrushToGray BrushToMonochrome BrushToPenArray BrushToRGBArray ByteAsc ByteChr ByteLen ByteOffset ByteStrStr ByteVal CRC32 CRC32Str CallJavaMethod CancelAsyncDraw CancelAsyncOperation CanonizePath Cast Ceil ChangeApplicationIcon ChangeBrushTransparency ChangeDirectory ChangeDisplayMode ChangeDisplaySize ChangeInterval CharOffset CharWidth CharcoalBrush CheckEvent CheckEvents Chr Circle ClearClipboard ClearEvents ClearInterval ClearMove ClearObjectData ClearPath ClearScreen ClearSerialQueue ClearTimeout CloseAmigaGuide CloseAnim CloseAudio CloseCatalog CloseConnection CloseDirectory CloseDisplay CloseFile CloseFont CloseMusic ClosePath CloseResourceMonitor CloseSerialPort CloseServer CloseUDPObject CloseVideo Cls CollectGarbage Collision ColorRequest CompareDates CompareStr CompressFile Concat ConsolePrint ConsolePrintNR ConsolePrompt ContinueAsyncOperation ContrastBrush ContrastPalette ConvertStr ConvertToBrush CopyAnim CopyBGPic CopyBrush CopyFile CopyMem CopyObjectData CopyPalette CopyPath CopyPens CopySample CopySprite CopyTable CopyTextObject Cos CountDirectoryEntries CountJoysticks CountStr CreateAnim CreateBGPic CreateBorderBrush CreateBrush CreateButton CreateClipRegion CreateCoroutine CreateDisplay CreateGradientBGPic CreateGradientBrush CreateIcon CreateKeyDown CreateLayer CreateList CreateMenu CreateMusic CreatePalette CreatePointer CreatePort CreateRainbowBGPic CreateRexxPort CreateSample CreateServer CreateShadowBrush CreateShortcut CreateSprite CreateTextObject CreateTexturedBGPic CreateTexturedBrush CreateUDPObject CropBrush CtrlCQuit CurveTo CyclePalette DateToTimestamp DateToUTC DebugOutput DebugPrint DebugPrintNR DebugPrompt DebugStr DebugVal DecompressFile DecreasePointer DefineVirtualFile DefineVirtualFileFromString Deg DeleteAlphaChannel DeleteButton DeleteFile DeleteMask DeletePrefs DeselectMenuItem DeserializeTable DirectoryItems DisableButton DisableEvent DisableLayers DisableLineHook DisableMenuItem DisablePlugin DisableVWait DisplayAnimFrame DisplayBGPic DisplayBGPicPart DisplayBGPicPartFX DisplayBrush DisplayBrushFX DisplayBrushPart DisplaySprite DisplayTextObject DisplayTextObjectFX DisplayTransitionFX DisplayVideoFrame Div DoMove DownloadFile DrawPath DumpButtons DumpLayers DumpMem DumpVideo DumpVideoTime EdgeBrush Ellipse EmbossBrush EmptyStr EnableButton EnableEvent EnableLayers EnableLineHook EnableMenuItem EnablePlugin EnableVWait End EndDoubleBuffer EndRefresh EndSelect EndianSwap EndsWith Eof Error EscapeQuit Eval Execute Exists ExitOnError Exp ExtractPalette FileAttributes FileLength FileLines FilePart FilePos FileRequest FileSize FileToString FillMem FillMusicBuffer FindStr FinishAnimStream FinishAsyncDraw Flip FlipBrush FlipSprite FloodFill Floor FlushFile FlushMusicBuffer FlushSerialPort FontRequest ForEach ForEachI ForcePathUse ForceSound ForceVideoDriver ForceVideoMode FormatStr FrExp Frac FreeAnim FreeBGPic FreeBrush FreeClipRegion FreeDisplay FreeEventCache FreeGlyphCache FreeIcon FreeLayers FreeMem FreeMenu FreeModule FreePalette FreePath FreePointer FreeSample FreeSprite FreeTextObject FullPath GCInfo GammaBrush GammaPalette GetAnimFrame GetApplicationInfo GetApplicationList GetAsset GetAttribute GetAvailableFonts GetBaudRate GetBestPen GetBrushLink GetBrushPen GetBulletColor GetCatalogString GetChannels GetCharMaps GetClipboard GetCommandLine GetConnectionIP GetConnectionPort GetConnectionProtocol GetConstant GetCoroutineStatus GetCountryInfo GetCurrentDirectory GetCurrentPoint GetDTR GetDash GetDataBits GetDate GetDateNum GetDefaultEncoding GetDirectoryEntry GetDisplayModes GetEnv GetErrorName GetEventCode GetFPSLimit GetFileArgument GetFileAttributes GetFillRule GetFillStyle GetFlowControl GetFontColor GetFontStyle GetFormStyle GetFrontScreen GetHostName GetIconProperties GetItem GetKerningPair GetLanguageInfo GetLastError GetLayerAtPos GetLayerPen GetLayerStyle GetLineCap GetLineJoin GetLineWidth GetLocalIP GetLocalInterfaces GetLocalPort GetLocalProtocol GetMACAddress GetMemPointer GetMemString GetMemoryInfo GetMetaTable GetMiterLimit GetMonitors GetObjectData GetObjectType GetObjects GetPalettePen GetParity GetPathExtents GetPatternPosition GetPen GetPlugins GetProgramDirectory GetProgramInfo GetPubScreens GetRTS GetRandomColor GetRandomFX GetRealColor GetSampleData GetShortcutPath GetSongPosition GetStartDirectory GetStopBits GetSystemCountry GetSystemInfo GetSystemLanguage GetTempFileName GetTime GetTimeZone GetTimer GetTimestamp GetType GetVersion GetVideoFrame GetVolumeInfo GetVolumeName GetWeekday GrabDesktop Green HaveFreeChannel HaveItem HaveObject HaveObjectData HavePlugin HaveVolume HexStr HideDisplay HideKeyboard HideLayer HideLayerFX HidePointer HideScreen Hypot IIf IPairs IgnoreCase ImageRequest InKeyStr IncreasePointer InsertItem InsertLayer InsertSample InsertStr InstallEventHandler Int Intersection InvertAlphaChannel InvertBrush InvertMask InvertPalette IsAbsolutePath IsAlNum IsAlpha IsAnim IsBrushEmpty IsChannelPlaying IsCntrl IsDigit IsDirectory IsFinite IsGraph IsInf IsKeyDown IsLeftMouse IsLower IsMenuItemDisabled IsMenuItemSelected IsMidMouse IsModule IsMusic IsMusicPlaying IsNan IsNil IsOnline IsPathEmpty IsPicture IsPrint IsPunct IsRightMouse IsSample IsSamplePlaying IsSound IsSpace IsTableEmpty IsUnicode IsUpper IsVideo IsVideoPlaying IsXDigit JoyDir JoyFire LayerExists LayerToBack LayerToFront Ld LdExp LeftMouseQuit LeftStr LegacyControl Limit Line LineTo ListItems ListRequest Ln LoadAnim LoadAnimFrame LoadBGPic LoadBrush LoadIcon LoadModule LoadPalette LoadPlugin LoadPrefs LoadSample LoadSprite Locate Log LowerStr MD5 MD5Str MakeButton MakeDate MakeDirectory MakeHostPath MatchPattern Max MemToTable MidStr Min MixBrush MixRGB MixSample Mod ModifyAnimFrames ModifyButton ModifyKeyDown ModifyLayerFrames ModulateBrush ModulatePalette MonitorDirectory MouseX MouseY MoveAnim MoveBrush MoveDisplay MoveFile MoveLayer MovePointer MoveSprite MoveTextObject MoveTo Mul NPrint NextDirectoryEntry NextFrame NextItem NormalizePath OilPaintBrush OpenAmigaGuide OpenAnim OpenAudio OpenCatalog OpenConnection OpenDirectory OpenDisplay OpenFile OpenFont OpenMusic OpenResourceMonitor OpenSerialPort OpenURL OpenVideo Pack PadNum Pairs PaletteToGray ParseDate PathItems PathPart PathRequest PathToBrush PatternFindStr PatternFindStrDirect PatternFindStrShort PatternReplaceStr PauseLayer PauseModule PauseMusic PauseTimer PauseVideo Peek PeekClipboard PenArrayToBrush PerformSelector PermissionRequest PerspectiveDistortBrush Pi PixelateBrush PlayAnim PlayAnimDisk PlayLayer PlayModule PlayMusic PlaySample PlaySubsong PlayVideo Plot Poke PolarDistortBrush PollSerialQueue Polygon Pow Print QuantizeBrush RGB RGBArrayToBrush Rad RaiseOnError RasterizeBrush RawDiv RawEqual RawGet RawSet ReadBrushPixel ReadByte ReadBytes ReadChr ReadDirectory ReadFloat ReadFunction ReadInt ReadLine ReadMem ReadPen ReadPixel ReadRegistryKey ReadSerialData ReadShort ReadString ReadTable ReceiveData ReceiveUDPData Red ReduceAlphaChannel RefreshDisplay RelCurveTo RelLineTo RelMoveTo RemapBrush RemoveBrushPalette RemoveButton RemoveIconImage RemoveItem RemoveKeyDown RemoveLayer RemoveLayerFX RemoveLayers RemoveSprite RemoveSprites Rename RepeatStr ReplaceColors ReplaceStr ResetKeyStates ResetTabs ResetTimer ResolveHostName ResumeCoroutine ResumeLayer ResumeModule ResumeMusic ResumeTimer ResumeVideo ReverseFindStr ReverseStr RewindDirectory RightStr Rnd RndF RndStrong Rol Ror RotateBrush RotateLayer RotateTextObject Round Rt Run RunCallback RunRexxScript Sar SaveAnim SaveBrush SaveIcon SavePalette SavePrefs SaveSample SaveSnapshot ScaleAnim ScaleBGPic ScaleBrush ScaleLayer ScaleSprite ScaleTextObject Seek SeekLayer SeekMusic SeekVideo SelectAlphaChannel SelectAnim SelectBGPic SelectBrush SelectDisplay SelectLayer SelectMask SelectMenuItem SelectPalette SendApplicationMessage SendData SendMessage SendRexxCommand SendUDPData SepiaToneBrush SerializeTable SetAlphaIntensity SetAnimFrameDelay SetBaudRate SetBorderPen SetBrushDepth SetBrushPalette SetBrushPen SetBrushTransparency SetBrushTransparentPen SetBulletColor SetBulletPen SetChannelVolume SetClipRegion SetClipboard SetCycleTable SetDTR SetDash SetDataBits SetDefaultEncoding SetDepth SetDisplayAttributes SetDitherMode SetDrawPen SetDrawTagsDefault SetEnv SetEventTimeout SetFPSLimit SetFileAttributes SetFileEncoding SetFillRule SetFillStyle SetFlowControl SetFont SetFontColor SetFontStyle SetFormStyle SetGradientPalette SetIOMode SetIconProperties SetInterval SetLayerAnchor SetLayerBorder SetLayerDepth SetLayerFilter SetLayerLight SetLayerName SetLayerPalette SetLayerPen SetLayerShadow SetLayerStyle SetLayerTint SetLayerTransparency SetLayerTransparentPen SetLayerVolume SetLayerZPos SetLineCap SetLineJoin SetLineWidth SetListItems SetMargins SetMaskMode SetMasterVolume SetMetaTable SetMiterLimit SetMusicVolume SetNetworkProtocol SetNetworkTimeout SetObjectData SetPalette SetPaletteDepth SetPaletteMode SetPalettePen SetPaletteTransparentPen SetPanning SetParity SetPen SetPitch SetPointer SetRTS SetScreenTitle SetShadowPen SetSpriteZPos SetStandardIconImage SetStandardPalette SetStopBits SetSubtitle SetTimeout SetTimerElapse SetTitle SetTransparentPen SetTransparentThreshold SetTrayIcon SetVectorEngine SetVideoPosition SetVideoSize SetVideoVolume SetVolume SetWBIcon Sgn SharpenBrush Shl ShowDisplay ShowKeyboard ShowLayer ShowLayerFX ShowNotification ShowPointer ShowRinghioMessage ShowScreen ShowToast Shr Sin SolarizeBrush SolarizePalette Sort SplitStr Sqrt StartPath StartSubPath StartTimer StartsWith StopChannel StopLayer StopModule StopMusic StopSample StopTimer StopVideo StrLen StrStr StrToArray StringRequest StringToFile StripStr Sub SwapLayers SwirlBrush SystemRequest TableItems TableToMem Tan TextExtent TextHeight TextOut TextWidth TimerElapsed TimestampToDate TintBrush TintPalette ToHostName ToIP ToNumber ToString ToUserData TransformBrush TransformLayer TranslateLayer TranslatePath TrimBrush TrimStr UTCToDate UndefineVirtualStringFile Undo UndoFX UnleftStr UnmidStr Unpack UnrightStr UnsetEnv UploadFile UpperStr UseCarriageReturn UseFont VWait Val ValidateDate ValidateStr Vibrate Wait WaitEvent WaitKeyDown WaitLeftMouse WaitMidMouse WaitPatternPosition WaitRightMouse WaitSampleEnd WaitSongPosition WaitTimer WaterRippleBrush WhileKeyDown WhileMouseDown WhileMouseOn WhileRightMouseDown Wrap WriteAnimFrame WriteBrushPixel WriteByte WriteBytes WriteChr WriteFloat WriteFunction WriteInt WriteLine WriteMem WritePen WriteRegistryKey WriteSerialData WriteShort WriteString WriteTable YieldCoroutine " user-defined constants syn match hwUserConstant "#\<\u\+\>" diff --git a/runtime/syntax/m3build.vim b/runtime/syntax/m3build.vim new file mode 100644 index 0000000000..1a378e8175 --- /dev/null +++ b/runtime/syntax/m3build.vim @@ -0,0 +1,177 @@ +" Vim syntax file +" Language: Modula-3 Makefile +" Maintainer: Doug Kearns +" Last Change: 2021 April 15 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/m3quake.vim + +" Identifiers +syn match m3buildPredefinedVariable "\<\%(TARGET\|OS_TYPE\|BUILD_DIR\|PKG_USE\|WDROOT\)\>" + +" Build Procedures {{{1 +" Generated from cm3/m3-sys/cm3/src/M3Build.m3 +syn keyword m3buildProcedure HasCBackend + +" (* packages & locations *) +syn keyword m3buildProcedure Pkg +syn keyword m3buildProcedure override +syn keyword m3buildProcedure path_of +syn keyword m3buildProcedure pkg_subdir + +" (* names *) +syn keyword m3buildProcedure program_name +syn keyword m3buildProcedure library_name + +" (* calls in the generated .M3EXPORT files *) +syn keyword m3buildProcedure _define_lib +syn keyword m3buildProcedure _define_pgm +syn keyword m3buildProcedure _import_template +syn keyword m3buildProcedure _import_m3lib +syn keyword m3buildProcedure _import_otherlib +syn keyword m3buildProcedure _map_add_interface +syn keyword m3buildProcedure _map_add_generic_interface +syn keyword m3buildProcedure _map_add_module +syn keyword m3buildProcedure _map_add_generic_module +syn keyword m3buildProcedure _map_add_c +syn keyword m3buildProcedure _map_add_h +syn keyword m3buildProcedure _map_add_s + +" (* compiler options *) +syn keyword m3buildProcedure m3_debug +syn keyword m3buildProcedure m3_optimize +syn keyword m3buildProcedure build_shared +syn keyword m3buildProcedure build_standalone + +" (* derived files *) +syn keyword m3buildProcedure m3_compile_only +syn keyword m3buildProcedure m3_finish_up + +" (* predefined system libraries *) +syn keyword m3buildProcedure import_sys_lib + +" (* options *) +syn keyword m3buildProcedure m3_option +syn keyword m3buildProcedure remove_m3_option + +" (* deleting *) +syn keyword m3buildProcedure deriveds + +" (* imports *) +syn keyword m3buildProcedure include_dir +syn keyword m3buildProcedure include_pkg +syn keyword m3buildProcedure import +syn keyword m3buildProcedure import_version +syn keyword m3buildProcedure import_obj +syn keyword m3buildProcedure import_lib + +" (* objects *) +syn keyword m3buildProcedure pgm_object + +" (* sources *) +syn keyword m3buildProcedure source +syn keyword m3buildProcedure pgm_source +syn keyword m3buildProcedure interface +syn keyword m3buildProcedure Interface +syn keyword m3buildProcedure implementation +syn keyword m3buildProcedure module +syn keyword m3buildProcedure Module +syn keyword m3buildProcedure h_source +syn keyword m3buildProcedure c_source +syn keyword m3buildProcedure s_source +syn keyword m3buildProcedure ship_source + +" (* generics *) +syn keyword m3buildProcedure generic_interface +syn keyword m3buildProcedure Generic_interface +syn keyword m3buildProcedure generic_implementation +syn keyword m3buildProcedure Generic_implementation +syn keyword m3buildProcedure generic_module +syn keyword m3buildProcedure Generic_module +syn keyword m3buildProcedure build_generic_intf +syn keyword m3buildProcedure build_generic_impl + +" (* derived sources *) +syn keyword m3buildProcedure derived_interface +syn keyword m3buildProcedure derived_implementation +syn keyword m3buildProcedure derived_c +syn keyword m3buildProcedure derived_h + +" (* hiding/exporting *) +syn keyword m3buildProcedure hide_interface +syn keyword m3buildProcedure hide_generic_interface +syn keyword m3buildProcedure hide_generic_implementation +syn keyword m3buildProcedure export_interface +syn keyword m3buildProcedure export_generic_interface +syn keyword m3buildProcedure export_generic_implementation + +" (* templates *) +syn keyword m3buildProcedure template + +" (* library building *) +syn keyword m3buildProcedure library +syn keyword m3buildProcedure Library + +" (* program building *) +syn keyword m3buildProcedure program +syn keyword m3buildProcedure Program +syn keyword m3buildProcedure c_program +syn keyword m3buildProcedure C_program + +" (* man pages *) +syn keyword m3buildProcedure manPage +syn keyword m3buildProcedure ManPage + +" (* emacs *) +syn keyword m3buildProcedure Gnuemacs +syn keyword m3buildProcedure CompiledGnuemacs + +" (* "-find" support *) +syn keyword m3buildProcedure find_unit +syn keyword m3buildProcedure enum_units + +" (* export functions *) +syn keyword m3buildProcedure install_sources +syn keyword m3buildProcedure install_derived +syn keyword m3buildProcedure install_derived_link +syn keyword m3buildProcedure install_derived_symbolic_link +syn keyword m3buildProcedure install_derived_hard_link +syn keyword m3buildProcedure install_link_to_derived +syn keyword m3buildProcedure install_symbolic_link_to_derived +syn keyword m3buildProcedure install_hard_link_to_derived +syn keyword m3buildProcedure install_symbolic_link +syn keyword m3buildProcedure install_file + +" (* installation functions *) +syn keyword m3buildProcedure BindExport +syn keyword m3buildProcedure BinExport +syn keyword m3buildProcedure LibdExport +syn keyword m3buildProcedure LibExport +syn keyword m3buildProcedure EmacsdExport +syn keyword m3buildProcedure EmacsExport +syn keyword m3buildProcedure DocdExport +syn keyword m3buildProcedure DocExport +syn keyword m3buildProcedure MandExport +syn keyword m3buildProcedure ManExport +syn keyword m3buildProcedure HtmlExport +syn keyword m3buildProcedure RootExport +syn keyword m3buildProcedure RootdExport + +" (* misc *) +syn keyword m3buildProcedure gen_m3exports +syn keyword m3buildProcedure generate_tfile +syn keyword m3buildProcedure delete_file +syn keyword m3buildProcedure link_file +syn keyword m3buildProcedure symbolic_link_file +syn keyword m3buildProcedure hard_link_file +" }}} + +hi def link m3buildPredefinedVariable Identifier +hi def link m3buildProcedure Function + +let b:current_syntax = "m3build" + +" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: diff --git a/runtime/syntax/m3quake.vim b/runtime/syntax/m3quake.vim new file mode 100644 index 0000000000..c202d90e74 --- /dev/null +++ b/runtime/syntax/m3quake.vim @@ -0,0 +1,74 @@ +" Vim syntax file +" Language: Modula-3 Quake +" Maintainer: Doug Kearns +" Last Change: 2021 April 15 + +if exists("b:current_syntax") + finish +endif + +" Keywords +syn keyword m3quakeKeyword else end foreach if in is local or proc readonly +syn keyword m3quakeKeyword return + +" Builtin procedures {{{ +" Generated from m3-sys/m3quake/src/QMachine.m3 +syn keyword m3quakeProcedure arglist cp_if defined empty equal error escape +syn keyword m3quakeProcedure exec cm3_exec file format include make_dir +syn keyword m3quakeProcedure normalize path stale try_exec try_cm3_exec +syn keyword m3quakeProcedure unlink_file write datetime date datestamp +syn keyword m3quakeProcedure TRACE_INSTR eval_func hostname + +syn keyword m3quakeProcedure pushd popd cd getwd + +syn keyword m3quakeProcedure quake + +syn keyword m3quakeProcedure q_exec q_exec_put q_exec_get + +syn keyword m3quakeProcedure fs_exists fs_readable fs_writable fs_executable +syn keyword m3quakeProcedure fs_isdir fs_isfile fs_contents fs_putfile +syn keyword m3quakeProcedure fs_mkdir fs_touch fs_lsdirs fs_lsfiles fs_rmdir +syn keyword m3quakeProcedure fs_rmfile fs_rmrec fs_cp + +syn keyword m3quakeProcedure pn_valid pn_decompose pn_compose pn_absolute +syn keyword m3quakeProcedure pn_prefix pn_last pn_base pn_lastbase pn_lastext +syn keyword m3quakeProcedure pn_join pn_join2 pn_replace_ext pn_parent +syn keyword m3quakeProcedure pn_current + +syn keyword m3quakeProcedure len + +syn keyword m3quakeProcedure split sub skipl skipr squeeze compress pos +syn keyword m3quakeProcedure tcontains bool encode decode subst_chars +syn keyword m3quakeProcedure del_chars subst subst_env add_prefix add_suffix +" }}} + +" Identifiers +syn match m3quakeEnvVariable "$\h\w\+" + +" Operators +syn match m3quakeOperator "&" +syn match m3quakeOperator "\<\%(contains\|not\|and\|or\)\>" + +" Strings +syn match m3quakeEscape "\\[\\nrtbf"]" contained display +syn region m3quakeString start=+"+ end=+"+ contains=m3quakeEscape + +" Comments +syn keyword m3quakeTodo TODO FIXME XXX contained +syn region m3quakeComment start="%" end="$" contains=m3quakeTodo,@Spell +syn region m3quakeComment start="/\*" end="\*/" contains=m3quakeTodo,@Spell + +" Default highlighting +hi def link m3quakeCommand Statement +hi def link m3quakeComment Comment +hi def link m3quakeEnvVariable Identifier +hi def link m3quakeEscape Special +hi def link m3quakeKeyword Keyword +hi def link m3quakeOperator Operator +hi def link m3quakeProcedure Function +hi def link m3quakeString String +hi def link m3quakeTodo Todo + +let b:current_syntax = "m3quake" + +" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: diff --git a/runtime/syntax/modula3.vim b/runtime/syntax/modula3.vim index d9b89ca7ce..b179303799 100644 --- a/runtime/syntax/modula3.vim +++ b/runtime/syntax/modula3.vim @@ -1,59 +1,96 @@ " Vim syntax file -" Language: Modula-3 -" Maintainer: Timo Pedersen -" Last Change: 2001 May 10 +" Language: Modula-3 +" Maintainer: Doug Kearns +" Previous Maintainer: Timo Pedersen +" Last Change: 2021 Apr 08 -" Basic things only... -" Based on the modula 2 syntax file - -" quit when a syntax file was already loaded if exists("b:current_syntax") finish endif -" Modula-3 is case-sensitive -" syn case ignore - " Modula-3 keywords -syn keyword modula3Keyword ABS ADDRES ADR ADRSIZE AND ANY -syn keyword modula3Keyword ARRAY AS BITS BITSIZE BOOLEAN BRANDED BY BYTESIZE -syn keyword modula3Keyword CARDINAL CASE CEILING CHAR CONST DEC DEFINITION -syn keyword modula3Keyword DISPOSE DIV -syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION -syn keyword modula3Keyword EXIT EXPORTS EXTENDED FALSE FINALLY FIRST FLOAT -syn keyword modula3Keyword FLOOR FROM GENERIC IMPORT -syn keyword modula3Keyword IN INC INTEGER ISTYPE LAST LOCK -syn keyword modula3Keyword LONGREAL LOOPHOLE MAX METHOD MIN MOD MUTEX -syn keyword modula3Keyword NARROW NEW NIL NOT NULL NUMBER OF OR ORD RAISE -syn keyword modula3Keyword RAISES READONLY REAL RECORD REF REFANY -syn keyword modula3Keyword RETURN ROOT -syn keyword modula3Keyword ROUND SET SUBARRAY TEXT TRUE TRUNC TRY TYPE -syn keyword modula3Keyword TYPECASE TYPECODE UNSAFE UNTRACED VAL VALUE VAR WITH +syn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST DEFINITION +syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION EXIT EXPORTS FINALLY +syn keyword modula3Keyword FROM GENERIC IMPORT LOCK METHOD OF RAISE RAISES +syn keyword modula3Keyword READONLY RECORD REF RETURN SET TRY TYPE TYPECASE +syn keyword modula3Keyword UNSAFE VALUE VAR WITH + +syn match modula3keyword "\" " Special keywords, block delimiters etc syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP -" Comments -syn region modula3Comment start="(\*" end="\*)" +" Reserved identifiers +syn keyword modula3Identifier ABS ADR ADRSIZE BITSIZE BYTESIZE CEILING DEC +syn keyword modula3Identifier DISPOSE FIRST FLOAT FLOOR INC ISTYPE LAST +syn keyword modula3Identifier LOOPHOLE MAX MIN NARROW NEW NUMBER ORD ROUND +syn keyword modula3Identifier SUBARRAY TRUNC TYPECODE VAL + +" Predefined types +syn keyword modula3Type ADDRESS BOOLEAN CARDINAL CHAR EXTENDED INTEGER +syn keyword modula3Type LONGCARD LONGINT LONGREAL MUTEX NULL REAL REFANY TEXT +syn keyword modula3Type WIDECHAR + +syn match modula3Type "\<\%(UNTRACED\s\+\)\=ROOT\>" + +" Operators +syn keyword modulaOperator DIV MOD IN AND OR NOT + +if exists("modula3_operators") + syn match modula3Operator "\^" + syn match modula3Operator "+\|-\|\*\|/\|&" + " TODO: need to exclude = in procedure definitions + syn match modula3Operator "<=\|<\|>=\|>\|:\@" +syn match modula3Integer "\<\d\d\=_\x\+L\=\>" + +" Reals +syn match modula3Real "\c\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>" + +" String escape sequences +syn match modula3Escape "\\['"ntrf]" contained display +syn match modula3Escape "\\\o\{3}" contained display +syn match modula3Escape "\\\\" contained display + +" Characters +syn match modula3Character "'\%([^']\|\\.\|\\\o\{3}\)'" contains=modula3Escape " Strings -syn region modula3String start=+"+ end=+"+ -syn region modula3String start=+'+ end=+'+ +syn region modula3String start=+"+ end=+"+ contains=modula3Escape -" Define the default highlighting. -" Only when an item doesn't have highlighting yet +" Pragmas +syn region modula3Pragma start="<\*" end="\*>" -" The default methods for highlighting. Can be overridden later -hi def link modula3Keyword Statement -hi def link modula3Block PreProc -hi def link modula3Comment Comment -hi def link modula3String String +" Comments +syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell +" Default highlighting +hi def link modula3Block Statement +hi def link modula3Boolean Boolean +hi def link modula3Character Character +hi def link modula3Comment Comment +hi def link modula3Escape Special +hi def link modula3Identifier Keyword +hi def link modula3Integer Number +hi def link modula3Keyword Statement +hi def link modula3Nil Constant +hi def link modula3Operator Operator +hi def link modula3Pragma PreProc +hi def link modula3Real Float +hi def link modula3String String +hi def link modula3Type Type let b:current_syntax = "modula3" -"I prefer to use this... -"set ai -"vim: ts=8 +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/runtime/syntax/psl.vim b/runtime/syntax/psl.vim new file mode 100644 index 0000000000..ff6e833bc2 --- /dev/null +++ b/runtime/syntax/psl.vim @@ -0,0 +1,83 @@ +" Vim syntax file +" Language: Property Specification Language (PSL) +" Maintainer: Daniel Kho +" Last Changed: 2021 Apr 17 by Daniel Kho + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Read in VHDL syntax files +runtime! syntax/vhdl.vim +unlet b:current_syntax + +let s:cpo_save = &cpo +set cpo&vim + +" case is not significant +syn case ignore + +" Add ! character to keyword recognition. +setlocal iskeyword+=33 + +" PSL keywords +syn keyword pslOperator A AF AG AX +syn keyword pslOperator E EF EG EX +syn keyword pslOperator F G U W X X! +syn keyword pslOperator abort always assert assume async_abort +syn keyword pslOperator before before! before!_ before_ bit bitvector boolean +syn keyword pslOperator clock const countones cover +syn keyword pslOperator default +syn keyword pslOperator ended eventually! +syn keyword pslOperator fairness fell for forall +syn keyword pslOperator hdltype +syn keyword pslOperator in inf inherit isunknown +syn keyword pslOperator mutable +syn keyword pslOperator never next next! next_a next_a! next_e next_e! next_event next_event! next_event_a next_event_a! next_event_e next_event_e! nondet nondet_vector numeric +syn keyword pslOperator onehot onehot0 +syn keyword pslOperator property prev +syn keyword pslOperator report restrict restrict! rose +syn keyword pslOperator sequence stable string strong sync_abort +syn keyword pslOperator union until until! until!_ until_ +syn keyword pslOperator vmode vpkg vprop vunit +syn keyword pslOperator within +"" Common keywords with VHDL +"syn keyword pslOperator and is not or to + +" PSL operators +syn match pslOperator "=>\||=>" +syn match pslOperator "<-\|->" +syn match pslOperator "@" + + +"Modify the following as needed. The trade-off is performance versus functionality. +syn sync minlines=600 + +" Define the default highlighting. +" Only when an item doesn't have highlighting yet + +hi def link pslSpecial Special +hi def link pslStatement Statement +hi def link pslCharacter Character +hi def link pslString String +hi def link pslVector Number +hi def link pslBoolean Number +hi def link pslTodo Todo +hi def link pslFixme Fixme +hi def link pslComment Comment +hi def link pslNumber Number +hi def link pslTime Number +hi def link pslType Type +hi def link pslOperator Operator +hi def link pslError Error +hi def link pslAttribute Special +hi def link pslPreProc PreProc + + +let b:current_syntax = "psl" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 diff --git a/runtime/syntax/ratpoison.vim b/runtime/syntax/ratpoison.vim index af8676c43d..2322e856a4 100644 --- a/runtime/syntax/ratpoison.vim +++ b/runtime/syntax/ratpoison.vim @@ -2,10 +2,9 @@ " Language: Ratpoison configuration/commands file ( /etc/ratpoisonrc ~/.ratpoisonrc ) " Maintainer: Magnus Woldrich " URL: http://github.com/trapd00r/vim-syntax-ratpoison -" Last Change: 2011 Apr 11 +" Last Change: 2021-04-12 13:46:04 " Previous Maintainer: Doug Kearns -" quit when a syntax file was already loaded if exists("b:current_syntax") finish endif @@ -38,7 +37,7 @@ syn keyword ratpoisonCommandArg select set setenv sfdump shrink contained syn keyword ratpoisonCommandArg source sselect startup_message time title contained syn keyword ratpoisonCommandArg tmpwm unalias undefinekey undo unmanage contained syn keyword ratpoisonCommandArg unsetenv verbexec version vsplit warp contained -syn keyword ratpoisonCommandArg windows contained +syn keyword ratpoisonCommandArg windows framefmt infofmt contained syn match ratpoisonGravityArg "\<\(n\|north\)\>" contained syn match ratpoisonGravityArg "\<\(nw\|northwest\)\>" contained @@ -92,19 +91,27 @@ syn keyword ratpoisonSetArg barpadding contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg bgcolor syn keyword ratpoisonSetArg border contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg fgcolor +syn keyword ratpoisonSetArg framefmt contained nextgroup=ratpoisonWinFmtArg syn keyword ratpoisonSetArg fwcolor +syn keyword ratpoisonSetArg framemsgwait contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg gravity contained nextgroup=ratpoisonGravityArg syn keyword ratpoisonSetArg bwcolor +syn keyword ratpoisonSetArg gravity contained nextgroup=ratpoisonGravityArg syn keyword ratpoisonSetArg historysize syn keyword ratpoisonSetArg historycompaction syn keyword ratpoisonSetArg historyexpansion +syn keyword ratpoisonSetArg infofmt contained nextgroup=ratpoisonWinFmtArg syn keyword ratpoisonSetArg topkmap syn keyword ratpoisonSetArg barinpadding syn keyword ratpoisonSetArg font syn keyword ratpoisonSetArg framesels +syn keyword ratpoisonSetArg maxundos syn keyword ratpoisonSetArg inputwidth contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg maxsizegravity contained nextgroup=ratpoisonGravityArg +syn keyword ratpoisonSetArg msgwait contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg padding contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg resizeunit contained nextgroup=ratpoisonNumberArg +syn keyword ratpoisonSetArg startup_message syn keyword ratpoisonSetArg transgravity contained nextgroup=ratpoisonGravityArg syn keyword ratpoisonSetArg waitcursor contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg winfmt contained nextgroup=ratpoisonWinFmtArg @@ -113,6 +120,8 @@ syn keyword ratpoisonSetArg winliststyle contained nextgroup=ratpoisonWinListArg syn keyword ratpoisonSetArg winname contained nextgroup=ratpoisonWinNameArg syn match ratpoisonWinFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite +syn match ratpoisonFrameFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite +syn match ratpoisonInfoFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite syn match ratpoisonWinListArg "\<\(row\|column\)\>" contained @@ -126,6 +135,7 @@ syn match ratpoisonDefCommand "^\s*defbgcolor\s*" syn match ratpoisonDefCommand "^\s*defborder\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*deffgcolor\s*" syn match ratpoisonDefCommand "^\s*deffont\s*" +syn match ratpoisonDefCommand "^\s*defframefmt\s*" nextgroup=ratpoisonWinFmtArg syn match ratpoisonDefCommand "^\s*defframesels\s*" syn match ratpoisonDefCommand "^\s*definputwidth\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*defmaxsizegravity\s*" nextgroup=ratpoisonGravityArg @@ -243,14 +253,13 @@ syn match ratpoisonVoidCommand "^\s*\zsversion\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsvsplit\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zswindows\ze\s*$" -" Define the default highlighting. -" Only when an item doesn't have highlighting yet - hi def link ratpoisonBooleanArg Boolean hi def link ratpoisonCommandArg Keyword hi def link ratpoisonComment Comment hi def link ratpoisonDefCommand Identifier +hi def link ratpoisonFrameFmtArg Special hi def link ratpoisonGravityArg Constant +hi def link ratpoisonInfoFmtArg Special hi def link ratpoisonKeySeqArg Special hi def link ratpoisonNumberArg Number hi def link ratpoisonSetArg Keyword @@ -261,7 +270,6 @@ hi def link ratpoisonWinFmtArg Special hi def link ratpoisonWinNameArg Constant hi def link ratpoisonWinListArg Constant - let b:current_syntax = "ratpoison" " vim: ts=8 -- cgit From 3bc852cabf5326079c710c772d5e925f3b151c3a Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 2 May 2021 12:45:09 -0400 Subject: vim-patch:11e3c5ba8203 Update runtime files https://github.com/vim/vim/commit/11e3c5ba820325b69cb56f70e13c21d7b8808d33 --- runtime/doc/ft_raku.txt | 126 +++ runtime/doc/usr_12.txt | 4 +- runtime/doc/usr_41.txt | 20 +- runtime/ftplugin/perl6.vim | 77 -- runtime/ftplugin/r.vim | 4 +- runtime/ftplugin/raku.vim | 127 +++ runtime/ftplugin/rhelp.vim | 4 +- runtime/ftplugin/rmd.vim | 4 +- runtime/ftplugin/rnoweb.vim | 4 +- runtime/ftplugin/rrst.vim | 4 +- runtime/indent/perl6.vim | 132 --- runtime/indent/raku.vim | 127 +++ runtime/indent/rmd.vim | 32 +- runtime/indent/vim.vim | 5 +- runtime/syntax/perl6.vim | 2242 ------------------------------------------- runtime/syntax/r.vim | 38 +- runtime/syntax/raku.vim | 1971 +++++++++++++++++++++++++++++++++++++ runtime/syntax/rmd.vim | 44 +- runtime/syntax/rnoweb.vim | 4 +- 19 files changed, 2466 insertions(+), 2503 deletions(-) create mode 100644 runtime/doc/ft_raku.txt delete mode 100644 runtime/ftplugin/perl6.vim create mode 100644 runtime/ftplugin/raku.vim delete mode 100644 runtime/indent/perl6.vim create mode 100644 runtime/indent/raku.vim delete mode 100644 runtime/syntax/perl6.vim create mode 100644 runtime/syntax/raku.vim (limited to 'runtime') diff --git a/runtime/doc/ft_raku.txt b/runtime/doc/ft_raku.txt new file mode 100644 index 0000000000..26ada8a140 --- /dev/null +++ b/runtime/doc/ft_raku.txt @@ -0,0 +1,126 @@ +*vim-raku.txt* The Raku programming language filetype + + *vim-raku* + +Vim-raku provides syntax highlighting, indentation, and other support for +editing Raku programs. + +1. Using Unicode in your Raku files |raku-unicode| + +============================================================================== +1. Using Unicode in your Raku files *raku-unicode* + +Defining new operators using Unicode symbols is a good way to make your +Raku program easy to read. See: +https://perl6advent.wordpress.com/2012/12/18/day-18-formulas-resistance-is-futile/ + +While Raku does define ASCII alternatives for some common operators (see +https://docs.raku.org/language/unicode_ascii), using the full range of +Unicode operators is highly desirable. Your operating system provides input +facilities, but using the features built in to Vim may be preferable. + +The natural way to produce these symbols in Vim is to use digraph shortcuts +(:help |digraphs-use|). Many of them are defined; type `:digraphs` to get +the list. A convenient way to read the list of digraphs is to save them in a +file. From the shell: > + vim +'redir >/tmp/vim-digraphs-listing.txt' +digraphs +'redir END' +q + +Some of them are available with standard Vim digraphs: + << « /0 ∅ !< ≮ ~ + >> » Ob ∘ !> ≯ ~ + ., … 00 ∞ (C ⊂ ~ + (U ∩ -: ÷ )C ⊃ ~ + )U ∪ (_ ⊆ >= ≥ ~ + ?= ≅ )_ ⊇ =< ≤ ~ + (- ∈ ?= ≅ != ≠ ~ + -) ∋ ?- ≃ ~ + +The Greek alphabet is available with '*' followed by a similar Latin symbol: + *p π ~ + *t τ ~ + *X × ~ + +Numbers, subscripts and superscripts are available with 's' and 'S': + 0s ₀ 0S ⁰ ~ + 1s ₁ 1S ¹ ~ + 2s ₂ 9S ⁹ ~ + +But some don´t come defined by default. Those are digraph definitions you can +add in your ~/.vimrc file. > + exec 'digraph \\ '.char2nr('∖') + exec 'digraph \< '.char2nr('≼') + exec 'digraph \> '.char2nr('≽') + exec 'digraph (L '.char2nr('⊈') + exec 'digraph )L '.char2nr('⊉') + exec 'digraph (/ '.char2nr('⊄') + exec 'digraph )/ '.char2nr('⊅') + exec 'digraph )/ '.char2nr('⊅') + exec 'digraph U+ '.char2nr('⊎') + exec 'digraph 0- '.char2nr('⊖') + " Euler's constant + exec 'digraph ne '.char2nr('𝑒') + " Raku's atomic operations marker + exec 'digraph @@ '.char2nr('⚛') + +Alternatively, you can write Insert mode abbreviations that convert ASCII- +based operators into their single-character Unicode equivalent. > + iabbrev !(<) ⊄ + iabbrev !(<=) ⊈ + iabbrev !(>) ⊅ + iabbrev !(>=) ⊉ + iabbrev !(cont) ∌ + iabbrev !(elem) ∉ + iabbrev != ≠ + iabbrev (&) ∩ + iabbrev (+) ⊎ + iabbrev (-) ∖ + iabbrev (.) ⊍ + iabbrev (<) ⊂ + iabbrev (<+) ≼ + iabbrev (<=) ⊆ + iabbrev (>) ⊃ + iabbrev (>+) ≽ + iabbrev (>=) ⊇ + iabbrev (\|) ∪ + iabbrev (^) ⊖ + iabbrev (atomic) ⚛ + iabbrev (cont) ∋ + iabbrev (elem) ∈ + iabbrev * × + iabbrev **0 ⁰ + iabbrev **1 ¹ + iabbrev **2 ² + iabbrev **3 ³ + iabbrev **4 ⁴ + iabbrev **5 ⁵ + iabbrev **6 ⁶ + iabbrev **7 ⁷ + iabbrev **8 ⁸ + iabbrev **9 ⁹ + iabbrev ... … + iabbrev / ÷ + iabbrev << « + iabbrev <<[=]<< «=« + iabbrev <<[=]>> «=» + iabbrev <= ≤ + iabbrev =~= ≅ + iabbrev >= ≥ + iabbrev >> » + iabbrev >>[=]<< »=« + iabbrev >>[=]>> »=» + iabbrev Inf ∞ + iabbrev atomic-add-fetch ⚛+= + iabbrev atomic-assign ⚛= + iabbrev atomic-fetch ⚛ + iabbrev atomic-dec-fetch --⚛ + iabbrev atomic-fetch-dec ⚛-- + iabbrev atomic-fetch-inc ⚛++ + iabbrev atomic-inc-fetch ++⚛ + iabbrev atomic-sub-fetch ⚛−= + iabbrev e 𝑒 + iabbrev o ∘ + iabbrev pi π + iabbrev set() ∅ + iabbrev tau τ +< + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_12.txt b/runtime/doc/usr_12.txt index 21efa36a25..51a25b1593 100644 --- a/runtime/doc/usr_12.txt +++ b/runtime/doc/usr_12.txt @@ -180,14 +180,14 @@ after it. That way you don't have this problem again. The |:global| command can be combined with the |:move| command to move all the lines before the first line, resulting in a reversed file. The command is: > - :global/^/m 0 + :global/^/move 0 Abbreviated: > :g/^/m 0 The "^" regular expression matches the beginning of the line (even if the line -is blank). The |:move| command moves the matching line to after the mythical +is blank). The |:move| command moves the matching line to after the imaginary zeroth line, so the current matching line becomes the first line of the file. As the |:global| command is not confused by the changing line numbering, |:global| proceeds to match all remaining lines of the file and puts each as diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 081b3ece1c..4cba5a33d0 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -115,12 +115,20 @@ if you are impatient. FOUR KINDS OF NUMBERS -Numbers can be decimal, hexadecimal, octal or binary. A hexadecimal number -starts with "0x" or "0X". For example "0x1f" is decimal 31. An octal number -starts with a zero. "017" is decimal 15. A binary number starts with "0b" or -"0B". For example "0b101" is decimal 5. Careful: don't put a zero before a -decimal number, it will be interpreted as an octal number! - The ":echo" command always prints decimal numbers. Example: > +Numbers can be decimal, hexadecimal, octal or binary. + +A hexadecimal number starts with "0x" or "0X". For example "0x1f" is decimal +31. + +An octal number starts with "0o", "0O" or a zero and another digit. "0o17" is +decimal 15. Using just a zero prefix is not supported in Vim9 script. + +A binary number starts with "0b" or "0B". For example "0b101" is decimal 5. + +A decimal number is just digits. Careful: don't put a zero before a decimal +number, it will be interpreted as an octal number in legacy script! + +The ":echo" command always prints decimal numbers. Example: > :echo 0x7f 0o36 < 127 30 ~ diff --git a/runtime/ftplugin/perl6.vim b/runtime/ftplugin/perl6.vim deleted file mode 100644 index 0467bea0c2..0000000000 --- a/runtime/ftplugin/perl6.vim +++ /dev/null @@ -1,77 +0,0 @@ -" Vim filetype plugin file -" Language: Perl 6 -" Maintainer: vim-perl -" Homepage: https://github.com/vim-perl/vim-perl -" Bugs/requests: https://github.com/vim-perl/vim-perl/issues -" Last Change: 2020 Apr 15 -" Contributors: Hinrik Örn Sigurðsson -" -" Based on ftplugin/perl.vim by Dan Sharp - -if exists("b:did_ftplugin") | finish | endif -let b:did_ftplugin = 1 - -" Make sure the continuation lines below do not cause problems in -" compatibility mode. -let s:save_cpo = &cpo -set cpo-=C - -setlocal formatoptions-=t -setlocal formatoptions+=crqol -setlocal keywordprg=p6doc - -setlocal comments=:# -setlocal commentstring=#%s - -" Change the browse dialog on Win32 to show mainly Perl-related files -if has("gui_win32") - let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" . - \ "Perl Modules (*.pm)\t*.pm\n" . - \ "Perl Documentation Files (*.pod)\t*.pod\n" . - \ "All Files (*.*)\t*.*\n" -endif - -" Provided by Ned Konz -"--------------------------------------------- -setlocal include=\\<\\(use\\\|require\\)\\> -setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','') -setlocal define=[^A-Za-z_] - -" The following line changes a global variable but is necessary to make -" gf and similar commands work. Thanks to Andrew Pimlott for pointing out -" the problem. If this causes a " problem for you, add an -" after/ftplugin/perl6.vim file that contains -" set isfname-=: -set isfname+=: -setlocal iskeyword=48-57,_,A-Z,a-z,:,- - -" Set this once, globally. -if !exists("perlpath") - if executable("perl6") - try - if &shellxquote != '"' - let perlpath = system('perl6 -e "@*INC.join(q/,/).say"') - else - let perlpath = system("perl6 -e '@*INC.join(q/,/).say'") - endif - let perlpath = substitute(perlpath,',.$',',,','') - catch /E145:/ - let perlpath = ".,," - endtry - else - " If we can't call perl to get its path, just default to using the - " current directory and the directory of the current file. - let perlpath = ".,," - endif -endif - -let &l:path=perlpath -"--------------------------------------------- - -" Undo the stuff we changed. -let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk<" . - \ " | unlet! b:browsefilter" - -" Restore the saved compatibility options. -let &cpo = s:save_cpo -unlet s:save_cpo diff --git a/runtime/ftplugin/r.vim b/runtime/ftplugin/r.vim index 4ea3073922..a78afa2e7e 100644 --- a/runtime/ftplugin/r.vim +++ b/runtime/ftplugin/r.vim @@ -2,7 +2,7 @@ " Language: R " Maintainer: Jakson Alves de Aquino " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Tue Apr 07, 2015 04:38PM +" Last Change: Sat Aug 15, 2020 11:37AM " Only do this when not yet done for this buffer if exists("b:did_ftplugin") @@ -20,7 +20,7 @@ setlocal formatoptions-=t setlocal commentstring=#\ %s setlocal comments=:#',:###,:##,:# -if has("gui_win32") && !exists("b:browsefilter") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "R Source Files (*.R)\t*.R\n" . \ "Files that include R (*.Rnw *.Rd *.Rmd *.Rrst)\t*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . \ "All Files (*.*)\t*.*\n" diff --git a/runtime/ftplugin/raku.vim b/runtime/ftplugin/raku.vim new file mode 100644 index 0000000000..941222bd38 --- /dev/null +++ b/runtime/ftplugin/raku.vim @@ -0,0 +1,127 @@ +" Vim filetype plugin file +" Language: Raku +" Maintainer: vim-perl +" Homepage: https://github.com/Raku/vim-raku +" Bugs/requests: https://github.com/Raku/vim-raku/issues +" Last Change: 2021-04-16 +" Contributors: Hinrik Örn Sigurðsson +" +" Based on ftplugin/perl.vim by Dan Sharp + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal formatoptions-=t +setlocal formatoptions+=crqol +setlocal keywordprg=p6doc + +setlocal comments=:#\|,:#=,:# +setlocal commentstring=#%s + +" Provided by Ned Konz +"--------------------------------------------- +setlocal include=\\<\\(use\\\|require\\)\\> +setlocal includeexpr=substitute(v:fname,'::','/','g') +setlocal suffixesadd=.rakumod,.rakudoc,.pm6,.pm +setlocal define=[^A-Za-z_] + +" The following line changes a global variable but is necessary to make +" gf and similar commands work. Thanks to Andrew Pimlott for pointing out +" the problem. If this causes a problem for you, add an +" after/ftplugin/raku.vim file that contains +" set isfname-=: +set isfname+=: +setlocal iskeyword=@,48-57,_,192-255,- + +" Raku exposes its CompUnits through $*REPO, but mapping module names to +" compunit paths is nontrivial. Probably it's more convenient to rely on +" people using zef, which has a handy store of sources for modules it has +" installed. +func s:compareReverseFtime(a, b) + let atime = getftime(a:a) + let btime = getftime(a:b) + return atime > btime ? -1 : atime == btime ? 0 : 1 +endfunc + +let &l:path = "lib,." +if exists('$RAKULIB') + let &l:path = &l:path . "," . $RAKULIB +endif +let &l:path = &l:path . "," . join( + \ sort(glob("~/.zef/store/*/*/lib", 0, 1), "s:compareReverseFtime"), + \ ',') + +" Convert ascii-based ops into their single-character unicode equivalent +if get(g:, 'raku_unicode_abbrevs', 0) + iabbrev !(<) ⊄ + iabbrev !(<=) ⊈ + iabbrev !(>) ⊅ + iabbrev !(>=) ⊉ + iabbrev !(cont) ∌ + iabbrev !(elem) ∉ + iabbrev != ≠ + iabbrev (&) ∩ + iabbrev (+) ⊎ + iabbrev (-) ∖ + iabbrev (.) ⊍ + iabbrev (<) ⊂ + iabbrev (<+) ≼ + iabbrev (<=) ⊆ + iabbrev (>) ⊃ + iabbrev (>+) ≽ + iabbrev (>=) ⊇ + iabbrev (\|) ∪ + iabbrev (^) ⊖ + iabbrev (atomic) ⚛ + iabbrev (cont) ∋ + iabbrev (elem) ∈ + iabbrev * × + iabbrev **0 ⁰ + iabbrev **1 ¹ + iabbrev **2 ² + iabbrev **3 ³ + iabbrev **4 ⁴ + iabbrev **5 ⁵ + iabbrev **6 ⁶ + iabbrev **7 ⁷ + iabbrev **8 ⁸ + iabbrev **9 ⁹ + iabbrev ... … + iabbrev / ÷ + iabbrev << « + iabbrev <<[=]<< «=« + iabbrev <<[=]>> «=» + iabbrev <= ≤ + iabbrev =~= ≅ + iabbrev >= ≥ + iabbrev >> » + iabbrev >>[=]<< »=« + iabbrev >>[=]>> »=» + iabbrev Inf ∞ + iabbrev atomic-add-fetch ⚛+= + iabbrev atomic-assign ⚛= + iabbrev atomic-fetch ⚛ + iabbrev atomic-dec-fetch --⚛ + iabbrev atomic-fetch-dec ⚛-- + iabbrev atomic-fetch-inc ⚛++ + iabbrev atomic-inc-fetch ++⚛ + iabbrev atomic-sub-fetch ⚛−= + iabbrev e 𝑒 + iabbrev o ∘ + iabbrev pi π + iabbrev set() ∅ + iabbrev tau τ +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< isk< kp< path<" . + \ " | unlet! b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/runtime/ftplugin/rhelp.vim b/runtime/ftplugin/rhelp.vim index fdac38f3e9..d0b546d62d 100644 --- a/runtime/ftplugin/rhelp.vim +++ b/runtime/ftplugin/rhelp.vim @@ -2,7 +2,7 @@ " Language: R help file " Maintainer: Jakson Alves de Aquino " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Tue Apr 07, 2015 04:37PM +" Last Change: Sat Aug 15, 2020 12:01PM " Only do this when not yet done for this buffer if exists("b:did_ftplugin") @@ -17,7 +17,7 @@ set cpo&vim setlocal iskeyword=@,48-57,_,. -if has("gui_win32") && !exists("b:browsefilter") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . \ "All Files (*.*)\t*.*\n" endif diff --git a/runtime/ftplugin/rmd.vim b/runtime/ftplugin/rmd.vim index 7b0db8dbb5..2ee72ffc6c 100644 --- a/runtime/ftplugin/rmd.vim +++ b/runtime/ftplugin/rmd.vim @@ -2,7 +2,7 @@ " Language: R Markdown file " Maintainer: Jakson Alves de Aquino " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Sun Jul 22, 2018 06:51PM +" Last Change: Sat Aug 15, 2020 12:03PM " Original work by Alex Zvoleff (adjusted from R help for rmd by Michel Kuhlmann) " Only do this when not yet done for this buffer @@ -46,7 +46,7 @@ runtime ftplugin/pandoc.vim " Don't load another plugin for this buffer let b:did_ftplugin = 1 -if has("gui_win32") && !exists("b:browsefilter") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . \ "All Files (*.*)\t*.*\n" endif diff --git a/runtime/ftplugin/rnoweb.vim b/runtime/ftplugin/rnoweb.vim index e184399dcb..dc5f1b5e06 100644 --- a/runtime/ftplugin/rnoweb.vim +++ b/runtime/ftplugin/rnoweb.vim @@ -2,7 +2,7 @@ " Language: Rnoweb " Maintainer: Jakson Alves de Aquino " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Tue Apr 07, 2015 04:37PM +" Last Change: Sat Aug 15, 2020 12:02PM " Only do this when not yet done for this buffer if exists("b:did_ftplugin") @@ -24,7 +24,7 @@ setlocal iskeyword=@,48-57,_,. setlocal suffixesadd=.bib,.tex setlocal comments=b:%,b:#,b:##,b:###,b:#' -if has("gui_win32") && !exists("b:browsefilter") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . \ "All Files (*.*)\t*.*\n" endif diff --git a/runtime/ftplugin/rrst.vim b/runtime/ftplugin/rrst.vim index 3e82847d35..a56fd6478e 100644 --- a/runtime/ftplugin/rrst.vim +++ b/runtime/ftplugin/rrst.vim @@ -2,7 +2,7 @@ " Language: reStructuredText documentation format with R code " Maintainer: Jakson Alves de Aquino " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Wed Nov 01, 2017 10:47PM +" Last Change: Sat Aug 15, 2020 12:02PM " Original work by Alex Zvoleff " Only do this when not yet done for this buffer @@ -37,7 +37,7 @@ if !exists("g:rrst_dynamic_comments") || (exists("g:rrst_dynamic_comments") && g setlocal formatexpr=FormatRrst() endif -if has("gui_win32") && !exists("b:browsefilter") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . \ "All Files (*.*)\t*.*\n" endif diff --git a/runtime/indent/perl6.vim b/runtime/indent/perl6.vim deleted file mode 100644 index 51c7923182..0000000000 --- a/runtime/indent/perl6.vim +++ /dev/null @@ -1,132 +0,0 @@ -" Vim indent file -" Language: Perl 6 -" Maintainer: vim-perl -" Homepage: https://github.com/vim-perl/vim-perl -" Bugs/requests: https://github.com/vim-perl/vim-perl/issues -" Last Change: 2020 Apr 15 -" Contributors: Andy Lester -" Hinrik Örn Sigurðsson -" -" Adapted from indent/perl.vim by Rafael Garcia-Suarez - -" Suggestions and improvements by : -" Aaron J. Sherman (use syntax for hints) -" Artem Chuprina (play nice with folding) -" TODO: -" This file still relies on stuff from the Perl 5 syntax file, which Perl 6 -" does not use. -" -" Things that are not or not properly indented (yet) : -" - Continued statements -" print "foo", -" "bar"; -" print "foo" -" if bar(); -" - Multiline regular expressions (m//x) -" (The following probably needs modifying the perl syntax file) -" - qw() lists -" - Heredocs with terminators that don't match \I\i* - -" Only load this indent file when no other was loaded. -if exists("b:did_indent") - finish -endif -let b:did_indent = 1 - -" Is syntax highlighting active ? -let b:indent_use_syntax = has("syntax") - -setlocal indentexpr=GetPerl6Indent() - -" we reset it first because the Perl 5 indent file might have been loaded due -" to a .pl/pm file extension, and indent files don't clean up afterwards -setlocal indentkeys& - -setlocal indentkeys+=0=,0),0],0>,0»,0=or,0=and -if !b:indent_use_syntax - setlocal indentkeys+=0=EO -endif - -let s:cpo_save = &cpo -set cpo-=C - -function! GetPerl6Indent() - - " Get the line to be indented - let cline = getline(v:lnum) - - " Indent POD markers to column 0 - if cline =~ '^\s*=\L\@!' - return 0 - endif - - " Don't reindent coments on first column - if cline =~ '^#' - return 0 - endif - - " Get current syntax item at the line's first char - let csynid = '' - if b:indent_use_syntax - let csynid = synIDattr(synID(v:lnum,1,0),"name") - endif - - " Don't reindent POD and heredocs - if csynid =~ "^p6Pod" - return indent(v:lnum) - endif - - - " Now get the indent of the previous perl line. - - " Find a non-blank line above the current line. - let lnum = prevnonblank(v:lnum - 1) - " Hit the start of the file, use zero indent. - if lnum == 0 - return 0 - endif - let line = getline(lnum) - let ind = indent(lnum) - " Skip heredocs, POD, and comments on 1st column - if b:indent_use_syntax - let skippin = 2 - while skippin - let synid = synIDattr(synID(lnum,1,0),"name") - if (synid =~ "^p6Pod" || synid =~ "p6Comment") - let lnum = prevnonblank(lnum - 1) - if lnum == 0 - return 0 - endif - let line = getline(lnum) - let ind = indent(lnum) - let skippin = 1 - else - let skippin = 0 - endif - endwhile - endif - - if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$' - let ind = ind + shiftwidth() - endif - if cline =~ '^\s*[)}\]»>]' - let ind = ind - shiftwidth() - endif - - " Indent lines that begin with 'or' or 'and' - if cline =~ '^\s*\(or\|and\)\>' - if line !~ '^\s*\(or\|and\)\>' - let ind = ind + shiftwidth() - endif - elseif line =~ '^\s*\(or\|and\)\>' - let ind = ind - shiftwidth() - endif - - return ind - -endfunction - -let &cpo = s:cpo_save -unlet s:cpo_save - -" vim:ts=8:sts=4:sw=4:expandtab:ft=vim diff --git a/runtime/indent/raku.vim b/runtime/indent/raku.vim new file mode 100644 index 0000000000..3f9b49ec77 --- /dev/null +++ b/runtime/indent/raku.vim @@ -0,0 +1,127 @@ +" Vim indent file +" Language: Perl 6 +" Maintainer: vim-perl +" Homepage: https://github.com/vim-perl/vim-perl +" Bugs/requests: https://github.com/vim-perl/vim-perl/issues +" Last Change: 2020 Apr 15 +" Contributors: Andy Lester +" Hinrik Örn Sigurðsson +" +" Adapted from indent/perl.vim by Rafael Garcia-Suarez + +" Suggestions and improvements by : +" Aaron J. Sherman (use syntax for hints) +" Artem Chuprina (play nice with folding) +" TODO: +" This file still relies on stuff from the Perl 5 syntax file, which Perl 6 +" does not use. +" +" Things that are not or not properly indented (yet) : +" - Continued statements +" print "foo", +" "bar"; +" print "foo" +" if bar(); +" - Multiline regular expressions (m//x) +" (The following probably needs modifying the perl syntax file) +" - qw() lists +" - Heredocs with terminators that don't match \I\i* + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" Is syntax highlighting active ? +let b:indent_use_syntax = has("syntax") + +setlocal indentexpr=GetRakuIndent() + +" we reset it first because the Perl 5 indent file might have been loaded due +" to a .pl/pm file extension, and indent files don't clean up afterwards +setlocal indentkeys& + +setlocal indentkeys+=0=,0),0],0>,0»,0=or,0=and +if !b:indent_use_syntax + setlocal indentkeys+=0=EO +endif + +let s:cpo_save = &cpo +set cpo-=C + +function! GetRakuIndent() + + " Get the line to be indented + let cline = getline(v:lnum) + + " Indent POD markers to column 0 + if cline =~ '^\s*=\L\@!' + return 0 + endif + + " Get current syntax item at the line's first char + let csynid = '' + if b:indent_use_syntax + let csynid = synIDattr(synID(v:lnum,1,0),"name") + endif + + " Don't reindent POD and heredocs + if csynid =~ "^rakuPod" + return indent(v:lnum) + endif + + + " Now get the indent of the previous perl line. + + " Find a non-blank line above the current line. + let lnum = prevnonblank(v:lnum - 1) + " Hit the start of the file, use zero indent. + if lnum == 0 + return 0 + endif + let line = getline(lnum) + let ind = indent(lnum) + " Skip heredocs, POD, and comments on 1st column + if b:indent_use_syntax + let skippin = 2 + while skippin + let synid = synIDattr(synID(lnum,1,0),"name") + if (synid =~ "^rakuPod" || synid =~ "rakuComment") + let lnum = prevnonblank(lnum - 1) + if lnum == 0 + return 0 + endif + let line = getline(lnum) + let ind = indent(lnum) + let skippin = 1 + else + let skippin = 0 + endif + endwhile + endif + + if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$' + let ind = ind + &sw + endif + if cline =~ '^\s*[)}\]»>]' + let ind = ind - &sw + endif + + " Indent lines that begin with 'or' or 'and' + if cline =~ '^\s*\(or\|and\)\>' + if line !~ '^\s*\(or\|and\)\>' + let ind = ind + &sw + endif + elseif line =~ '^\s*\(or\|and\)\>' + let ind = ind - &sw + endif + + return ind + +endfunction + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:ts=8:sts=4:sw=4:expandtab:ft=vim diff --git a/runtime/indent/rmd.vim b/runtime/indent/rmd.vim index 83fe4e4fed..8fd57257fa 100644 --- a/runtime/indent/rmd.vim +++ b/runtime/indent/rmd.vim @@ -2,7 +2,7 @@ " Language: Rmd " Author: Jakson Alves de Aquino " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Sun Aug 19, 2018 09:14PM +" Last Change: Sun Mar 28, 2021 08:05PM " Only load this indent file when no other was loaded. @@ -13,7 +13,7 @@ runtime indent/r.vim let s:RIndent = function(substitute(&indentexpr, "()", "", "")) let b:did_indent = 1 -setlocal indentkeys=0{,0},:,!^F,o,O,e +setlocal indentkeys=0{,0},<:>,!^F,o,O,e setlocal indentexpr=GetRmdIndent() if exists("*GetRmdIndent") @@ -23,6 +23,21 @@ endif let s:cpo_save = &cpo set cpo&vim +" Simple Python indentation algorithm +function s:GetPyIndent() + let plnum = prevnonblank(v:lnum - 1) + let pline = getline(plnum) + let cline = getline(v:lnum) + if pline =~ '^s```\s*{\s*python ' + return 0 + elseif pline =~ ':$' + return indent(plnum) + &shiftwidth + elseif cline =~ 'else:$' + return indent(plnum) - &shiftwidth + endif + return indent(plnum) +endfunction + function s:GetMdIndent() let pline = getline(v:lnum - 1) let cline = getline(v:lnum) @@ -37,13 +52,14 @@ function s:GetMdIndent() endfunction function s:GetYamlIndent() - let pline = getline(v:lnum - 1) + let plnum = prevnonblank(v:lnum - 1) + let pline = getline(plnum) if pline =~ ':\s*$' - return indent(v:lnum) + shiftwidth() + return indent(plnum) + shiftwidth() elseif pline =~ '^\s*- ' return indent(v:lnum) + 2 endif - return indent(prevnonblank(v:lnum - 1)) + return indent(plnum) endfunction function GetRmdIndent() @@ -52,9 +68,11 @@ function GetRmdIndent() endif if search('^[ \t]*```{r', "bncW") > search('^[ \t]*```$', "bncW") return s:RIndent() - elseif v:lnum > 1 && search('^---$', "bnW") == 1 && - \ (search('^---$', "nW") > v:lnum || search('^...$', "nW") > v:lnum) + elseif v:lnum > 1 && (search('^---$', "bnW") == 1 && + \ (search('^---$', "nW") > v:lnum || search('^\.\.\.$', "nW") > v:lnum)) return s:GetYamlIndent() + elseif search('^[ \t]*```{python', "bncW") > search('^[ \t]*```$', "bncW") + return s:GetPyIndent() else return s:GetMdIndent() endif diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim index 3cebf299f1..ee3d39490d 100644 --- a/runtime/indent/vim.vim +++ b/runtime/indent/vim.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Vim script " Maintainer: Bram Moolenaar -" Last Change: 2021 Feb 18 +" Last Change: 2021 Apr 18 " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -71,7 +71,8 @@ function GetVimIndentIntern() " End of heredoc: use indent of matching start line let lnum = v:lnum - 1 while lnum > 0 - if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc' + let attr = synIDattr(synID(lnum, 1, 1), "name") + if attr != '' && attr !~ 'vimLetHereDoc' return indent(lnum) endif let lnum -= 1 diff --git a/runtime/syntax/perl6.vim b/runtime/syntax/perl6.vim deleted file mode 100644 index 62ddc456e2..0000000000 --- a/runtime/syntax/perl6.vim +++ /dev/null @@ -1,2242 +0,0 @@ -" Vim syntax file -" Language: Perl 6 -" Maintainer: vim-perl -" Homepage: https://github.com/vim-perl/vim-perl/tree/master -" Bugs/requests: https://github.com/vim-perl/vim-perl/issues -" Last Change: 2020 Apr 15 - -" Contributors: Luke Palmer -" Moritz Lenz -" Hinrik Örn Sigurðsson -" -" This is a big undertaking. Perl 6 is the sort of language that only Perl -" can parse. But I'll do my best to get vim to. -" -" You can associate the extension ".pl" with the filetype "perl6" by setting -" autocmd BufNewFile,BufRead *.pl setf perl6 -" in your ~/.vimrc. But that will infringe on Perl 5, so you might want to -" put a modeline near the beginning or end of your Perl 6 files instead: -" # vim: filetype=perl6 - -" TODO: -" * Deal with s:Perl5// -" * m:s// is a match, not a substitution -" * Make these highlight as strings, not operators: -" <==> <=:=> <===> <=~> <« »> «>» «<» -" * Allow more keywords to match as function calls(leave() is export(), etc) -" * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup) -" * Fix s''' substitutions being matched as package names -" * Match s/// and m/// better, so things like "$s/" won't match -" * Add more support for folding (:help syn-fold) -" * Add more syntax syncing hooks (:help syn-sync) -" * Q//: -" :to, :heredoc -" interpolate \q:s{$scalar} (though the spec isn't very clear on it) -" -" Impossible TODO?: -" * Unspace -" * Unicode bracketing characters for quoting (there are so many) -" * Various tricks depending on context. I.e. we can't know when Perl -" expects «*» to be a string or a hyperoperator. The latter is presumably -" more common, so that's what we assume. -" * Selective highlighting of Pod formatting codes with the :allow option -" * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//. -" Currently only the first adverb is considered significant. Anything -" more would require an exponential amount of regexes, making this -" already slow syntax file even slower. -" -" If you want to have Pir code inside Q:PIR// strings highlighted, do: -" let perl6_embedded_pir=1 -" -" The above requires pir.vim, which you can find in Parrot's repository: -" https://svn.parrot.org/parrot/trunk/editor/ -" -" Some less than crucial things have been made optional to speed things up. -" Look at the comments near the if/else branches in this file to see exactly -" which features are affected. "perl6_extended_all" enables everything. -" -" The defaults are: -" -" unlet perl6_extended_comments -" unlet perl6_extended_q -" unlet perl6_extended_all - -" quit when a syntax file was already loaded -if exists("b:current_syntax") - finish -endif -let s:keepcpo= &cpo -set cpo&vim - -" identifiers -syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*" - -" This is used in the for loops below -" Don't use the "syn keyword" construct because that always has higher -" priority than matches/regions, so the words can't be autoquoted with -" the "=>" and "p5=>" operators. All the lookaround stuff is to make sure -" we don't match them as part of some other identifier. -let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@.;\\]" -syn match p6Operator display "\%(:\@\)" -" "i" requires a digit to the left, and no keyword char to the right -syn match p6Operator display "\d\@<=i\k\@!" -" index overloading -syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)" - -" all infix operators except nonassocative ones -let s:infix_a = [ - \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x", - \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt", - \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^", - \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax", - \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=", - \ "+ - \\*\\* \\* // / \\~ || |", -\ ] -" nonassociative infix operators -let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^" - -let s:infix_a_long = join(s:infix_a, " ") -let s:infix_a_words = split(s:infix_a_long) -let s:infix_a_pattern = join(s:infix_a_words, "\\|") - -let s:infix_n_words = split(s:infix_n) -let s:infix_n_pattern = join(s:infix_n_words, "\\|") - -let s:both = [s:infix_a_pattern, s:infix_n_pattern] -let s:infix = join(s:both, "\\|") - -let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)" -let s:infix = "!\\?\\%(" . s:infix . "\\)" - -unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern -unlet s:infix_n s:infix_n_pattern s:both - -" [+] reduce -exec "syn match p6ReduceOp display \"\\k\\@" - -" does is a type constraint sometimes -syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@=" - -" int is a type sometimes -syn match p6Type display "\\%(\s*(\|\s\+\d\)\@!" - -" these Routine names are also Properties, if preceded by "is" -syn match p6Property display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)" - -" The sigil in ::*Package -syn match p6PackageTwigil display "\%(::\)\@<=\*" - -" $ -syn region p6MatchVarSigil - \ matchgroup=p6Variable - \ start="\$\%(<<\@!\)\@=" - \ end=">\@<=" - \ contains=p6MatchVar - -syn region p6MatchVar - \ matchgroup=p6Twigil - \ start="<" - \ end=">" - \ contained - -" Contextualizers -syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>" -syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@=" - -" the "$" placeholder in "$var1, $, var2 = @list" -syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" - \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" - \ end="\z1\zs" - \ contained - \ contains=TOP - \ keepend - -syn region p6InterpArray - \ matchgroup=p6Context - \ start="@\ze()\@!" - \ start="@@\ze()\@!" - \ skip="([^)]*)" - \ end=")\zs" - \ contained - \ contains=TOP - -syn region p6InterpHash - \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" - \ end="\z1\zs" - \ contained - \ contains=TOP - \ keepend - -syn region p6InterpHash - \ matchgroup=p6Context - \ start="%\ze()\@!" - \ skip="([^)]*)" - \ end=")\zs" - \ contained - \ contains=TOP - -syn region p6InterpFunction - \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" - \ end="\z1\zs" - \ contained - \ contains=TOP - \ keepend - -syn region p6InterpFunction - \ matchgroup=p6Context - \ start="&\ze()\@!" - \ skip="([^)]*)" - \ end=")\zs" - \ contained - \ contains=TOP - -syn region p6InterpClosure - \ start="\\\@" contained -syn match p6EscCloseFrench display "\\»" contained -syn match p6EscBackTick display "\\`" contained -syn match p6EscForwardSlash display "\\/" contained -syn match p6EscVerticalBar display "\\|" contained -syn match p6EscExclamation display "\\!" contained -syn match p6EscComma display "\\," contained -syn match p6EscDollar display "\\\$" contained -syn match p6EscCloseCurly display "\\}" contained -syn match p6EscCloseBracket display "\\\]" contained - -" misc escapes -syn match p6EscOctOld display "\\\d\{1,3}" contained -syn match p6EscNull display "\\0\d\@!" contained -syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint -syn match p6EscHex display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence -syn match p6EscOct display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence -syn match p6EscQQ display "\\qq" contained nextgroup=p6QQSequence -syn match p6EscOpenCurly display "\\{" contained -syn match p6EscHash display "\\#" contained -syn match p6EscBackSlash display "\\\\" contained - -syn region p6QQSequence - \ matchgroup=p6Escape - \ start="\[" - \ skip="\[[^\]]*]" - \ end="]" - \ contained - \ transparent - \ contains=@p6Interp_qq - -syn match p6CodePoint display "\%(\d\+\|\S\)" contained -syn region p6CodePoint - \ matchgroup=p6Escape - \ start="\[" - \ end="]" - \ contained - -syn match p6HexSequence display "\x\+" contained -syn region p6HexSequence - \ matchgroup=p6Escape - \ start="\[" - \ end="]" - \ contained - -syn match p6OctSequence display "\o\+" contained -syn region p6OctSequence - \ matchgroup=p6Escape - \ start="\[" - \ end="]" - \ contained - -" matches :key, :!key, :$var, :key, etc -" Since we don't know in advance how the adverb ends, we use a trick. -" Consume nothing with the start pattern (\ze at the beginning), -" while capturing the whole adverb into \z1 and then putting it before -" the match start (\zs) of the end pattern. -syn region p6Adverb - \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)" - \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@ -" FIXME: not sure how to distinguish this from the "less than" operator -" in all cases. For now, it matches if any of the following is true: -" -" * There is whitespace missing on either side of the "<", since -" people tend to put spaces around "less than" -" * It comes after "enum", "for", "any", "all", or "none" -" * It's the first or last thing on a line (ignoring whitespace) -" * It's preceded by "= " -" -" It never matches when: -" -" * Preceded by [<+~=] (e.g. <>, =<$foo>) -" * Followed by [-=] (e.g. <--, <=, <==) -syn region p6StringAngle - \ matchgroup=p6Quote - \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" - \ start="\%(\s\|[<+~=]\)\@\|[-=]\{1,2}>\@!\)\@!" - \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" - \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" - \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" - \ skip="\\\@" - \ end=">" - \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle - -syn region p6InnerAnglesOne - \ matchgroup=p6StringAngle - \ start="<" - \ skip="\\\@" - \ end=">" - \ transparent - \ contained - \ contains=p6InnerAnglesOne - -" <> -syn region p6StringAngles - \ matchgroup=p6Quote - \ start="<<=\@!" - \ skip="\\\@" - \ end=">>" - \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ - -syn region p6InnerAnglesTwo - \ matchgroup=p6StringAngles - \ start="<<" - \ skip="\\\@" - \ end=">>" - \ transparent - \ contained - \ contains=p6InnerAnglesTwo - -" «words» -syn region p6StringFrench - \ matchgroup=p6Quote - \ start="«" - \ skip="\\\@" nextgroup=p6QPairs skipwhite skipempty -syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*" - -if exists("perl6_embedded_pir") - syn include @p6PIR syntax/pir.vim -endif - -" hardcoded set of delimiters -let s:delims = [ - \ ["\\\"", "\\\"", "p6EscDoubleQuote", "\\\\\\@", "p6EscCloseAngle", "\\%(\\\\\\@\\|<[^>]*>\\)"], - \ ["«", "»", "p6EscCloseFrench", "\\%(\\\\\\@>", "p6EscCloseAngle", "\\%(\\\\\\@>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"]) - call add(s:delims, ["\\s\\@<=<<<", ">>>", "p6EscCloseAngle", "\\%(\\\\\\@>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"]) -endif - -if !exists("perl6_extended_q") && !exists("perl6_extended_all") - " simple version, no special highlighting within the string - for [start_delim, end_delim, end_group, skip] in s:delims - exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained" - endfor - - if exists("perl6_embedded_pir") - " highlight embedded PIR code - for [start_delim, end_delim, end_group, skip] in s:delims - exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained" - endfor - endif -else - let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%(" - let s:after = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<=" - - let s:adverbs = [ - \ ["s", "scalar"], - \ ["a", "array"], - \ ["h", "hash"], - \ ["f", "function"], - \ ["c", "closure"], - \ ["b", "backslash"], - \ ["w", "words"], - \ ["ww", "quotewords"], - \ ["x", "exec"], - \ ] - - " these can't be conjoined with q and qq (e.g. as qqq and qqqq) - let s:q_adverbs = [ - \ ["q", "single"], - \ ["qq", "double"], - \ ] - - for [start_delim, end_delim, end_group, skip] in s:delims - " Q, q, and qq with any number of (ignored) adverbs - exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained" - exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained" - exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained" - - for [short, long] in s:adverbs - " Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs - exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" - exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" - exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" - - " Q, q, and qq, with one significant adverb - exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" - for [q_short, q_long] in s:q_adverbs - exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained" - endfor - exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" - exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" - - for [short2, long2] in s:adverbs - " Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb - exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained" - for [q_short2, q_long2] in s:q_adverbs - exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained" - endfor - exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained" - exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained" - endfor - endfor - endfor - unlet s:before s:after s:adverbs s:q_adverbs -endif -unlet s:delims - -" Match these so something else above can't. E.g. the "q" in "role q { }" -" should not be considered a string -syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" - -" :key -syn match p6Operator display ":\@ and p5=> autoquoting -syn match p6StringP5Auto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+p5=>" -syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@" -syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>" -syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*p5\ze=>" - -" Hyperoperators. Needs to come after the quoting operators (<>, «», etc) -exec "syn match p6HyperOp display \"»" .s:infix."»\\?\"" -exec "syn match p6HyperOp display \"«\\?".s:infix."«\"" -exec "syn match p6HyperOp display \"»" .s:infix."«\"" -exec "syn match p6HyperOp display \"«" .s:infix. "»\"" - -exec "syn match p6HyperOp display \">>" .s:infix."\\%(>>\\)\\?\"" -exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\"" -exec "syn match p6HyperOp display \">>" .s:infix."<<\"" -exec "syn match p6HyperOp display \"<<" .s:infix.">>\"" -unlet s:infix - -" Regexes and grammars - -syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty -syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained - -syn region p6RegexBlock - \ matchgroup=p6Normal - \ start="{" - \ end="}" - \ contained - \ contains=@p6Regexen,@p6Variables - -" Perl 6 regex bits - -syn cluster p6Regexen - \ add=p6RxMeta - \ add=p6RxEscape - \ add=p6EscHex - \ add=p6EscOct - \ add=p6EscNull - \ add=p6RxAnchor - \ add=p6RxCapture - \ add=p6RxGroup - \ add=p6RxAlternation - \ add=p6RxAdverb - \ add=p6RxAdverbArg - \ add=p6RxStorage - \ add=p6RxAssertion - \ add=p6RxQuoteWords - \ add=p6RxClosure - \ add=p6RxStringSQ - \ add=p6RxStringDQ - \ add=p6Comment - -syn match p6RxMeta display contained ".\%(\k\|\s\)\@" - \ contained - \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall -syn region p6RxAssertCall - \ matchgroup=p6Normal - \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@=" - \ end=")\@<=" - \ contained - \ contains=TOP -syn region p6RxCharClass - \ matchgroup=p6StringSpecial2 - \ start="\%(<[-!+?]\?\)\@<=\[" - \ skip="\\]" - \ end="]" - \ contained - \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull -syn region p6RxQuoteWords - \ matchgroup=p6StringSpecial2 - \ start="< " - \ end=">" - \ contained -syn region p6RxAdverb - \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)" - \ end="\z1\zs" - \ contained - \ contains=TOP - \ keepend -syn region p6RxAdverbArg - \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=(" - \ skip="([^)]*)" - \ end=")" - \ contained - \ contains=TOP -syn region p6RxStorage - \ matchgroup=p6Operator - \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@=" - \ end="$" - \ contains=TOP - \ contained - -" Perl 5 regex bits - -syn cluster p6RegexP5Base - \ add=p6RxP5Escape - \ add=p6RxP5Oct - \ add=p6RxP5Hex - \ add=p6RxP5EscMeta - \ add=p6RxP5CodePoint - \ add=p6RxP5Prop - -" normal regex stuff -syn cluster p6RegexP5 - \ add=@p6RegexP5Base - \ add=p6RxP5Quantifier - \ add=p6RxP5Meta - \ add=p6RxP5QuoteMeta - \ add=p6RxP5ParenMod - \ add=p6RxP5Verb - \ add=p6RxP5Count - \ add=p6RxP5Named - \ add=p6RxP5ReadRef - \ add=p6RxP5WriteRef - \ add=p6RxP5CharClass - \ add=p6RxP5Anchor - -" inside character classes -syn cluster p6RegexP5Class - \ add=@p6RegexP5Base - \ add=p6RxP5Posix - \ add=p6RxP5Range - -syn match p6RxP5Escape display contained "\\\S" -syn match p6RxP5CodePoint display contained "\\c\S\@=" nextgroup=p6RxP5CPId -syn match p6RxP5CPId display contained "\S" -syn match p6RxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq -syn match p6RxP5OctSeq display contained "\o\{1,3}" -syn match p6RxP5Anchor display contained "[\^$]" -syn match p6RxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq -syn match p6RxP5HexSeq display contained "\x\{1,2}" -syn region p6RxP5HexSeq - \ matchgroup=p6RxP5Escape - \ start="{" - \ end="}" - \ contained -syn region p6RxP5Named - \ matchgroup=p6RxP5Escape - \ start="\%(\\N\)\@<={" - \ end="}" - \ contained -syn match p6RxP5Quantifier display contained "\%([+*]\|(\@" - \ contained -syn match p6RxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId -syn match p6RxP5WriteRefId display contained "\d\+" -syn region p6RxP5WriteRefId - \ matchgroup=p6RxP5Escape - \ start="{" - \ end="}" - \ contained -syn match p6RxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId -syn match p6RxP5PropId display contained "\a" -syn region p6RxP5PropId - \ matchgroup=p6RxP5Escape - \ start="{" - \ end="}" - \ contained -syn match p6RxP5Meta display contained "[(|).]" -syn match p6RxP5ParenMod display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code -syn match p6RxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)" -syn match p6RxP5Mod display contained "?-\?[impsx]\+" -syn match p6RxP5Mod display contained "?\%([-+]\?\d\+\|R\)" -syn match p6RxP5Mod display contained "?(DEFINE)" -syn match p6RxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef -syn match p6RxP5ModDef display contained "\h\w*" -syn region p6RxP5ModName - \ matchgroup=p6StringSpecial - \ start="?'" - \ end="'" - \ contained -syn region p6RxP5ModName - \ matchgroup=p6StringSpecial - \ start="?P\?<" - \ end=">" - \ contained -syn region p6RxP5Code - \ matchgroup=p6StringSpecial - \ start="??\?{" - \ end="})\@=" - \ contained - \ contains=TOP -syn match p6RxP5EscMeta display contained "\\[?*.{}()[\]|\^$]" -syn match p6RxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId -syn region p6RxP5CountId - \ matchgroup=p6RxP5Escape - \ start="{" - \ end="}" - \ contained -syn match p6RxP5Verb display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)" -syn region p6RxP5QuoteMeta - \ matchgroup=p6RxP5Escape - \ start="\\Q" - \ end="\\E" - \ contained - \ contains=@p6Variables,p6EscBackSlash -syn region p6RxP5CharClass - \ matchgroup=p6StringSpecial - \ start="\[\^\?" - \ skip="\\]" - \ end="]" - \ contained - \ contains=@p6RegexP5Class -syn region p6RxP5Posix - \ matchgroup=p6RxP5Escape - \ start="\[:" - \ end=":]" - \ contained -syn match p6RxP5Range display contained "-" - -" 'string' inside a regex -syn region p6RxStringSQ - \ matchgroup=p6Quote - \ start="'" - \ skip="\\\@, mm, rx -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!>\@!" - \ skip="\\>" - \ end=">" - \ contains=@p6Regexen,@p6Variables - -" m«foo», mm«foo», rx«foo» -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@ -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" - \ skip="\\>" - \ end=">" - \ contains=@p6Regexen,@p6Variables - -" s«foo» -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@ -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" - \ skip="\\>" - \ end=">" - \ contains=@p6RegexP5,p6Variables - -" m:P5«» -syn region p6Match - \ matchgroup=p6Quote - \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@]*>" - \ end=">" - \ matchgroup=p6Error - \ start="^#<" - \ contains=p6Attention,p6Comment -syn region p6Comment - \ matchgroup=p6Comment - \ start="^\@]\|>>\@!\)*>>" - \ end=">>" - \ matchgroup=p6Error - \ start="^#<<" - \ contains=p6Attention,p6Comment - syn region p6Comment - \ matchgroup=p6Comment - \ start="^\@]\|>\%(>>\)\@!\)*>>>" - \ end=">>>" - \ matchgroup=p6Error - \ start="^#<<<" - \ contains=p6Attention,p6Comment - - syn region p6Comment - \ matchgroup=p6Comment - \ start="^\@" - \ end="^\ze\%(\s*$\|=\K\)" - \ contains=p6PodAbbrCodeType - \ keepend - -syn region p6PodAbbrCodeType - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - \ contains=p6PodName,p6PodAbbrCode - -syn region p6PodAbbrCode - \ start="^" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - -" Abbreviated blocks (everything is a comment) -syn region p6PodAbbrRegion - \ matchgroup=p6PodPrefix - \ start="^=\zecomment\>" - \ end="^\ze\%(\s*$\|=\K\)" - \ contains=p6PodAbbrCommentType - \ keepend - -syn region p6PodAbbrCommentType - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - \ contains=p6PodComment,p6PodAbbrNoCode - -" Abbreviated blocks (implicit code allowed) -syn region p6PodAbbrRegion - \ matchgroup=p6PodPrefix - \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>" - \ end="^\ze\%(\s*$\|=\K\)" - \ contains=p6PodAbbrType - \ keepend - -syn region p6PodAbbrType - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - \ contains=p6PodName,p6PodAbbr - -syn region p6PodAbbr - \ start="^" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - \ contains=@p6PodFormat,p6PodImplicitCode - -" Abbreviated block to end-of-file -syn region p6PodAbbrRegion - \ matchgroup=p6PodPrefix - \ start="^=\zeEND\>" - \ end="\%$" - \ contains=p6PodAbbrEOFType - \ keepend - -syn region p6PodAbbrEOFType - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="\%$" - \ contained - \ contains=p6PodName,p6PodAbbrEOF - -syn region p6PodAbbrEOF - \ start="^" - \ end="\%$" - \ contained - \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode - -" Directives -syn region p6PodDirectRegion - \ matchgroup=p6PodPrefix - \ start="^=\%(config\|use\)\>" - \ end="^\ze\%([^=]\|=\K\|\s*$\)" - \ contains=p6PodDirectArgRegion - \ keepend - -syn region p6PodDirectArgRegion - \ matchgroup=p6PodType - \ start="\S\+" - \ end="^\ze\%([^=]\|=\K\|\s*$\)" - \ contained - \ contains=p6PodDirectConfigRegion - -syn region p6PodDirectConfigRegion - \ start="" - \ end="^\ze\%([^=]\|=\K\|\s*$\)" - \ contained - \ contains=@p6PodConfig - -" =encoding is a special directive -syn region p6PodDirectRegion - \ matchgroup=p6PodPrefix - \ start="^=encoding\>" - \ end="^\ze\%([^=]\|=\K\|\s*$\)" - \ contains=p6PodEncodingArgRegion - \ keepend - -syn region p6PodEncodingArgRegion - \ matchgroup=p6PodName - \ start="\S\+" - \ end="^\ze\%([^=]\|=\K\|\s*$\)" - \ contained - -" Paragraph blocks (implicit code forbidden) -syn region p6PodParaRegion - \ matchgroup=p6PodPrefix - \ start="^=for\>" - \ end="^\ze\%(\s*$\|=\K\)" - \ contains=p6PodParaNoCodeTypeRegion - \ keepend - \ extend - -syn region p6PodParaNoCodeTypeRegion - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - \ contains=p6PodParaNoCode,p6PodParaConfigRegion - -syn region p6PodParaConfigRegion - \ start="" - \ end="^\ze\%([^=]\|=\k\@\ze\s*code\>" - \ end="^\ze\%(\s*$\|=\K\)" - \ contains=p6PodParaCodeTypeRegion - \ keepend - \ extend - -syn region p6PodParaCodeTypeRegion - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - \ contains=p6PodParaCode,p6PodParaConfigRegion - -syn region p6PodParaCode - \ start="^[^=]" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - -" Paragraph blocks (implicit code allowed) -syn region p6PodParaRegion - \ matchgroup=p6PodPrefix - \ start="^=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" - \ end="^\ze\%(\s*$\|=\K\)" - \ contains=p6PodParaTypeRegion - \ keepend - \ extend - -syn region p6PodParaTypeRegion - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - \ contains=p6PodPara,p6PodParaConfigRegion - -syn region p6PodPara - \ start="^[^=]" - \ end="^\ze\%(\s*$\|=\K\)" - \ contained - \ contains=@p6PodFormat,p6PodImplicitCode - -" Paragraph block to end-of-file -syn region p6PodParaRegion - \ matchgroup=p6PodPrefix - \ start="^=for\>\ze\s\+END\>" - \ end="\%$" - \ contains=p6PodParaEOFTypeRegion - \ keepend - \ extend - -syn region p6PodParaEOFTypeRegion - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="\%$" - \ contained - \ contains=p6PodParaEOF,p6PodParaConfigRegion - -syn region p6PodParaEOF - \ start="^[^=]" - \ end="\%$" - \ contained - \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode - -" Delimited blocks (implicit code forbidden) -syn region p6PodDelimRegion - \ matchgroup=p6PodPrefix - \ start="^=begin\>" - \ end="^=end\>" - \ contains=p6PodDelimNoCodeTypeRegion - \ keepend - \ extend - -syn region p6PodDelimNoCodeTypeRegion - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze=end\>" - \ contained - \ contains=p6PodDelimNoCode,p6PodDelimConfigRegion - -syn region p6PodDelimConfigRegion - \ start="" - \ end="^\ze\%([^=]\|=\K\|\s*$\)" - \ contained - \ contains=@p6PodConfig - -syn region p6PodDelimNoCode - \ start="^" - \ end="^\ze=end\>" - \ contained - \ contains=@p6PodNestedBlocks,@p6PodFormat - -" Delimited blocks (everything is code) -syn region p6PodDelimRegion - \ matchgroup=p6PodPrefix - \ start="^=begin\>\ze\s*code\>" - \ end="^=end\>" - \ contains=p6PodDelimCodeTypeRegion - \ keepend - \ extend - -syn region p6PodDelimCodeTypeRegion - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze=end\>" - \ contained - \ contains=p6PodDelimCode,p6PodDelimConfigRegion - -syn region p6PodDelimCode - \ start="^" - \ end="^\ze=end\>" - \ contained - \ contains=@p6PodNestedBlocks - -" Delimited blocks (implicit code allowed) -syn region p6PodDelimRegion - \ matchgroup=p6PodPrefix - \ start="^=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" - \ end="^=end\>" - \ contains=p6PodDelimTypeRegion - \ keepend - \ extend - -syn region p6PodDelimTypeRegion - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="^\ze=end\>" - \ contained - \ contains=p6PodDelim,p6PodDelimConfigRegion - -syn region p6PodDelim - \ start="^" - \ end="^\ze=end\>" - \ contained - \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode - -" Delimited block to end-of-file -syn region p6PodDelimRegion - \ matchgroup=p6PodPrefix - \ start="^=begin\>\ze\s\+END\>" - \ end="\%$" - \ contains=p6PodDelimEOFTypeRegion - \ extend - -syn region p6PodDelimEOFTypeRegion - \ matchgroup=p6PodType - \ start="\K\k*" - \ end="\%$" - \ contained - \ contains=p6PodDelimEOF,p6PodDelimConfigRegion - -syn region p6PodDelimEOF - \ start="^" - \ end="\%$" - \ contained - \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode - -syn cluster p6PodConfig - \ add=p6PodConfigOperator - \ add=p6PodExtraConfig - \ add=p6StringAuto - \ add=p6PodAutoQuote - \ add=p6StringSQ - -syn region p6PodParens - \ start="(" - \ end=")" - \ contained - \ contains=p6Number,p6StringSQ - -syn match p6PodAutoQuote display contained "=>" -syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption -syn match p6PodConfigOption display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle -syn match p6PodExtraConfig display contained "^=" -syn match p6PodVerticalBar display contained "|" -syn match p6PodColon display contained ":" -syn match p6PodSemicolon display contained ";" -syn match p6PodComma display contained "," -syn match p6PodImplicitCode display contained "^\s.*" - -syn region p6PodDelimEndRegion - \ matchgroup=p6PodType - \ start="\%(^=end\>\)\@<=" - \ end="\K\k*" - -" These may appear inside delimited blocks -syn cluster p6PodNestedBlocks - \ add=p6PodAbbrRegion - \ add=p6PodDirectRegion - \ add=p6PodParaRegion - \ add=p6PodDelimRegion - \ add=p6PodDelimEndRegion - -" Pod formatting codes - -syn cluster p6PodFormat - \ add=p6PodFormatOne - \ add=p6PodFormatTwo - \ add=p6PodFormatThree - \ add=p6PodFormatFrench - -" Balanced angles found inside formatting codes. Ensures proper nesting. - -syn region p6PodFormatAnglesOne - \ matchgroup=p6PodFormat - \ start="<" - \ skip="<[^>]*>" - \ end=">" - \ transparent - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne - -syn region p6PodFormatAnglesTwo - \ matchgroup=p6PodFormat - \ start="<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ transparent - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo - -syn region p6PodFormatAnglesThree - \ matchgroup=p6PodFormat - \ start="<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ transparent - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree - -syn region p6PodFormatAnglesFrench - \ matchgroup=p6PodFormat - \ start="«" - \ skip="«[^»]*»" - \ end="»" - \ transparent - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree - -" All formatting codes - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="\u<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="\u<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="\u<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="\u«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree - -" C<> and V<> don't allow nested formatting formatting codes - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="[CV]<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="[CV]<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="[CV]<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="[CV]«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench - -" L<> can have a "|" separator - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="L<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="L<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="L<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="L«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar - -" E<> can have a ";" separator - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="E<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="E<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="E<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="E«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon - -" M<> can have a ":" separator - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="M<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="M<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="M<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="M«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon - -" D<> can have "|" and ";" separators - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="D<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="D<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="D<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="D«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon - -" X<> can have "|", "," and ";" separators - -syn region p6PodFormatOne - \ matchgroup=p6PodFormatCode - \ start="X<" - \ skip="<[^>]*>" - \ end=">" - \ contained - \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma - -syn region p6PodFormatTwo - \ matchgroup=p6PodFormatCode - \ start="X<<" - \ skip="<<[^>]*>>" - \ end=">>" - \ contained - \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma - -syn region p6PodFormatThree - \ matchgroup=p6PodFormatCode - \ start="X<<<" - \ skip="<<<[^>]*>>>" - \ end=">>>" - \ contained - \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma - -syn region p6PodFormatFrench - \ matchgroup=p6PodFormatCode - \ start="X«" - \ skip="«[^»]*»" - \ end="»" - \ contained - \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma - -" Define the default highlighting. -" Only when an item doesn't have highlighting yet - -hi def link p6EscOctOld p6Error -hi def link p6PackageTwigil p6Twigil -hi def link p6StringAngle p6String -hi def link p6StringFrench p6String -hi def link p6StringAngles p6String -hi def link p6StringSQ p6String -hi def link p6StringDQ p6String -hi def link p6StringQ p6String -hi def link p6RxStringSQ p6String -hi def link p6RxStringDQ p6String -hi def link p6Substitution p6String -hi def link p6Transliteration p6String -hi def link p6StringAuto p6String -hi def link p6StringP5Auto p6String -hi def link p6Key p6String -hi def link p6Match p6String -hi def link p6RegexBlock p6String -hi def link p6RxP5CharClass p6String -hi def link p6RxP5QuoteMeta p6String -hi def link p6RxCharClass p6String -hi def link p6RxQuoteWords p6String -hi def link p6ReduceOp p6Operator -hi def link p6ReverseCrossOp p6Operator -hi def link p6HyperOp p6Operator -hi def link p6QuoteQ p6Operator -hi def link p6RxRange p6StringSpecial -hi def link p6RxAnchor p6StringSpecial -hi def link p6RxP5Anchor p6StringSpecial -hi def link p6CodePoint p6StringSpecial -hi def link p6RxMeta p6StringSpecial -hi def link p6RxP5Range p6StringSpecial -hi def link p6RxP5CPId p6StringSpecial -hi def link p6RxP5Posix p6StringSpecial -hi def link p6RxP5Mod p6StringSpecial -hi def link p6RxP5HexSeq p6StringSpecial -hi def link p6RxP5OctSeq p6StringSpecial -hi def link p6RxP5WriteRefId p6StringSpecial -hi def link p6HexSequence p6StringSpecial -hi def link p6OctSequence p6StringSpecial -hi def link p6RxP5Named p6StringSpecial -hi def link p6RxP5PropId p6StringSpecial -hi def link p6RxP5Quantifier p6StringSpecial -hi def link p6RxP5CountId p6StringSpecial -hi def link p6RxP5Verb p6StringSpecial -hi def link p6Escape p6StringSpecial2 -hi def link p6EscNull p6StringSpecial2 -hi def link p6EscHash p6StringSpecial2 -hi def link p6EscQQ p6StringSpecial2 -hi def link p6EscQuote p6StringSpecial2 -hi def link p6EscDoubleQuote p6StringSpecial2 -hi def link p6EscBackTick p6StringSpecial2 -hi def link p6EscForwardSlash p6StringSpecial2 -hi def link p6EscVerticalBar p6StringSpecial2 -hi def link p6EscExclamation p6StringSpecial2 -hi def link p6EscDollar p6StringSpecial2 -hi def link p6EscOpenCurly p6StringSpecial2 -hi def link p6EscCloseCurly p6StringSpecial2 -hi def link p6EscCloseBracket p6StringSpecial2 -hi def link p6EscCloseAngle p6StringSpecial2 -hi def link p6EscCloseFrench p6StringSpecial2 -hi def link p6EscBackSlash p6StringSpecial2 -hi def link p6RxEscape p6StringSpecial2 -hi def link p6RxCapture p6StringSpecial2 -hi def link p6RxAlternation p6StringSpecial2 -hi def link p6RxP5 p6StringSpecial2 -hi def link p6RxP5ReadRef p6StringSpecial2 -hi def link p6RxP5Oct p6StringSpecial2 -hi def link p6RxP5Hex p6StringSpecial2 -hi def link p6RxP5EscMeta p6StringSpecial2 -hi def link p6RxP5Meta p6StringSpecial2 -hi def link p6RxP5Escape p6StringSpecial2 -hi def link p6RxP5CodePoint p6StringSpecial2 -hi def link p6RxP5WriteRef p6StringSpecial2 -hi def link p6RxP5Prop p6StringSpecial2 - -hi def link p6Property Tag -hi def link p6Attention Todo -hi def link p6Type Type -hi def link p6Error Error -hi def link p6BlockLabel Label -hi def link p6Float Float -hi def link p6Normal Normal -hi def link p6Package Normal -hi def link p6PackageScope Normal -hi def link p6Number Number -hi def link p6VersionNum Number -hi def link p6String String -hi def link p6Repeat Repeat -hi def link p6Keyword Keyword -hi def link p6Pragma Keyword -hi def link p6Module Keyword -hi def link p6DeclareRoutine Keyword -hi def link p6VarStorage Special -hi def link p6FlowControl Special -hi def link p6NumberBase Special -hi def link p6Twigil Special -hi def link p6StringSpecial2 Special -hi def link p6VersionDot Special -hi def link p6Comment Comment -hi def link p6Include Include -hi def link p6Shebang PreProc -hi def link p6ClosureTrait PreProc -hi def link p6Routine Function -hi def link p6Operator Operator -hi def link p6Version Operator -hi def link p6Context Operator -hi def link p6Quote Delimiter -hi def link p6TypeConstraint PreCondit -hi def link p6Exception Exception -hi def link p6Placeholder Identifier -hi def link p6Variable Identifier -hi def link p6VarSlash Identifier -hi def link p6VarNum Identifier -hi def link p6VarExclam Identifier -hi def link p6VarMatch Identifier -hi def link p6VarName Identifier -hi def link p6MatchVar Identifier -hi def link p6RxP5ReadRefId Identifier -hi def link p6RxP5ModDef Identifier -hi def link p6RxP5ModName Identifier -hi def link p6Conditional Conditional -hi def link p6StringSpecial SpecialChar - -hi def link p6PodAbbr p6Pod -hi def link p6PodAbbrEOF p6Pod -hi def link p6PodAbbrNoCode p6Pod -hi def link p6PodAbbrCode p6PodCode -hi def link p6PodPara p6Pod -hi def link p6PodParaEOF p6Pod -hi def link p6PodParaNoCode p6Pod -hi def link p6PodParaCode p6PodCode -hi def link p6PodDelim p6Pod -hi def link p6PodDelimEOF p6Pod -hi def link p6PodDelimNoCode p6Pod -hi def link p6PodDelimCode p6PodCode -hi def link p6PodImplicitCode p6PodCode -hi def link p6PodExtraConfig p6PodPrefix -hi def link p6PodVerticalBar p6PodFormatCode -hi def link p6PodColon p6PodFormatCode -hi def link p6PodSemicolon p6PodFormatCode -hi def link p6PodComma p6PodFormatCode -hi def link p6PodFormatOne p6PodFormat -hi def link p6PodFormatTwo p6PodFormat -hi def link p6PodFormatThree p6PodFormat -hi def link p6PodFormatFrench p6PodFormat - -hi def link p6PodType Type -hi def link p6PodConfigOption String -hi def link p6PodCode PreProc -hi def link p6Pod Comment -hi def link p6PodComment Comment -hi def link p6PodAutoQuote Operator -hi def link p6PodConfigOperator Operator -hi def link p6PodPrefix Statement -hi def link p6PodName Identifier -hi def link p6PodFormatCode SpecialChar -hi def link p6PodFormat SpecialComment - - -" Syncing to speed up processing -"syn sync match p6SyncPod groupthere p6PodAbbrRegion "^=\K\k*\>" -"syn sync match p6SyncPod groupthere p6PodDirectRegion "^=\%(config\|use\|encoding\)\>" -"syn sync match p6SyncPod groupthere p6PodParaRegion "^=for\>" -"syn sync match p6SyncPod groupthere p6PodDelimRegion "^=begin\>" -"syn sync match p6SyncPod groupthere p6PodDelimEndRegion "^=end\>" - -" Let's just sync whole file, the other methods aren't reliable (or I don't -" know how to use them reliably) -syn sync fromstart - -setlocal foldmethod=syntax - -let b:current_syntax = "perl6" - -let &cpo = s:keepcpo -unlet s:keepcpo - -" vim:ts=8:sts=4:sw=4:expandtab:ft=vim diff --git a/runtime/syntax/r.vim b/runtime/syntax/r.vim index 9e25dae363..a8100cfded 100644 --- a/runtime/syntax/r.vim +++ b/runtime/syntax/r.vim @@ -5,7 +5,7 @@ " Tom Payne " Contributor: Johannes Ranke " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Wed Aug 01, 2018 10:10PM +" Last Change: Sun Mar 28, 2021 01:47PM " Filenames: *.R *.r *.Rhistory *.Rt " " NOTE: The highlighting of R functions might be defined in @@ -53,12 +53,12 @@ syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):" syn match rTodoParen contained "\(BUG\|FIXME\|NOTE\|TODO\)\s*(.\{-})\s*:" contains=rTodoKeyw,rTodoInfo transparent syn keyword rTodoKeyw BUG FIXME NOTE TODO contained syn match rTodoInfo "(\zs.\{-}\ze)" contained -syn match rComment contains=@Spell,rCommentTodo,rTodoParen,rOBlock "#.*" +syn match rComment contains=@Spell,rCommentTodo,rTodoParen "#.*" " Roxygen if g:r_syntax_hl_roxygen " A roxygen block can start at the beginning of a file (first version) and - " after a blank line (second version). It ends when a line that does not + " after a blank line (second version). It ends when a line appears that does not " contain a roxygen comment. In the following comments, any line containing " a roxygen comment marker (one or two hash signs # followed by a single " quote ' and preceded only by whitespace) is called a roxygen line. A @@ -71,6 +71,12 @@ if g:r_syntax_hl_roxygen syn match rOTitleBlock "\%^\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag syn match rOTitleBlock "^\s*\n\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag + " A title as part of a block is always at the beginning of the block, i.e. + " either at the start of a file or after a completely empty line. + syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag + syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag + syn match rOTitleTag contained "@title" + " When a roxygen block has a title and additional content, the title " consists of one or more roxygen lines (as little as possible are matched), " followed either by an empty roxygen line @@ -87,16 +93,15 @@ if g:r_syntax_hl_roxygen syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold - " A title as part of a block is always at the beginning of the block, i.e. - " either at the start of a file or after a completely empty line. - syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag - syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag - syn match rOTitleTag contained "@title" - syn match rOCommentKey "^\s*#\{1,2}'" contained - syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold + syn region rOExamples start="^\s*#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold + + " R6 classes may contain roxygen lines independent of roxygen blocks + syn region rOR6Class start=/R6Class(/ end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold + syn match rOR6Block "#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained + syn match rOR6Block "^\s*#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained - " rOTag list generated from the lists in + " rOTag list originally generated from the lists that were available in " https://github.com/klutometis/roxygen/R/rd.R and " https://github.com/klutometis/roxygen/R/namespace.R " using s/^ \([A-Za-z0-9]*\) = .*/ syn match rOTag contained "@\1"/ @@ -155,7 +160,10 @@ if g:r_syntax_hl_roxygen syn match rOTag contained "@S3method" syn match rOTag contained "@useDynLib" " other + syn match rOTag contained "@eval" syn match rOTag contained "@include" + syn match rOTag contained "@includeRmd" + syn match rOTag contained "@order" endif @@ -186,6 +194,11 @@ syn match rSpecial display contained "\\U\x\{1,8}" syn match rSpecial display contained "\\u{\x\{1,4}}" syn match rSpecial display contained "\\U{\x\{1,8}}" +" Raw string +syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)(/ end=/)\z2\z1/ keepend +syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\){/ end=/}\z2\z1/ keepend +syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)\[/ end=/\]\z2\z1/ keepend + " Statement syn keyword rStatement break next return syn keyword rConditional if else @@ -354,6 +367,8 @@ hi def link rOperator Operator hi def link rOpError Error hi def link rParenError Error hi def link rPreProc PreProc +hi def link rRawString String +hi def link rRawStrDelim Delimiter hi def link rRepeat Repeat hi def link rSpecial SpecialChar hi def link rStatement Statement @@ -366,6 +381,7 @@ if g:r_syntax_hl_roxygen hi def link rOTitleBlock Title hi def link rOBlock Comment hi def link rOBlockNoTitle Comment + hi def link rOR6Block Comment hi def link rOTitle Title hi def link rOCommentKey Comment hi def link rOExamples SpecialComment diff --git a/runtime/syntax/raku.vim b/runtime/syntax/raku.vim new file mode 100644 index 0000000000..1bf9b4994c --- /dev/null +++ b/runtime/syntax/raku.vim @@ -0,0 +1,1971 @@ +" Vim syntax file +" Language: Raku +" Maintainer: vim-perl +" Homepage: https://github.com/Raku/vim-raku +" Bugs/requests: https://github.com/Raku/vim-raku/issues +" Last Change: 2021-04-16 + +" Contributors: Luke Palmer +" Moritz Lenz +" Hinrik Örn Sigurðsson +" +" This is a big undertaking. +" +" The ftdetect/raku.vim file in this repository takes care of setting the +" right filetype for Raku files. To set it explicitly you can also add this +" line near the bottom of your source file: +" # vim: filetype=raku + +" TODO: +" * Go over the list of keywords/types to see what's deprecated/missing +" * Add more support for folding (:help syn-fold) +" +" If you want to have Pir code inside Q:PIR// strings highlighted, do: +" let raku_embedded_pir=1 +" +" The above requires pir.vim, which you can find in Parrot's repository: +" https://github.com/parrot/parrot/tree/master/editor +" +" To highlight Perl 5 regexes (m:P5//): +" let raku_perl5_regexes=1 +" +" To enable folding: +" let raku_fold=1 + +if version < 704 | throw "raku.vim uses regex syntax which Vim <7.4 doesn't support. Try 'make fix_old_vim' in the vim-perl repository." | endif + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" Patterns which will be interpolated by the preprocessor (tools/preproc.pl): +" +" @@IDENT_NONDIGIT@@ "[A-Za-z_\xC0-\xFF]" +" @@IDENT_CHAR@@ "[A-Za-z_\xC0-\xFF0-9]" +" @@IDENTIFIER@@ "\%(@@IDENT_NONDIGIT@@\%(@@IDENT_CHAR@@\|[-']@@IDENT_NONDIGIT@@\@=\)*\)" +" @@IDENTIFIER_START@@ "@@IDENT_CHAR@@\@1". +syn match rakuKeywordStart display "\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!\)\@=[A-Za-z_\xC0-\xFF0-9]\@1" nextgroup=rakuDeclare,rakuIdentifier skipwhite skipempty +syn match rakuDeclare display "[.^]\@1" nextgroup=rakuIdentifier skipwhite skipempty +syn match rakuDeclareRegex display "[.^]\@1" nextgroup=rakuRegexName skipwhite skipempty + +syn match rakuTypeConstraint display "\%([.^]\|^\s*\)\@" +syn match rakuTypeConstraint display "\%([.^]\|^\s*\)\@».;\\∈∉∋∌∩∪≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖∅∘]" +syn match rakuOperator display "\%(:\@1][=+]\?\|cont\|elem\))" + +" Reverse, cross, and zip metaoperators +exec "syn match rakuRSXZOp display \"[RSXZ]:\\@!\\%(\\a\\@=\\%(". s:alpha_metaops_or . "\\)\\>\\|[[:alnum:]]\\@!\\%([.,]\\|[^[,.[:alnum:][:space:]]\\)\\+\\|\\s\\@=\\|$\\)\"" + +syn match rakuBlockLabel display "^\s*\zs\h\w*\s*::\@!\_s\@=" + +syn match rakuNumber display "[A-Za-z_\xC0-\xFF0-9]\@1" +syn match rakuContext display "\%(\$\|@\|%\|&\)(\@=" + +" Quoting + +" one cluster for every quote adverb +syn cluster rakuInterp_scalar + \ add=rakuInterpScalar + +syn cluster rakuInterp_array + \ add=rakuInterpArray + +syn cluster rakuInterp_hash + \ add=rakuInterpHash + +syn cluster rakuInterp_function + \ add=rakuInterpFunction + +syn cluster rakuInterp_closure + \ add=rakuInterpClosure + +syn cluster rakuInterp_q + \ add=rakuEscQQ + \ add=rakuEscBackSlash + +syn cluster rakuInterp_backslash + \ add=@rakuInterp_q + \ add=rakuEscape + \ add=rakuEscOpenCurly + \ add=rakuEscCodePoint + \ add=rakuEscHex + \ add=rakuEscOct + \ add=rakuEscOctOld + \ add=rakuEscNull + +syn cluster rakuInterp_qq + \ add=@rakuInterp_scalar + \ add=@rakuInterp_array + \ add=@rakuInterp_hash + \ add=@rakuInterp_function + \ add=@rakuInterp_closure + \ add=@rakuInterp_backslash + \ add=rakuMatchVarSigil + +syn region rakuInterpScalar + \ start="\ze\z(\$\%(\%(\%(\d\+\|!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" + \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@1]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" + \ end="\z1\zs" + \ contained keepend + \ contains=TOP + +syn region rakuInterpArray + \ matchgroup=rakuContext + \ start="@\ze()\@!" + \ skip="([^)]*)" + \ end=")\zs" + \ contained + \ contains=TOP + +syn region rakuInterpHash + \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" + \ end="\z1\zs" + \ contained keepend + \ contains=TOP + +syn region rakuInterpHash + \ matchgroup=rakuContext + \ start="%\ze()\@!" + \ skip="([^)]*)" + \ end=")\zs" + \ contained + \ contains=TOP + +syn region rakuInterpFunction + \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" + \ end="\z1\zs" + \ contained keepend + \ contains=TOP + +syn region rakuInterpFunction + \ matchgroup=rakuContext + \ start="&\ze()\@!" + \ skip="([^)]*)" + \ end=")\zs" + \ contained + \ contains=TOP + +syn region rakuInterpClosure + \ start="\\\@1" contained +syn match rakuEscCloseFrench display "\\»" contained +syn match rakuEscBackTick display "\\`" contained +syn match rakuEscForwardSlash display "\\/" contained +syn match rakuEscVerticalBar display "\\|" contained +syn match rakuEscExclamation display "\\!" contained +syn match rakuEscComma display "\\," contained +syn match rakuEscDollar display "\\\$" contained +syn match rakuEscCloseCurly display "\\}" contained +syn match rakuEscCloseBracket display "\\\]" contained + +" matches :key, :!key, :$var, :key, etc +" Since we don't know in advance how the adverb ends, we use a trick. +" Consume nothing with the start pattern (\ze at the beginning), +" while capturing the whole adverb into \z1 and then putting it before +" the match start (\zs) of the end pattern. +syn region rakuAdverb + \ start="\ze\z(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)" + \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@1<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@1 +" Distinguishing this from the "less than" operator is tricky. For now, +" it matches if any of the following is true: +" +" * There is whitespace missing on either side of the "<", since +" people tend to put spaces around "less than". We make an exception +" for " = < ... >" assignments though. +" * It comes after "enum", "for", "any", "all", or "none" +" * It's the first or last thing on a line (ignoring whitespace) +" * It's preceded by "(\s*" or "=\s\+" +" * It's empty and terminated on the same line (e.g. <> and < >) +" +" It never matches when: +" +" * Preceded by [<+~=!] (e.g. <>, =<$foo>, * !< 3) +" * Followed by [-=] (e.g. <--, <=, <==, <->) +syn region rakuStringAngle + \ matchgroup=rakuQuote + \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!" + \ start="\%(\s\|[<+~=!]\)\@\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!" + \ start="[<+~=!]\@1\|\%([=-]\{1,2}>\|[=-]\{1,2}\)\)\@!" + \ start="\%(^\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!" + \ start="[<+~=!]\@1\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!" + \ start="<\%(\s*>\)\@=" + \ skip="\\\@1" + \ end=">" + \ contains=rakuInnerAnglesOne,rakuEscBackSlash,rakuEscCloseAngle + +syn region rakuStringAngleFixed + \ matchgroup=rakuQuote + \ start="<" + \ skip="\\\@1" + \ end=">" + \ contains=rakuInnerAnglesOne,rakuEscBackSlash,rakuEscCloseAngle + \ contained + +syn region rakuInnerAnglesOne + \ matchgroup=rakuStringAngle + \ start="\\\@1" + \ end=">" + \ transparent contained + \ contains=rakuInnerAnglesOne + +" <> +syn region rakuStringAngles + \ matchgroup=rakuQuote + \ start="<<=\@!" + \ skip="\\\@1" + \ end=">>" + \ contains=rakuInnerAnglesTwo,@rakuInterp_qq,rakuComment,rakuBracketComment,rakuEscHash,rakuEscCloseAngle,rakuAdverb,rakuStringSQ,rakuStringDQ + +syn region rakuInnerAnglesTwo + \ matchgroup=rakuStringAngles + \ start="<<" + \ skip="\\\@1" + \ end=">>" + \ transparent contained + \ contains=rakuInnerAnglesTwo + +" «words» +syn region rakuStringFrench + \ matchgroup=rakuQuote + \ start="«" + \ skip="\\\@1" and "«»" strings in order to override +" them, but before other types of strings, to avoid matching those delimiters +" as parts of hyperops. +syn match rakuHyperOp display #[^[:digit:][{('",:[:space:]][^[{('",:[:space:]]*\%(«\|<<\)# +syn match rakuHyperOp display "«\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+[«»]" +syn match rakuHyperOp display "»\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(«\|»\?\)" +syn match rakuHyperOp display "<<\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(<<\|>>\)" +syn match rakuHyperOp display ">>\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(<<\|\%(>>\)\?\)" + +" 'string' +syn region rakuStringSQ + \ matchgroup=rakuQuote + \ start="'" + \ skip="\\\@1", "rakuEscCloseAngle", "\\%(\\\\\\@1\\|<[^>]*>\\)"], + \ ["French", "«", "»", "rakuEscCloseFrench", "\\%(\\\\\\@1, @ +syn region rakuMatchVarSigil + \ matchgroup=rakuVariable + \ start="[$@]\%(<<\@!\)\@=" + \ end=">\@1<=" + \ contains=rakuMatchVar + +syn region rakuMatchVar + \ matchgroup=rakuTwigil + \ start="<" + \ end=">" + \ contained + +syn region rakuRxClosure + \ matchgroup=rakuNormal + \ start="{" + \ end="}" + \ contained + \ containedin=rakuRxClosure + \ contains=TOP +syn region rakuRxGroup + \ matchgroup=rakuStringSpecial2 + \ start="\[" + \ end="]" + \ contained + \ contains=@rakuRegexen,@rakuVariables,rakuMatchVarSigil +syn region rakuRxAssertion + \ matchgroup=rakuStringSpecial2 + \ start="<\%(?\?\%(before\|after\)\|\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)=\)\|[+?*]\)\?" + \ end=">" + \ contained + \ contains=@rakuRegexen,rakuIdentifier,@rakuVariables,rakuRxCharClass,rakuRxAssertCall +syn region rakuRxAssertGroup + \ matchgroup=rakuStringSpecial2 + \ start="<\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)=\[" + \ skip="\\\@1" + \ contained keepend + \ contains=TOP +syn match rakuRxBoundary display contained "\%([«»]\|<<\|>>\)" +syn region rakuRxCharClass + \ matchgroup=rakuStringSpecial2 + \ start="\%(<[-!+?]\?\)\@2<=\[" + \ skip="\\]" + \ end="]" + \ contained + \ contains=rakuRxRange,rakuRxEscape,rakuEscHex,rakuEscOct,rakuEscCodePoint,rakuEscNull +syn region rakuRxQuoteWords + \ matchgroup=rakuStringSpecial2 + \ start="<\s" + \ end="\s\?>" + \ contained +syn region rakuRxAdverb + \ start="\ze\z(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)" + \ end="\z1\zs" + \ contained keepend + \ contains=TOP +syn region rakuRxAdverbArg + \ start="\%(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\@<=(" + \ skip="([^)]\{-})" + \ end=")" + \ contained + \ keepend + \ contains=TOP +syn region rakuRxStorage + \ matchgroup=rakuOperator + \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@=" + \ end="$" + \ contains=TOP + \ contained + \ keepend + +" 'string' inside a regex +syn region rakuRxStringSQ + \ matchgroup=rakuQuote + \ start="'" + \ skip="\\\@1\)\)\@=" +syn match rakuVarSlash display "\$/" +syn match rakuVarExclam display "\$!" +syn match rakuVarMatch display "\$¢" +syn match rakuVarNum display "\$\d\+" +syn match rakuVariable display "self" +syn match rakuVariable display "[@$%&]\?[@&$%]\$*\%(::\|\%(\%([.^*?=!~]\|:\@1>\)" contained +syn match rakuTwigil display "\%([.^*?=!~]\|:\@1\|\<\%(if\|unless\|while\|when\|where\|so\)\)\s*\)\@<=/[/=]\@!" + \ skip="\\/" + \ end="/" + \ contains=@rakuRegexen,rakuVariable,rakuVarExclam,rakuVarMatch,rakuVarNum + +" m/foo/, m$foo$, m!foo!, etc +syn region rakuMatch + \ matchgroup=rakuQuote + \ start=+\z([/!$,|`"]\)+ + \ skip="\\\z1" + \ end="\z1" + \ contained + \ contains=@rakuRegexen,rakuVariable,rakuVarNum + +" m, m«foo», m{foo}, etc +for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims + exec "syn region rakuMatch matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuRegexen,@rakuVariables" +endfor +unlet s:name s:start_delim s:end_delim s:end_group s:skip + +" Substitutions + +" s/foo//, s$foo$$, s!foo!!, etc +syn region rakuSubstitution + \ matchgroup=rakuQuote + \ start=+\z([/!$,|`"]\)+ + \ skip="\\\z1" + \ end="\z1"me=e-1 + \ contained + \ contains=@rakuRegexen,rakuVariable,rakuVarNum + \ nextgroup=rakuReplacement + +syn region rakuReplacement + \ matchgroup=rakuQuote + \ start="\z(.\)" + \ skip="\\\z1" + \ end="\z1" + \ contained + \ contains=@rakuInterp_qq + +" s, s«foo»«bar», s{foo}{bar}, etc +for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims + exec "syn region rakuSubstitution matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuRegexen,@rakuVariables nextgroup=rakuRepl".s:name + exec "syn region rakuRepl".s:name." matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuInterp_qq" +endfor +unlet s:name s:start_delim s:end_delim s:end_group s:skip + +" Transliteration + +" tr/foo/bar/, tr|foo|bar, etc +syn region rakuTransliteration + \ matchgroup=rakuQuote + \ start=+\z([/!$,|`"]\)+ + \ skip="\\\z1" + \ end="\z1"me=e-1 + \ contained + \ contains=rakuRxRange + \ nextgroup=rakuTransRepl + +syn region rakuTransRepl + \ matchgroup=rakuQuote + \ start="\z(.\)" + \ skip="\\\z1" + \ end="\z1" + \ contained + \ contains=@rakuInterp_qq,rakuRxRange + +" tr, tr«foo»«bar», tr{foo}{bar}, etc +for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims + exec "syn region rakuTransliteration matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=rakuRxRange nextgroup=rakuTransRepl".s:name + exec "syn region rakuTransRepl".s:name." matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuInterp_qq,rakuRxRange" +endfor +unlet s:name s:start_delim s:end_delim s:end_group s:skip s:bracketing_delims + +if exists("raku_perl5_regexes") || exists("raku_extended_all") + +" Perl 5 regex regions + +syn cluster rakuRegexP5Base + \ add=rakuRxP5Escape + \ add=rakuRxP5Oct + \ add=rakuRxP5Hex + \ add=rakuRxP5EscMeta + \ add=rakuRxP5CodePoint + \ add=rakuRxP5Prop + +" normal regex stuff +syn cluster rakuRegexP5 + \ add=@rakuRegexP5Base + \ add=rakuRxP5Quantifier + \ add=rakuRxP5Meta + \ add=rakuRxP5QuoteMeta + \ add=rakuRxP5ParenMod + \ add=rakuRxP5Verb + \ add=rakuRxP5Count + \ add=rakuRxP5Named + \ add=rakuRxP5ReadRef + \ add=rakuRxP5WriteRef + \ add=rakuRxP5CharClass + \ add=rakuRxP5Anchor + +" inside character classes +syn cluster rakuRegexP5Class + \ add=@rakuRegexP5Base + \ add=rakuRxP5Posix + \ add=rakuRxP5Range + +syn match rakuRxP5Escape display contained "\\\S" +syn match rakuRxP5CodePoint display contained "\\c\S\@=" nextgroup=rakuRxP5CPId +syn match rakuRxP5CPId display contained "\S" +syn match rakuRxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=rakuRxP5OctSeq +syn match rakuRxP5OctSeq display contained "\o\{1,3}" +syn match rakuRxP5Anchor display contained "[\^$]" +syn match rakuRxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=rakuRxP5HexSeq +syn match rakuRxP5HexSeq display contained "\x\{1,2}" +syn region rakuRxP5HexSeq + \ matchgroup=rakuRxP5Escape + \ start="{" + \ end="}" + \ contained +syn region rakuRxP5Named + \ matchgroup=rakuRxP5Escape + \ start="\%(\\N\)\@2<={" + \ end="}" + \ contained +syn match rakuRxP5Quantifier display contained "\%([+*]\|(\@1" + \ contained +syn match rakuRxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=rakuRxP5WriteRefId +syn match rakuRxP5WriteRefId display contained "\d\+" +syn region rakuRxP5WriteRefId + \ matchgroup=rakuRxP5Escape + \ start="{" + \ end="}" + \ contained +syn match rakuRxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=rakuRxP5PropId +syn match rakuRxP5PropId display contained "\a" +syn region rakuRxP5PropId + \ matchgroup=rakuRxP5Escape + \ start="{" + \ end="}" + \ contained +syn match rakuRxP5Meta display contained "[(|).]" +syn match rakuRxP5ParenMod display contained "(\@1<=?\@=" nextgroup=rakuRxP5Mod,rakuRxP5ModName,rakuRxP5Code +syn match rakuRxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)" +syn match rakuRxP5Mod display contained "?-\?[impsx]\+" +syn match rakuRxP5Mod display contained "?\%([-+]\?\d\+\|R\)" +syn match rakuRxP5Mod display contained "?(DEFINE)" +syn match rakuRxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=rakuRxP5ModDef +syn match rakuRxP5ModDef display contained "\h\w*" +syn region rakuRxP5ModName + \ matchgroup=rakuStringSpecial + \ start="?'" + \ end="'" + \ contained +syn region rakuRxP5ModName + \ matchgroup=rakuStringSpecial + \ start="?P\?<" + \ end=">" + \ contained +syn region rakuRxP5Code + \ matchgroup=rakuStringSpecial + \ start="??\?{" + \ end="})\@=" + \ contained + \ contains=TOP +syn match rakuRxP5EscMeta display contained "\\[?*.{}()[\]|\^$]" +syn match rakuRxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=rakuRxP5CountId +syn region rakuRxP5CountId + \ matchgroup=rakuRxP5Escape + \ start="{" + \ end="}" + \ contained +syn match rakuRxP5Verb display contained "(\@1<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)" +syn region rakuRxP5QuoteMeta + \ matchgroup=rakuRxP5Escape + \ start="\\Q" + \ end="\\E" + \ contained + \ contains=@rakuVariables,rakuEscBackSlash +syn region rakuRxP5CharClass + \ matchgroup=rakuStringSpecial + \ start="\[\^\?" + \ skip="\\]" + \ end="]" + \ contained + \ contains=@rakuRegexP5Class +syn region rakuRxP5Posix + \ matchgroup=rakuRxP5Escape + \ start="\[:" + \ end=":]" + \ contained +syn match rakuRxP5Range display contained "-" + +" m:P5// +syn region rakuMatch + \ matchgroup=rakuQuote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2 +syn region rakuMatch + \ matchgroup=rakuQuote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2\@!" + \ skip="\\>" + \ end=">" + \ contains=@rakuRegexP5,rakuVariables + +" m:P5«» +syn region rakuMatch + \ matchgroup=rakuQuote + \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2]*>" + \ end=">" + \ contains=rakuAttention,rakuBracketComment +syn region rakuBracketComment + \ start="#[`|=]«" + \ skip="«[^»]*»" + \ end="»" + \ contains=rakuAttention,rakuBracketComment + +" Comments with double and triple delimiters +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]((" + \ skip="((\%([^)\|))\@!]\)*))" + \ end="))" + \ contains=rakuAttention,rakuBracketComment +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=](((" + \ skip="(((\%([^)]\|)\%())\)\@!\)*)))" + \ end=")))" + \ contains=rakuAttention,rakuBracketComment + +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]\[\[" + \ skip="\[\[\%([^\]]\|]]\@!\)*]]" + \ end="]]" + \ contains=rakuAttention,rakuBracketComment +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]\[\[\[" + \ skip="\[\[\[\%([^\]]\|]\%(]]\)\@!\)*]]]" + \ end="]]]" + \ contains=rakuAttention,rakuBracketComment + +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]{{" + \ skip="{{\%([^}]\|}}\@!\)*}}" + \ end="}}" + \ contains=rakuAttention,rakuBracketComment +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]{{{" + \ skip="{{{\%([^}]\|}\%(}}\)\@!\)*}}}" + \ end="}}}" + \ contains=rakuAttention,rakuBracketComment + +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]<<" + \ skip="<<\%([^>]\|>>\@!\)*>>" + \ end=">>" + \ contains=rakuAttention,rakuBracketComment +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]<<<" + \ skip="<<<\%([^>]\|>\%(>>\)\@!\)*>>>" + \ end=">>>" + \ contains=rakuAttention,rakuBracketComment + +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]««" + \ skip="««\%([^»]\|»»\@!\)*»»" + \ end="»»" + \ contains=rakuAttention,rakuBracketComment +syn region rakuBracketComment + \ matchgroup=rakuBracketComment + \ start="#[`|=]«««" + \ skip="«««\%([^»]\|»\%(»»\)\@!\)*»»»" + \ end="»»»" + \ contains=rakuAttention,rakuBracketComment + +syn match rakuShebang display "\%^#!.*" + +" => autoquoting +syn match rakuStringAuto display "\.\@1" +syn match rakuStringAuto display "\.\@1" +syn match rakuStringAuto display "\.\@1" + +" Pod + +" Abbreviated blocks (implicit code forbidden) +syn region rakuPodAbbrRegion + \ matchgroup=rakuPodPrefix + \ start="^\s*\zs=\ze\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contains=rakuPodAbbrNoCodeType + \ keepend + +syn region rakuPodAbbrNoCodeType + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=rakuPodName,rakuPodAbbrNoCode + +syn match rakuPodName contained ".\+" contains=@rakuPodFormat +syn match rakuPodComment contained ".\+" + +syn region rakuPodAbbrNoCode + \ start="^" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=@rakuPodFormat + +" Abbreviated blocks (everything is code) +syn region rakuPodAbbrRegion + \ matchgroup=rakuPodPrefix + \ start="^\s*\zs=\zecode\>" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contains=rakuPodAbbrCodeType + \ keepend + +syn region rakuPodAbbrCodeType + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=rakuPodName,rakuPodAbbrCode + +syn region rakuPodAbbrCode + \ start="^" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + +" Abbreviated blocks (everything is a comment) +syn region rakuPodAbbrRegion + \ matchgroup=rakuPodPrefix + \ start="^=\zecomment\>" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contains=rakuPodAbbrCommentType + \ keepend + +syn region rakuPodAbbrCommentType + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=rakuPodComment,rakuPodAbbrNoCode + +" Abbreviated blocks (implicit code allowed) +syn region rakuPodAbbrRegion + \ matchgroup=rakuPodPrefix + \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contains=rakuPodAbbrType + \ keepend + +syn region rakuPodAbbrType + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=rakuPodName,rakuPodAbbr + +syn region rakuPodAbbr + \ start="^" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=@rakuPodFormat,rakuPodImplicitCode + +" Abbreviated block to end-of-file +syn region rakuPodAbbrRegion + \ matchgroup=rakuPodPrefix + \ start="^=\zeEND\>" + \ end="\%$" + \ contains=rakuPodAbbrEOFType + \ keepend + +syn region rakuPodAbbrEOFType + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="\%$" + \ contained + \ contains=rakuPodName,rakuPodAbbrEOF + +syn region rakuPodAbbrEOF + \ start="^" + \ end="\%$" + \ contained + \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode + +" Directives +syn region rakuPodDirectRegion + \ matchgroup=rakuPodPrefix + \ start="^=\%(config\|use\)\>" + \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)" + \ contains=rakuPodDirectArgRegion + \ keepend + +syn region rakuPodDirectArgRegion + \ matchgroup=rakuPodType + \ start="\S\+" + \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)" + \ contained + \ contains=rakuPodDirectConfigRegion + +syn region rakuPodDirectConfigRegion + \ start="" + \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)" + \ contained + \ contains=@rakuPodConfig + +" =encoding is a special directive +syn region rakuPodDirectRegion + \ matchgroup=rakuPodPrefix + \ start="^=encoding\>" + \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)" + \ contains=rakuPodEncodingArgRegion + \ keepend + +syn region rakuPodEncodingArgRegion + \ matchgroup=rakuPodName + \ start="\S\+" + \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)" + \ contained + +" Paragraph blocks (implicit code forbidden) +syn region rakuPodParaRegion + \ matchgroup=rakuPodPrefix + \ start="^\s*\zs=for\>" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contains=rakuPodParaNoCodeTypeRegion + \ keepend extend + +syn region rakuPodParaNoCodeTypeRegion + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=rakuPodParaNoCode,rakuPodParaConfigRegion + +syn region rakuPodParaConfigRegion + \ start="" + \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\@1\ze\s*code\>" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contains=rakuPodParaCodeTypeRegion + \ keepend extend + +syn region rakuPodParaCodeTypeRegion + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=rakuPodParaCode,rakuPodParaConfigRegion + +syn region rakuPodParaCode + \ start="^[^=]" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + +" Paragraph blocks (implicit code allowed) +syn region rakuPodParaRegion + \ matchgroup=rakuPodPrefix + \ start="^\s*\zs=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" + \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contains=rakuPodParaTypeRegion + \ keepend extend + +syn region rakuPodParaTypeRegion + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=rakuPodPara,rakuPodParaConfigRegion + +syn region rakuPodPara + \ start="^[^=]" + \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)" + \ contained + \ contains=@rakuPodFormat,rakuPodImplicitCode + +" Paragraph block to end-of-file +syn region rakuPodParaRegion + \ matchgroup=rakuPodPrefix + \ start="^=for\>\ze\s\+END\>" + \ end="\%$" + \ contains=rakuPodParaEOFTypeRegion + \ keepend extend + +syn region rakuPodParaEOFTypeRegion + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="\%$" + \ contained + \ contains=rakuPodParaEOF,rakuPodParaConfigRegion + +syn region rakuPodParaEOF + \ start="^[^=]" + \ end="\%$" + \ contained + \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode + +" Delimited blocks (implicit code forbidden) +syn region rakuPodDelimRegion + \ matchgroup=rakuPodPrefix + \ start="^\z(\s*\)\zs=begin\>" + \ end="^\z1\zs=end\>" + \ contains=rakuPodDelimNoCodeTypeRegion + \ keepend extend skipwhite + \ nextgroup=rakuPodType + +syn region rakuPodDelimNoCodeTypeRegion + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\s*\zs\ze=end\>" + \ contained + \ contains=rakuPodDelimNoCode,rakuPodDelimConfigRegion + +syn region rakuPodDelimConfigRegion + \ start="" + \ end="^\s*\zs\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)" + \ contained + \ contains=@rakuPodConfig + +syn region rakuPodDelimNoCode + \ start="^" + \ end="^\s*\zs\ze=end\>" + \ contained + \ contains=@rakuPodNestedBlocks,@rakuPodFormat + +" Delimited blocks (everything is code) +syn region rakuPodDelimRegion + \ matchgroup=rakuPodPrefix + \ start="^\z(\s*\)\zs=begin\>\ze\s*code\>" + \ end="^\z1\zs=end\>" + \ contains=rakuPodDelimCodeTypeRegion + \ keepend extend skipwhite + \ nextgroup=rakuPodType + +syn region rakuPodDelimCodeTypeRegion + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\s*\zs\ze=end\>" + \ contained + \ contains=rakuPodDelimCode,rakuPodDelimConfigRegion + +syn region rakuPodDelimCode + \ start="^" + \ end="^\s*\zs\ze=end\>" + \ contained + \ contains=@rakuPodNestedBlocks + +" Delimited blocks (implicit code allowed) +syn region rakuPodDelimRegion + \ matchgroup=rakuPodPrefix + \ start="^\z(\s*\)\zs=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" + \ end="^\z1\zs=end\>" + \ contains=rakuPodDelimTypeRegion + \ keepend extend skipwhite + \ nextgroup=rakuPodType + +syn region rakuPodDelimTypeRegion + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="^\s*\zs\ze=end\>" + \ contained + \ contains=rakuPodDelim,rakuPodDelimConfigRegion + +syn region rakuPodDelim + \ start="^" + \ end="^\s*\zs\ze=end\>" + \ contained + \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode + +" Delimited block to end-of-file +syn region rakuPodDelimRegion + \ matchgroup=rakuPodPrefix + \ start="^=begin\>\ze\s\+END\>" + \ end="\%$" + \ extend + \ contains=rakuPodDelimEOFTypeRegion + +syn region rakuPodDelimEOFTypeRegion + \ matchgroup=rakuPodType + \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + \ end="\%$" + \ contained + \ contains=rakuPodDelimEOF,rakuPodDelimConfigRegion + +syn region rakuPodDelimEOF + \ start="^" + \ end="\%$" + \ contained + \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode + +syn cluster rakuPodConfig + \ add=rakuPodConfigOperator + \ add=rakuPodExtraConfig + \ add=rakuStringAuto + \ add=rakuPodAutoQuote + \ add=rakuStringSQ + +syn region rakuPodParens + \ start="(" + \ end=")" + \ contained + \ contains=rakuNumber,rakuStringSQ + +syn match rakuPodAutoQuote display contained "=>" +syn match rakuPodConfigOperator display contained ":!\?" nextgroup=rakuPodConfigOption +syn match rakuPodConfigOption display contained "[^[:space:](<]\+" nextgroup=rakuPodParens,rakuStringAngle +syn match rakuPodExtraConfig display contained "^=" +syn match rakuPodVerticalBar display contained "|" +syn match rakuPodColon display contained ":" +syn match rakuPodSemicolon display contained ";" +syn match rakuPodComma display contained "," +syn match rakuPodImplicitCode display contained "^\s.*" +syn match rakuPodType display contained "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" + +" These may appear inside delimited blocks +syn cluster rakuPodNestedBlocks + \ add=rakuPodAbbrRegion + \ add=rakuPodDirectRegion + \ add=rakuPodParaRegion + \ add=rakuPodDelimRegion + +" Pod formatting codes + +syn cluster rakuPodFormat + \ add=rakuPodFormatOne + \ add=rakuPodFormatTwo + \ add=rakuPodFormatThree + \ add=rakuPodFormatFrench + +" Balanced angles found inside formatting codes. Ensures proper nesting. + +syn region rakuPodFormatAnglesOne + \ matchgroup=rakuPodFormat + \ start="<" + \ skip="<[^>]*>" + \ end=">" + \ transparent contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne + +syn region rakuPodFormatAnglesTwo + \ matchgroup=rakuPodFormat + \ start="<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ transparent contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo + +syn region rakuPodFormatAnglesThree + \ matchgroup=rakuPodFormat + \ start="<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ transparent contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo,rakuPodFormatAnglesThree + +syn region rakuPodFormatAnglesFrench + \ matchgroup=rakuPodFormat + \ start="«" + \ skip="«[^»]*»" + \ end="»" + \ transparent contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo,rakuPodFormatAnglesThree + +" All formatting codes + +syn region rakuPodFormatOne + \ matchgroup=rakuPodFormatCode + \ start="\u<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne + +syn region rakuPodFormatTwo + \ matchgroup=rakuPodFormatCode + \ start="\u<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo + +syn region rakuPodFormatThree + \ matchgroup=rakuPodFormatCode + \ start="\u<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree + +syn region rakuPodFormatFrench + \ matchgroup=rakuPodFormatCode + \ start="\u«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree + +" C<> and V<> don't allow nested formatting formatting codes + +syn region rakuPodFormatOne + \ matchgroup=rakuPodFormatCode + \ start="[CV]<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=rakuPodFormatAnglesOne + +syn region rakuPodFormatTwo + \ matchgroup=rakuPodFormatCode + \ start="[CV]<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=rakuPodFormatAnglesTwo + +syn region rakuPodFormatThree + \ matchgroup=rakuPodFormatCode + \ start="[CV]<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=rakuPodFormatAnglesThree + +syn region rakuPodFormatFrench + \ matchgroup=rakuPodFormatCode + \ start="[CV]«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=rakuPodFormatAnglesFrench + +" L<> can have a "|" separator + +syn region rakuPodFormatOne + \ matchgroup=rakuPodFormatCode + \ start="L<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar + +syn region rakuPodFormatTwo + \ matchgroup=rakuPodFormatCode + \ start="L<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar + +syn region rakuPodFormatThree + \ matchgroup=rakuPodFormatCode + \ start="L<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar + +syn region rakuPodFormatFrench + \ matchgroup=rakuPodFormatCode + \ start="L«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar + +" E<> can have a ";" separator + +syn region rakuPodFormatOne + \ matchgroup=rakuPodFormatCode + \ start="E<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodSemiColon + +syn region rakuPodFormatTwo + \ matchgroup=rakuPodFormatCode + \ start="E<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodSemiColon + +syn region rakuPodFormatThree + \ matchgroup=rakuPodFormatCode + \ start="E<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodSemiColon + +syn region rakuPodFormatFrench + \ matchgroup=rakuPodFormatCode + \ start="E«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodSemiColon + +" M<> can have a ":" separator + +syn region rakuPodFormatOne + \ matchgroup=rakuPodFormatCode + \ start="M<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodColon + +syn region rakuPodFormatTwo + \ matchgroup=rakuPodFormatCode + \ start="M<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodColon + +syn region rakuPodFormatThree + \ matchgroup=rakuPodFormatCode + \ start="M<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodColon + +syn region rakuPodFormatFrench + \ matchgroup=rakuPodFormatCode + \ start="M«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodColon + +" D<> can have "|" and ";" separators + +syn region rakuPodFormatOne + \ matchgroup=rakuPodFormatCode + \ start="D<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar,rakuPodSemiColon + +syn region rakuPodFormatTwo + \ matchgroup=rakuPodFormatCode + \ start="D<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=rakuPodFormatAngleTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar,rakuPodSemiColon + +syn region rakuPodFormatThree + \ matchgroup=rakuPodFormatCode + \ start="D<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon + +syn region rakuPodFormatFrench + \ matchgroup=rakuPodFormatCode + \ start="D«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon + +" X<> can have "|", "," and ";" separators + +syn region rakuPodFormatOne + \ matchgroup=rakuPodFormatCode + \ start="X<" + \ skip="<[^>]*>" + \ end=">" + \ contained + \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma + +syn region rakuPodFormatTwo + \ matchgroup=rakuPodFormatCode + \ start="X<<" + \ skip="<<[^>]*>>" + \ end=">>" + \ contained + \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma + +syn region rakuPodFormatThree + \ matchgroup=rakuPodFormatCode + \ start="X<<<" + \ skip="<<<[^>]*>>>" + \ end=">>>" + \ contained + \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma + +syn region rakuPodFormatFrench + \ matchgroup=rakuPodFormatCode + \ start="X«" + \ skip="«[^»]*»" + \ end="»" + \ contained + \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_raku_syntax_inits") + if version < 508 + let did_raku_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink rakuEscOctOld rakuError + HiLink rakuPackageTwigil rakuTwigil + HiLink rakuStringAngle rakuString + HiLink rakuStringAngleFixed rakuString + HiLink rakuStringFrench rakuString + HiLink rakuStringAngles rakuString + HiLink rakuStringSQ rakuString + HiLink rakuStringDQ rakuString + HiLink rakuStringQ rakuString + HiLink rakuStringQ_q rakuString + HiLink rakuStringQ_qww rakuString + HiLink rakuStringQ_qq rakuString + HiLink rakuStringQ_to rakuString + HiLink rakuStringQ_qto rakuString + HiLink rakuStringQ_qqto rakuString + HiLink rakuRxStringSQ rakuString + HiLink rakuRxStringDQ rakuString + HiLink rakuReplacement rakuString + HiLink rakuReplCurly rakuString + HiLink rakuReplAngle rakuString + HiLink rakuReplFrench rakuString + HiLink rakuReplBracket rakuString + HiLink rakuReplParen rakuString + HiLink rakuTransliteration rakuString + HiLink rakuTransRepl rakuString + HiLink rakuTransReplCurly rakuString + HiLink rakuTransReplAngle rakuString + HiLink rakuTransReplFrench rakuString + HiLink rakuTransReplBracket rakuString + HiLink rakuTransReplParen rakuString + HiLink rakuStringAuto rakuString + HiLink rakuKey rakuString + HiLink rakuMatch rakuString + HiLink rakuSubstitution rakuString + HiLink rakuMatchBare rakuString + HiLink rakuRegexBlock rakuString + HiLink rakuRxP5CharClass rakuString + HiLink rakuRxP5QuoteMeta rakuString + HiLink rakuRxCharClass rakuString + HiLink rakuRxQuoteWords rakuString + HiLink rakuReduceOp rakuOperator + HiLink rakuSetOp rakuOperator + HiLink rakuRSXZOp rakuOperator + HiLink rakuHyperOp rakuOperator + HiLink rakuPostHyperOp rakuOperator + HiLink rakuQuoteQ rakuQuote + HiLink rakuQuoteQ_q rakuQuote + HiLink rakuQuoteQ_qww rakuQuote + HiLink rakuQuoteQ_qq rakuQuote + HiLink rakuQuoteQ_to rakuQuote + HiLink rakuQuoteQ_qto rakuQuote + HiLink rakuQuoteQ_qqto rakuQuote + HiLink rakuQuoteQ_PIR rakuQuote + HiLink rakuMatchStart_m rakuQuote + HiLink rakuMatchStart_s rakuQuote + HiLink rakuMatchStart_tr rakuQuote + HiLink rakuBareSigil rakuVariable + HiLink rakuRxRange rakuStringSpecial + HiLink rakuRxAnchor rakuStringSpecial + HiLink rakuRxBoundary rakuStringSpecial + HiLink rakuRxP5Anchor rakuStringSpecial + HiLink rakuCodePoint rakuStringSpecial + HiLink rakuRxMeta rakuStringSpecial + HiLink rakuRxP5Range rakuStringSpecial + HiLink rakuRxP5CPId rakuStringSpecial + HiLink rakuRxP5Posix rakuStringSpecial + HiLink rakuRxP5Mod rakuStringSpecial + HiLink rakuRxP5HexSeq rakuStringSpecial + HiLink rakuRxP5OctSeq rakuStringSpecial + HiLink rakuRxP5WriteRefId rakuStringSpecial + HiLink rakuHexSequence rakuStringSpecial + HiLink rakuOctSequence rakuStringSpecial + HiLink rakuRxP5Named rakuStringSpecial + HiLink rakuRxP5PropId rakuStringSpecial + HiLink rakuRxP5Quantifier rakuStringSpecial + HiLink rakuRxP5CountId rakuStringSpecial + HiLink rakuRxP5Verb rakuStringSpecial + HiLink rakuRxAssertGroup rakuStringSpecial2 + HiLink rakuEscape rakuStringSpecial2 + HiLink rakuEscNull rakuStringSpecial2 + HiLink rakuEscHash rakuStringSpecial2 + HiLink rakuEscQQ rakuStringSpecial2 + HiLink rakuEscQuote rakuStringSpecial2 + HiLink rakuEscDoubleQuote rakuStringSpecial2 + HiLink rakuEscBackTick rakuStringSpecial2 + HiLink rakuEscForwardSlash rakuStringSpecial2 + HiLink rakuEscVerticalBar rakuStringSpecial2 + HiLink rakuEscExclamation rakuStringSpecial2 + HiLink rakuEscDollar rakuStringSpecial2 + HiLink rakuEscOpenCurly rakuStringSpecial2 + HiLink rakuEscCloseCurly rakuStringSpecial2 + HiLink rakuEscCloseBracket rakuStringSpecial2 + HiLink rakuEscCloseAngle rakuStringSpecial2 + HiLink rakuEscCloseFrench rakuStringSpecial2 + HiLink rakuEscBackSlash rakuStringSpecial2 + HiLink rakuEscCodePoint rakuStringSpecial2 + HiLink rakuEscOct rakuStringSpecial2 + HiLink rakuEscHex rakuStringSpecial2 + HiLink rakuRxEscape rakuStringSpecial2 + HiLink rakuRxCapture rakuStringSpecial2 + HiLink rakuRxAlternation rakuStringSpecial2 + HiLink rakuRxP5 rakuStringSpecial2 + HiLink rakuRxP5ReadRef rakuStringSpecial2 + HiLink rakuRxP5Oct rakuStringSpecial2 + HiLink rakuRxP5Hex rakuStringSpecial2 + HiLink rakuRxP5EscMeta rakuStringSpecial2 + HiLink rakuRxP5Meta rakuStringSpecial2 + HiLink rakuRxP5Escape rakuStringSpecial2 + HiLink rakuRxP5CodePoint rakuStringSpecial2 + HiLink rakuRxP5WriteRef rakuStringSpecial2 + HiLink rakuRxP5Prop rakuStringSpecial2 + + HiLink rakuProperty Tag + HiLink rakuAttention Todo + HiLink rakuType Type + HiLink rakuError Error + HiLink rakuBlockLabel Label + HiLink rakuNormal Normal + HiLink rakuIdentifier Normal + HiLink rakuPackage Normal + HiLink rakuPackageScope Normal + HiLink rakuNumber Number + HiLink rakuOctNumber Number + HiLink rakuBinNumber Number + HiLink rakuHexNumber Number + HiLink rakuDecNumber Number + HiLink rakuString String + HiLink rakuRepeat Repeat + HiLink rakuPragma Keyword + HiLink rakuPreDeclare Keyword + HiLink rakuDeclare Keyword + HiLink rakuDeclareRegex Keyword + HiLink rakuVarStorage Special + HiLink rakuFlowControl Special + HiLink rakuOctBase Special + HiLink rakuBinBase Special + HiLink rakuHexBase Special + HiLink rakuDecBase Special + HiLink rakuTwigil Special + HiLink rakuStringSpecial2 Special + HiLink rakuVersion Special + HiLink rakuComment Comment + HiLink rakuBracketComment Comment + HiLink rakuInclude Include + HiLink rakuShebang PreProc + HiLink rakuClosureTrait PreProc + HiLink rakuOperator Operator + HiLink rakuContext Operator + HiLink rakuQuote Delimiter + HiLink rakuTypeConstraint PreCondit + HiLink rakuException Exception + HiLink rakuVariable Identifier + HiLink rakuVarSlash Identifier + HiLink rakuVarNum Identifier + HiLink rakuVarExclam Identifier + HiLink rakuVarMatch Identifier + HiLink rakuVarName Identifier + HiLink rakuMatchVar Identifier + HiLink rakuRxP5ReadRefId Identifier + HiLink rakuRxP5ModDef Identifier + HiLink rakuRxP5ModName Identifier + HiLink rakuConditional Conditional + HiLink rakuStringSpecial SpecialChar + + HiLink rakuPodAbbr rakuPod + HiLink rakuPodAbbrEOF rakuPod + HiLink rakuPodAbbrNoCode rakuPod + HiLink rakuPodAbbrCode rakuPodCode + HiLink rakuPodPara rakuPod + HiLink rakuPodParaEOF rakuPod + HiLink rakuPodParaNoCode rakuPod + HiLink rakuPodParaCode rakuPodCode + HiLink rakuPodDelim rakuPod + HiLink rakuPodDelimEOF rakuPod + HiLink rakuPodDelimNoCode rakuPod + HiLink rakuPodDelimCode rakuPodCode + HiLink rakuPodImplicitCode rakuPodCode + HiLink rakuPodExtraConfig rakuPodPrefix + HiLink rakuPodVerticalBar rakuPodFormatCode + HiLink rakuPodColon rakuPodFormatCode + HiLink rakuPodSemicolon rakuPodFormatCode + HiLink rakuPodComma rakuPodFormatCode + HiLink rakuPodFormatOne rakuPodFormat + HiLink rakuPodFormatTwo rakuPodFormat + HiLink rakuPodFormatThree rakuPodFormat + HiLink rakuPodFormatFrench rakuPodFormat + + HiLink rakuPodType Type + HiLink rakuPodConfigOption String + HiLink rakuPodCode PreProc + HiLink rakuPod Comment + HiLink rakuPodComment Comment + HiLink rakuPodAutoQuote Operator + HiLink rakuPodConfigOperator Operator + HiLink rakuPodPrefix Statement + HiLink rakuPodName Identifier + HiLink rakuPodFormatCode SpecialChar + HiLink rakuPodFormat SpecialComment + + delcommand HiLink +endif + +if exists("raku_fold") || exists("raku_extended_all") + setl foldmethod=syntax + syn region rakuBlockFold + \ start="^\z(\s*\)\%(my\|our\|augment\|multi\|proto\|only\)\?\s*\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\s\+\)\?\<\%(CATCH\|try\|ENTER\|LEAVE\|CHECK\|INIT\|BEGIN\|END\|KEEP\|UNDO\|PRE\|POST\|module\|package\|enum\|subset\|class\|sub\%(method\)\?\|multi\|method\|slang\|grammar\|regex\|token\|rule\)\>[^{]\+\%({\s*\%(#.*\)\?\)\?$" + \ end="^\z1}" + \ transparent fold keepend extend +endif + +let b:current_syntax = "raku" + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:ts=8:sts=4:sw=4:expandtab:ft=vim diff --git a/runtime/syntax/rmd.vim b/runtime/syntax/rmd.vim index d852d225bc..cccd4110f5 100644 --- a/runtime/syntax/rmd.vim +++ b/runtime/syntax/rmd.vim @@ -1,7 +1,7 @@ " markdown Text with R statements " Language: markdown with R code chunks " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Thu Apr 18, 2019 09:17PM +" Last Change: Wed Apr 21, 2021 09:55AM " " For highlighting pandoc extensions to markdown like citations and TeX and " many other advanced features like folding of markdown sections, it is @@ -13,27 +13,45 @@ if exists("b:current_syntax") finish endif -" Configuration if not using pandoc syntax: -" Add syntax highlighting of YAML header -let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1) -" Add syntax highlighting of citation keys -let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1) -" Highlight the header of the chunk of R code -let g:rmd_syn_hl_chunk = get(g:, 'g:rmd_syn_hl_chunk', 0) +" Highlight the header of the chunks as R code +let g:rmd_syn_hl_chunk = get(g:, 'rmd_syn_hl_chunk', 0) " Pandoc-syntax has more features, but it is slower. " https://github.com/vim-pandoc/vim-pandoc-syntax let g:pandoc#syntax#codeblocks#embeds#langs = get(g:, 'pandoc#syntax#codeblocks#embeds#langs', ['r']) runtime syntax/pandoc.vim if exists("b:current_syntax") - " Fix recognition of R code - syn region pandocDelimitedCodeBlock_r start=/^```{r\>.*}$/ end=/^```$/ contained containedin=pandocDelimitedCodeBlock contains=@R + " Recognize inline R code syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@R containedin=pandocLaTeXRegion,yamlFlowString keepend hi def link rmdInlineDelim Delimiter + + " Fix recognition of language chunks (code adapted from pandoc, 2021-03-28) + " Knitr requires braces in the block's header + for s:lng in g:pandoc#syntax#codeblocks#embeds#langs + let s:nm = matchstr(s:lng, '^[^=]*') + exe 'syn clear pandocDelimitedCodeBlock_'.s:nm + exe 'syn clear pandocDelimitedCodeBlockinBlockQuote_'.s:nm + if g:rmd_syn_hl_chunk + exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@R' + exe 'syn region rmd'.s:nm.'Chunk start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=rmd'.s:nm.'ChunkDelim,@'.toupper(s:nm) + else + exe 'syn region rmd'.s:nm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@'.toupper(s:nm) + endif + endfor + unlet s:lng + unlet s:nm + hi def link rmdInlineDelim Delimiter + hi def link rmdCodeDelim Delimiter let b:current_syntax = "rmd" finish endif +" Configuration if not using pandoc syntax: +" Add syntax highlighting of YAML header +let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1) +" Add syntax highlighting of citation keys +let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1) + let s:cpo_save = &cpo set cpo&vim @@ -63,15 +81,17 @@ for s:type in g:rmd_fenced_languages unlet! b:current_syntax exe 'syn include @Rmd'.s:nm.' syntax/'.s:ft.'.vim' if g:rmd_syn_hl_chunk - exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@Rmd'.s:nm + exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@Rmdr' exe 'syn region rmd'.s:nm.'Chunk start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=rmd'.s:nm.'ChunkDelim,@Rmd'.s:nm else exe 'syn region rmd'.s:nm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@Rmd'.s:nm endif - exe 'syn region rmd'.s:nm.'Inline matchgroup=rmdInlineDelim start="`'.s:nm.' " end="`" contains=@Rmd'.s:nm.' keepend' endfor unlet! s:type +" Recognize inline R code +syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@Rmdr keepend + hi def link rmdInlineDelim Delimiter hi def link rmdCodeDelim Delimiter diff --git a/runtime/syntax/rnoweb.vim b/runtime/syntax/rnoweb.vim index b2ba17d68d..749860a3fe 100644 --- a/runtime/syntax/rnoweb.vim +++ b/runtime/syntax/rnoweb.vim @@ -33,8 +33,8 @@ syn cluster texParaGroup add=@rnoweb " Highlighting of R code using an existing r.vim syntax file if available {{{1 syn include @rnowebR syntax/r.vim -syn region rnowebChunk matchgroup=rnowebDelimiter start="^<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend -syn match rnowebChunkReference "^<<.*>>$" contained +syn region rnowebChunk matchgroup=rnowebDelimiter start="^\s*<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend +syn match rnowebChunkReference "^\s*<<.*>>$" contained syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR contained " Sweave options command {{{1 -- cgit From 0020858e1c22479fefc5a84c64e8eded3eeb97ef Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 22 Apr 2021 08:21:06 -0400 Subject: vim-patch:8.2.2788: Raku is now the only name what once was called perl6 Problem: Raku is now the only name what once was called perl6. Solution: Adjust the filetype detection. (closes vim/vim#8120) https://github.com/vim/vim/commit/3f88e71fa2b8b1fc97f3c218989474ea8687d197 --- runtime/filetype.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'runtime') diff --git a/runtime/filetype.vim b/runtime/filetype.vim index bd572d6cf0..f0d2b36a84 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1207,8 +1207,6 @@ else au BufNewFile,BufRead *.pl call dist#ft#FTpl() endif au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl -au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6 -au BufNewFile,BufRead *.raku,*.rakumod setf perl6 " Perl, XPM or XPM2 au BufNewFile,BufRead *.pm @@ -1222,7 +1220,6 @@ au BufNewFile,BufRead *.pm " Perl POD au BufNewFile,BufRead *.pod setf pod -au BufNewFile,BufRead *.pod6 setf pod6 " Php, php3, php4, etc. " Also Phtml (was used for PHP 2 in the past) @@ -1365,6 +1362,9 @@ au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python " Radiance au BufNewFile,BufRead *.rad,*.mat setf radiance +" Raku (formelly Perl6) +au BufNewFile,BufRead *.pm6,*.p6,*.t6,*.pod6,*.raku,*.rakumod,*.rakudoc,*.rakutest setf raku + " Ratpoison config/command files au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison -- cgit From d19ede86eabfde8416beabf3b2f636d2771ab1cf Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 22 Apr 2021 08:23:41 -0400 Subject: vim-patch:8.2.2790: filetype test fails Problem: filetype test fails Solution: Also update the scripts detection https://github.com/vim/vim/commit/63276685f90fca8b1a0be3a6734759fa82b7be0c --- runtime/scripts.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'runtime') diff --git a/runtime/scripts.vim b/runtime/scripts.vim index cae5485f8a..0b3fdc3514 100644 --- a/runtime/scripts.vim +++ b/runtime/scripts.vim @@ -110,10 +110,6 @@ if s:line1 =~# "^#!" elseif s:name =~# 'lua' set ft=lua - " Perl 6 - elseif s:name =~# 'perl6' - set ft=perl6 - " Perl elseif s:name =~# 'perl' set ft=perl @@ -130,6 +126,10 @@ if s:line1 =~# "^#!" elseif s:name =~# '^groovy\>' set ft=groovy + " Raku + elseif s:name =~# 'raku' + set ft=raku + " Ruby elseif s:name =~# 'ruby' set ft=ruby -- cgit From ad6bb386be30ee50ef2e61268597241e0ddb842b Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Sun, 2 May 2021 12:55:08 -0400 Subject: vim-patch:4c295027a426 Update runtime files https://github.com/vim/vim/commit/4c295027a426986566cd7a76c47a6d3a529727e7 --- runtime/autoload/syntaxcomplete.vim | 148 ++++++++++++++++++++++++------------ runtime/doc/autocmd.txt | 9 ++- runtime/doc/eval.txt | 3 + runtime/doc/gui.txt | 5 ++ runtime/doc/map.txt | 7 +- runtime/doc/options.txt | 3 +- runtime/doc/quickfix.txt | 23 ++++-- runtime/doc/usr_02.txt | 2 +- runtime/ftplugin/fpcmake.vim | 25 ++++++ runtime/ftplugin/pascal.vim | 52 ++++++++++--- runtime/indent/make.vim | 4 +- runtime/syntax/conf.vim | 6 +- runtime/syntax/fpcmake.vim | 58 ++++++++++++++ runtime/syntax/pascal.vim | 104 +++++++++++++++---------- 14 files changed, 332 insertions(+), 117 deletions(-) create mode 100644 runtime/ftplugin/fpcmake.vim create mode 100644 runtime/syntax/fpcmake.vim (limited to 'runtime') diff --git a/runtime/autoload/syntaxcomplete.vim b/runtime/autoload/syntaxcomplete.vim index 6ba262b9aa..396193d8b0 100644 --- a/runtime/autoload/syntaxcomplete.vim +++ b/runtime/autoload/syntaxcomplete.vim @@ -1,12 +1,16 @@ " Vim completion script " Language: All languages, uses existing syntax highlighting rules " Maintainer: David Fishburn -" Version: 14.0 -" Last Change: 2020 Dec 30 +" Version: 15.0 +" Last Change: 2021 Apr 27 " Usage: For detailed help, ":help ft-syntax-omni" " History " +" Version 15.0 +" - SyntaxComplete ignored all buffer specific overrides, always used global +" https://github.com/vim/vim/issues/8153 +" " Version 14.0 " - Fixed issue with single quotes and is_keyword " https://github.com/vim/vim/issues/7463 @@ -42,7 +46,7 @@ " let g:omni_syntax_use_single_byte = 1 " - This by default will only allow single byte ASCII " characters to be added and an additional check to ensure -" the charater is printable (see documentation for isprint). +" the character is printable (see documentation for isprint). " " Version 9.0 " - Add the check for cpo. @@ -90,7 +94,7 @@ endif if exists('g:loaded_syntax_completion') finish endif -let g:loaded_syntax_completion = 130 +let g:loaded_syntax_completion = 150 " Turn on support for line continuations when creating the script let s:cpo_save = &cpo @@ -145,14 +149,10 @@ let s:prepended = '' " This function is used for the 'omnifunc' option. function! syntaxcomplete#Complete(findstart, base) - " Only display items in the completion window that are at least - " this many characters in length - if !exists('b:omni_syntax_ignorecase') - if exists('g:omni_syntax_ignorecase') - let b:omni_syntax_ignorecase = g:omni_syntax_ignorecase - else - let b:omni_syntax_ignorecase = &ignorecase - endif + " Allow user to override ignorecase per buffer + let l:omni_syntax_ignorecase = g:omni_syntax_ignorecase + if exists('b:omni_syntax_ignorecase') + let l:omni_syntax_ignorecase = b:omni_syntax_ignorecase endif if a:findstart @@ -183,7 +183,6 @@ function! syntaxcomplete#Complete(findstart, base) endif " let base = s:prepended . a:base - " let base = s:prepended let base = substitute(s:prepended, "'", "''", 'g') let filetype = substitute(&filetype, '\.', '_', 'g') @@ -200,13 +199,13 @@ function! syntaxcomplete#Complete(findstart, base) if base != '' " let compstr = join(compl_list, ' ') - " let expr = (b:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*' + " let expr = (l:omni_syntax_ignorecase==0?'\C':'').'\<\%('.base.'\)\@!\w\+\s*' " let compstr = substitute(compstr, expr, '', 'g') " let compl_list = split(compstr, '\s\+') " Filter the list based on the first few characters the user " entered - let expr = 'v:val '.(g:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'" + let expr = 'v:val '.(l:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'" let compl_list = filter(deepcopy(compl_list), expr) endif @@ -227,6 +226,26 @@ function! syntaxcomplete#OmniSyntaxList(...) endif endfunc +function! syntaxcomplete#OmniSyntaxClearCache() + let s:cache_name = [] + let s:cache_list = [] +endfunction + +" To retrieve all syntax items regardless of syntax group: +" echo OmniSyntaxList( [] ) +" +" To retrieve only the syntax items for the sqlOperator syntax group: +" echo OmniSyntaxList( ['sqlOperator'] ) +" +" To retrieve all syntax items for both the sqlOperator and sqlType groups: +" echo OmniSyntaxList( ['sqlOperator', 'sqlType'] ) +" +" A regular expression can also be used: +" echo OmniSyntaxList( ['sql\w\+'] ) +" +" From within a plugin, you would typically assign the output to a List: > +" let myKeywords = [] +" let myKeywords = OmniSyntaxList( ['sqlKeyword'] ) function! OmniSyntaxList(...) let list_parms = [] if a:0 > 0 @@ -244,37 +263,25 @@ function! OmniSyntaxList(...) " let use_dictionary = a:1 " endif - " Only display items in the completion window that are at least - " this many characters in length - if !exists('b:omni_syntax_use_iskeyword') - if exists('g:omni_syntax_use_iskeyword') - let b:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword - else - let b:omni_syntax_use_iskeyword = 1 - endif - endif - - " Only display items in the completion window that are at least - " this many characters in length - if !exists('b:omni_syntax_minimum_length') - if exists('g:omni_syntax_minimum_length') - let b:omni_syntax_minimum_length = g:omni_syntax_minimum_length - else - let b:omni_syntax_minimum_length = 0 - endif - endif - let saveL = @l let filetype = substitute(&filetype, '\.', '_', 'g') if empty(list_parms) + " Allow user to override per buffer + if exists('g:omni_syntax_group_include_'.filetype) + let l:omni_syntax_group_include_{filetype} = g:omni_syntax_group_include_{filetype} + endif + if exists('b:omni_syntax_group_include_'.filetype) + let l:omni_syntax_group_include_{filetype} = b:omni_syntax_group_include_{filetype} + endif + " Default the include group to include the requested syntax group let syntax_group_include_{filetype} = '' " Check if there are any overrides specified for this filetype - if exists('g:omni_syntax_group_include_'.filetype) + if exists('l:omni_syntax_group_include_'.filetype) let syntax_group_include_{filetype} = - \ substitute( g:omni_syntax_group_include_{filetype},'\s\+','','g') - let list_parms = split(g:omni_syntax_group_include_{filetype}, ',') + \ substitute( l:omni_syntax_group_include_{filetype},'\s\+','','g') + let list_parms = split(l:omni_syntax_group_include_{filetype}, ',') if syntax_group_include_{filetype} =~ '\w' let syntax_group_include_{filetype} = \ substitute( syntax_group_include_{filetype}, @@ -329,11 +336,20 @@ function! OmniSyntaxList(...) else " Default the exclude group to nothing let syntax_group_exclude_{filetype} = '' - " Check if there are any overrides specified for this filetype + + " Allow user to override per buffer if exists('g:omni_syntax_group_exclude_'.filetype) + let l:omni_syntax_group_exclude_{filetype} = g:omni_syntax_group_exclude_{filetype} + endif + if exists('b:omni_syntax_group_exclude_'.filetype) + let l:omni_syntax_group_exclude_{filetype} = b:omni_syntax_group_exclude_{filetype} + endif + + " Check if there are any overrides specified for this filetype + if exists('l:omni_syntax_group_exclude_'.filetype) let syntax_group_exclude_{filetype} = - \ substitute( g:omni_syntax_group_exclude_{filetype},'\s\+','','g') - let list_exclude_groups = split(g:omni_syntax_group_exclude_{filetype}, ',') + \ substitute( l:omni_syntax_group_exclude_{filetype},'\s\+','','g') + let list_exclude_groups = split(l:omni_syntax_group_exclude_{filetype}, ',') if syntax_group_exclude_{filetype} =~ '\w' let syntax_group_exclude_{filetype} = \ substitute( syntax_group_exclude_{filetype}, @@ -529,6 +545,30 @@ endfunction function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full ) + " Allow user to override iskeyword per buffer + let l:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword + if exists('b:omni_syntax_use_iskeyword') + let l:omni_syntax_use_iskeyword = b:omni_syntax_use_iskeyword + endif + + " Allow user to override iskeyword_numeric per buffer + let l:omni_syntax_use_iskeyword_numeric = g:omni_syntax_use_iskeyword_numeric + if exists('b:omni_syntax_use_iskeyword_numeric') + let l:omni_syntax_use_iskeyword_numeric = b:omni_syntax_use_iskeyword_numeric + endif + + " Allow user to override iskeyword_numeric per buffer + let l:omni_syntax_use_single_byte = g:omni_syntax_use_single_byte + if exists('b:omni_syntax_use_single_byte') + let l:omni_syntax_use_single_byte = b:omni_syntax_use_single_byte + endif + + " Allow user to override minimum_length per buffer + let l:omni_syntax_minimum_length = g:omni_syntax_minimum_length + if exists('b:omni_syntax_minimum_length') + let l:omni_syntax_minimum_length = b:omni_syntax_minimum_length + endif + let syn_list = "" " From the full syntax listing, strip out the portion for the @@ -647,14 +687,23 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full ) \ syn_list, '\%(^\|\n\)\@<=\s*\(@\w\+\)' \ , "", 'g' \ ) - - if b:omni_syntax_use_iskeyword == 0 + + if l:omni_syntax_use_iskeyword == 0 " There are a number of items which have non-word characters in " them, *'T_F1'*. vim.vim is one such file. " This will replace non-word characters with spaces. + " setlocal filetype=forth + " let g:omni_syntax_use_iskeyword = 1 + " let g:omni_syntax_use_iskeyword_numeric = 1 + " You will see entries like + " #>> + " (.local) + " These were found doing a grep in vim82\syntax + " grep iskeyword * + " forth.vim:setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' ) else - if g:omni_syntax_use_iskeyword_numeric == 1 + if l:omni_syntax_use_iskeyword_numeric == 1 " iskeyword can contain value like this " 38,42,43,45,47-58,60-62,64-90,97-122,_,+,-,*,/,%,<,=,>,:,$,?,!,@-@,94 " Numeric values convert to their ASCII equivalent using the @@ -674,7 +723,7 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full ) " cycle through each character within the range let [b:start, b:end] = split(item, '-') for range_item in range( b:start, b:end ) - if range_item <= 127 || g:omni_syntax_use_single_byte == 0 + if range_item <= 127 || l:omni_syntax_use_single_byte == 0 if nr2char(range_item) =~ '\p' let accepted_chars = accepted_chars . nr2char(range_item) endif @@ -682,13 +731,13 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full ) endfor elseif item =~ '^\d\+$' " Only numeric, translate to a character - if item < 127 || g:omni_syntax_use_single_byte == 0 + if item < 127 || l:omni_syntax_use_single_byte == 0 if nr2char(item) =~ '\p' let accepted_chars = accepted_chars . nr2char(item) endif endif else - if char2nr(item) < 127 || g:omni_syntax_use_single_byte == 0 + if char2nr(item) < 127 || l:omni_syntax_use_single_byte == 0 if item =~ '\p' let accepted_chars = accepted_chars . item endif @@ -724,9 +773,9 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full ) endif endif - if b:omni_syntax_minimum_length > 0 + if l:omni_syntax_minimum_length > 0 " If the user specified a minimum length, enforce it - let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.b:omni_syntax_minimum_length.'}\ze ', ' ', 'g') + let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.l:omni_syntax_minimum_length.'}\ze ', ' ', 'g') endif else let syn_list = '' @@ -756,5 +805,6 @@ function! OmniSyntaxShowChars(spec) endfor return join(map(result, 'nr2char(v:val)'), ', ') endfunction + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 5611aa1be4..bf94383ec4 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1272,7 +1272,14 @@ option will not cause any commands to be executed. loaded buffer. The current buffer is done last. Note that [fname] is used to select the autocommands, - not the buffers to which they are applied. + not the buffers to which they are applied. Example: > + augroup mine + autocmd! + autocmd FileType * echo expand('') + augroup END + doautoall mine FileType Loaded-Buffer +< Sourcing this script, you'll see as many + "Loaded-Buffer" echoed as there are loaded buffers. Careful: Don't use this for autocommands that delete a buffer, change to another buffer or change the diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index d6419eeb39..b4630a97bb 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1677,6 +1677,9 @@ v:fcs_choice What should happen after a |FileChangedShell| event was The default is empty. If another (invalid) value is used then Vim behaves like it is empty, there is no warning message. + *v:fname* *fname-variable* +v:fname The file name set by 'includeexpr'. Empty otherwise. + *v:fname_in* *fname_in-variable* v:fname_in The name of the input file. Valid while evaluating: option used for ~ diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt index c95311edca..0f1fa2b7a7 100644 --- a/runtime/doc/gui.txt +++ b/runtime/doc/gui.txt @@ -247,6 +247,11 @@ expression register: > :amenu Insert.foobar "='foobar'P +The special text begins a "command menu", it executes the command +directly without changing modes. Where you might use ":..." you can +instead use "...". See || for more info. Example: > + anoremenu File.Next next + Note that in Cmdline mode executes the command, like in a mapping. This is Vi compatible. Use CTRL-C to quit Cmdline mode. diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index 62fd60bd23..ee42edf154 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -223,9 +223,12 @@ have a look at |maparg()|. If the first argument to one of these commands is "" and it is used to define a new mapping or abbreviation, the argument is an expression. The expression is evaluated to obtain the {rhs} that is used. Example: > - :inoremap . InsertDot() -The result of the InsertDot() function will be inserted. It could check the + :inoremap . InsertDot() +The result of the s:InsertDot() function will be inserted. It could check the text before the cursor and start omni completion when some condition is met. +Using a script-local function is preferred, to avoid polluting the global +namespace. Use in the RHS so that the script that the mapping was +defined in can be found. For abbreviations |v:char| is set to the character that was typed to trigger the abbreviation. You can use this to decide how to expand the {lhs}. You diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index e04b79792d..269080e750 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -3429,7 +3429,8 @@ A jump table for the options with a short description can be found at |Q_op|. Keywords are used in searching and recognizing with many commands: "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See 'isfname' for a description of the format of this option. For '@' - characters above 255 check the "word" character class. + characters above 255 check the "word" character class (any character + that is not white space or punctuation). For C programs you could use "a-z,A-Z,48-57,_,.,-,>". For a help file it is set to all non-blank printable characters except '*', '"' and '|' (so that CTRL-] on a command finds the help for that diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index e3fbbc8673..db6b759af6 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -994,8 +994,6 @@ commands can be combined to create a NewGrep command: > the error list to the matches. Files matching 'wildignore' are ignored; files in 'suffixes' are searched last. - Without the 'g' flag each line is added only once. - With 'g' every match is added. {pattern} is a Vim search pattern. Instead of enclosing it in / any non-ID character (see @@ -1007,6 +1005,22 @@ commands can be combined to create a NewGrep command: > If {pattern} is empty (e.g. // is specified), the last used search pattern is used. |last-pattern| + Flags: + 'g' Without the 'g' flag each line is added only + once. With 'g' every match is added. + + 'j' Without the 'j' flag Vim jumps to the first + match. With 'j' only the quickfix list is + updated. With the [!] any changes in the current + buffer are abandoned. + + 'f' When the 'f' flag is specified, fuzzy string + matching is used to find matching lines. In this + case, {pattern} is treated as a literal string + instead of a regular expression. See + |matchfuzzy()| for more info about fuzzy + matching. + |QuickFixCmdPre| and |QuickFixCmdPost| are triggered. A file that is opened for matching may use a buffer number, but it is reused if possible to avoid @@ -1019,11 +1033,6 @@ commands can be combined to create a NewGrep command: > Useful if you only want to check if there is a match and quit quickly when it's found. - Without the 'j' flag Vim jumps to the first match. - With 'j' only the quickfix list is updated. - With the [!] any changes in the current buffer are - abandoned. - Every second or so the searched file name is displayed to give you an idea of the progress made. Examples: > diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt index 9373484da0..f822e7d4b8 100644 --- a/runtime/doc/usr_02.txt +++ b/runtime/doc/usr_02.txt @@ -522,7 +522,7 @@ Summary: *help-summary* > < for the corresponding flag of the 'cpoptions' settings, substitute by a specific flag, e.g.: > :help cpo-; -< And for the guioption flags: > +< And for the 'guioptions' flags: > :help go- 4) Normal mode commands do not have a prefix. To go to the help page for the diff --git a/runtime/ftplugin/fpcmake.vim b/runtime/ftplugin/fpcmake.vim new file mode 100644 index 0000000000..8d950838c7 --- /dev/null +++ b/runtime/ftplugin/fpcmake.vim @@ -0,0 +1,25 @@ +" Vim filetype plugin file +" Language: Free Pascal Makefile Generator +" Maintainer: Doug Kearns +" Last Change: 2021 Apr 23 + +if exists("b:did_ftplugin") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +runtime! ftplugin/make.vim + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Free Pascal Makefile Definition Files (*.fpc)\t*.fpc\n" .. + \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = b:undo_ftplugin .. " | unlet! b:browsefilter" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/runtime/ftplugin/pascal.vim b/runtime/ftplugin/pascal.vim index 5ff18b9601..2de92563ae 100644 --- a/runtime/ftplugin/pascal.vim +++ b/runtime/ftplugin/pascal.vim @@ -1,20 +1,50 @@ " Vim filetype plugin file -" Language: pascal -" Maintainer: Dan Sharp -" Last Changed: 11 Apr 2011 -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin +" Language: Pascal +" Maintainer: Doug Kearns +" Previous Maintainer: Dan Sharp +" Last Change: 2021 Apr 23 if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 +let s:cpo_save = &cpo +set cpo&vim + +set comments=s:(*,m:\ ,e:*),s:{,m:\ ,e:} +set commentstring={%s} + +if exists("pascal_delphi") + set comments+=:/// +endif + +if !exists("pascal_traditional") + set commentstring=//\ %s + set comments+=:// +endif + +setlocal formatoptions-=t formatoptions+=croql + if exists("loaded_matchit") - let b:match_ignorecase = 1 " (pascal is case-insensitive) + let b:match_ignorecase = 1 " (Pascal is case-insensitive) + + let b:match_words = '\<\%(asm\|begin\|case\|\%(\%(=\|packed\)\s*\)\@<=\%(class\|object\)\|\%(=\s*\)\@<=interface\|record\|try\)\>' + let b:match_words .= ':\%(^\s*\)\@<=\%(except\|finally\|else\|otherwise\)\>' + let b:match_words .= ':\\.\@!' + + let b:match_words .= ',\:\' + " let b:match_words .= ',\:\' " FIXME - else clashing with middle else. It seems like a debatable use anyway. + let b:match_words .= ',\:\<\%(\%(^\s*\)\@<=interface\|implementation\|initialization\|finalization\)\>:\ -" Last Change: 2005 Jun 20 +" Last Change: 2021 May 01 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") @@ -10,8 +10,8 @@ endif syn keyword confTodo contained TODO FIXME XXX " Avoid matching "text#text", used in /etc/disktab and /etc/gettytab -syn match confComment "^#.*" contains=confTodo -syn match confComment "\s#.*"ms=s+1 contains=confTodo +syn match confComment "^#.*" contains=confTodo,@Spell +syn match confComment "\s#.*"ms=s+1 contains=confTodo,@Spell syn region confString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline syn region confString start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline diff --git a/runtime/syntax/fpcmake.vim b/runtime/syntax/fpcmake.vim new file mode 100644 index 0000000000..bbc6f1d770 --- /dev/null +++ b/runtime/syntax/fpcmake.vim @@ -0,0 +1,58 @@ +" Vim syntax file +" Language: Free Pascal Makefile Definition Files +" Maintainer: Doug Kearns +" Last Change: 2021 Apr 23 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/make.vim + +" NOTE: using start-of-line anchored syn-match groups is simpler than other +" alternatives when interacting with the sourced make.vim syntax groups + +" Sections +syn region fpcmakeSection matchgroup=fpcmakeSectionDelimiter start="^\s*\[" end="]" contains=fpcmakeSectionName + +syn keyword fpcmakeSectionName contained clean compiler default dist install +syn keyword fpcmakeSectionName contained lib package prerules require rules +syn keyword fpcmakeSectionName contained shared target + +" [clean] +syn match fpcmakeRule "^\s*\(units\|files\)\>" +" [compiler] +syn match fpcmakeRule "^\s*\(options\|version\|unitdir\|librarydir\|objectdir\)\>" +syn match fpcmakeRule "^\s*\(targetdir\|sourcedir\|unittargetdir\|includedir\)\>" +" [default] +syn match fpcmakeRule "^\s*\(cpu\|dir\|fpcdir\|rule\|target\)\>" +" [dist] +syn match fpcmakeRule "^\s*\(destdir\|zipname\|ziptarget\)\>" +" [install] +syn match fpcmakeRule "^\s*\(basedir\|datadir\|fpcpackage\|files\|prefix\)\>" +syn match fpcmakeRule "^\s*\(units\)\>" +" [package] +syn match fpcmakeRule "^\s*\(name\|version\|main\)\>" +" [requires] +syn match fpcmakeRule "^\s*\(fpcmake\|packages\|libc\|nortl\|unitdir\)\>" +syn match fpcmakeRule "^\s*\(packagedir\|tools\)\>" +" [shared] +syn match fpcmakeRule "^\s*\(build\|libname\|libversion\|libunits\)\>" +" [target] +syn match fpcmakeRule "^\s*\(dirs\|exampledirs\|examples\|loaders\|programs\)\>" +syn match fpcmakeRule "^\s*\(rsts\|units\)\>" + +" Comments +syn keyword fpcmakeTodo TODO FIXME XXX contained +syn match fpcmakeComment "#.*" contains=fpcmakeTodo,@Spell + +" Default highlighting +hi def link fpcmakeSectionDelimiter Delimiter +hi def link fpcmakeSectionName Type +hi def link fpcmakeComment Comment +hi def link fpcmakeTodo Todo +hi def link fpcmakeRule Identifier + +let b:current_syntax = "fpcmake" + +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/runtime/syntax/pascal.vim b/runtime/syntax/pascal.vim index 535efc99d3..3ab5c2e661 100644 --- a/runtime/syntax/pascal.vim +++ b/runtime/syntax/pascal.vim @@ -1,16 +1,16 @@ " Vim syntax file -" Language: Pascal -" Version: 2.8 -" Last Change: 2004/10/17 17:47:30 -" Maintainer: Xavier Crégut -" Previous Maintainer: Mario Eusebio +" Language: Pascal +" Maintainer: Doug Kearns +" Previous Maintainers: Xavier Crégut +" Mario Eusebio +" Last Change: 2021 Apr 23 " Contributors: Tim Chase , -" Stas Grabois , -" Mazen NEIFER , -" Klaus Hast , -" Austin Ziegler , -" Markus Koenig +" Stas Grabois , +" Mazen NEIFER , +" Klaus Hast , +" Austin Ziegler , +" Markus Koenig " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -25,10 +25,10 @@ syn keyword pascalBoolean true false syn keyword pascalConditional if else then syn keyword pascalConstant nil maxint syn keyword pascalLabel case goto label -syn keyword pascalOperator and div downto in mod not of or packed with +syn keyword pascalOperator and div downto in mod not of or packed syn keyword pascalRepeat do for do repeat while to until syn keyword pascalStatement procedure function -syn keyword pascalStatement program begin end const var type +syn keyword pascalStatement program begin end const var type with syn keyword pascalStruct record syn keyword pascalType array boolean char integer file pointer real set syn keyword pascalType string text variant @@ -40,12 +40,12 @@ syn keyword pascalTodo contained TODO FIXME XXX DEBUG NOTE " 20010723az: When wanted, highlight the trailing whitespace -- this is " based on c_space_errors; to enable, use "pascal_space_errors". if exists("pascal_space_errors") - if !exists("pascal_no_trail_space_error") - syn match pascalSpaceError "\s\+$" - endif - if !exists("pascal_no_tab_space_error") - syn match pascalSpaceError " \+\t"me=e-1 - endif + if !exists("pascal_no_trail_space_error") + syn match pascalSpaceError "\s\+$" + endif + if !exists("pascal_no_tab_space_error") + syn match pascalSpaceError " \+\t"me=e-1 + endif endif @@ -98,9 +98,24 @@ if exists("pascal_symbol_operator") endif syn match pascalNumber "-\=\<\d\+\>" +if !exists("pascal_traditional") + syn match pascalHexNumber "\$\x\+\>" +endif +if exists("pascal_fpc") + syn match pascalOctNumber "&\o\+\>" + syn match pascalBinNumber "%[01]\+\>" +endif +if exists("pascal_gpc") + syn match pascalExtendedNumber "\%([2-9]\|[12]\d\|3[0-6]\)#[[:alnum:]]\+\>" +endif + syn match pascalFloat "-\=\<\d\+\.\d\+\>" syn match pascalFloat "-\=\<\d\+\.\d\+[eE]-\=\d\+\>" -syn match pascalHexNumber "\$[0-9a-fA-F]\+\>" + +if !exists("pascal_traditional") + " allow leading zeros + syn match pascalControlCharacter "#\%([01]\=\d\=\d\|2[0-4]\d\|25[0-5]\)\>" +endif if exists("pascal_no_tabs") syn match pascalShowTab "\t" @@ -142,7 +157,7 @@ if !exists("pascal_traditional") syn keyword pascalStatement interface unit uses syn keyword pascalModifier absolute assembler external far forward inline syn keyword pascalModifier interrupt near virtual - syn keyword pascalAcces private public + syn keyword pascalAccess private public strict syn keyword pascalStruct object syn keyword pascalOperator shl shr xor @@ -157,6 +172,7 @@ if !exists("pascal_traditional") syn keyword pascalType Single Double Extended Comp syn keyword pascalType PChar + syn keyword pascalPredefined self if !exists ("pascal_fpc") syn keyword pascalPredefined Result @@ -166,11 +182,11 @@ if !exists("pascal_traditional") syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError syn keyword pascalStatement fail otherwise operator syn keyword pascalDirective popstack - syn keyword pascalPredefined self syn keyword pascalType ShortString AnsiString WideString endif if exists("pascal_gpc") + syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError syn keyword pascalType SmallInt syn keyword pascalType AnsiChar syn keyword pascalType PAnsiChar @@ -178,6 +194,8 @@ if !exists("pascal_traditional") if exists("pascal_delphi") syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError + syn region pascalDocumentation start="///" end="$" contains=pascalTodo,pascalSpaceError + syn region pascalDocumentation start="{!" end="}" contains=pascalTodo,pascalSpaceError syn keyword pascalType SmallInt Int64 syn keyword pascalType Real48 Currency syn keyword pascalType AnsiChar WideChar @@ -192,11 +210,11 @@ if !exists("pascal_traditional") syn keyword pascalStatement initialization finalization uses exports syn keyword pascalStatement property out resourcestring threadvar syn keyword pascalModifier contains - syn keyword pascalModifier overridden reintroduce abstract + syn keyword pascalModifier overridden reintroduce abstract sealed syn keyword pascalModifier override export dynamic name message syn keyword pascalModifier dispid index stored default nodefault readonly syn keyword pascalModifier writeonly implements overload requires resident - syn keyword pascalAcces protected published automated + syn keyword pascalAccess protected published automated syn keyword pascalDirective register pascal cvar cdecl stdcall safecall syn keyword pascalOperator as is endif @@ -319,37 +337,43 @@ endif " Define the default highlighting. " Only when an item doesn't have highlighting yet -hi def link pascalAcces pascalStatement +hi def link pascalAccess pascalStatement hi def link pascalBoolean Boolean hi def link pascalComment Comment -hi def link pascalConditional Conditional +hi def link pascalDocumentation Comment +hi def link pascalConditional Conditional hi def link pascalConstant Constant -hi def link pascalDelimiter Identifier -hi def link pascalDirective pascalStatement -hi def link pascalException Exception -hi def link pascalFloat Float +hi def link pascalControlCharacter Character +hi def link pascalDelimiter Identifier +hi def link pascalDirective pascalStatement +hi def link pascalException Exception +hi def link pascalFloat Float hi def link pascalFunction Function -hi def link pascalLabel Label +hi def link pascalLabel Label hi def link pascalMatrixDelimiter Identifier hi def link pascalModifier Type hi def link pascalNumber Number +hi def link pascalExtendedNumber Number +hi def link pascalBinNumber pascalNumber +hi def link pascalHexNumber pascalNumber +hi def link pascalOctNumber pascalNumber hi def link pascalOperator Operator -hi def link pascalPredefined pascalStatement +hi def link pascalPredefined pascalStatement hi def link pascalPreProc PreProc hi def link pascalRepeat Repeat -hi def link pascalSpaceError Error -hi def link pascalStatement Statement +hi def link pascalSpaceError Error +hi def link pascalStatement Statement hi def link pascalString String -hi def link pascalStringEscape Special +hi def link pascalStringEscape Special hi def link pascalStringEscapeGPC Special -hi def link pascalStringError Error +hi def link pascalStringError Error hi def link pascalStruct pascalStatement hi def link pascalSymbolOperator pascalOperator -hi def link pascalTodo Todo -hi def link pascalType Type -hi def link pascalUnclassified pascalStatement +hi def link pascalTodo Todo +hi def link pascalType Type +hi def link pascalUnclassified pascalStatement " hi def link pascalAsm Assembler -hi def link pascalError Error +hi def link pascalError Error hi def link pascalAsmKey pascalStatement hi def link pascalShowTab Error @@ -357,4 +381,4 @@ hi def link pascalShowTab Error let b:current_syntax = "pascal" -" vim: ts=8 sw=2 +" vim: nowrap sw=2 sts=2 ts=8 noet: -- cgit From d5b063aec1db95704b37a77fdbd968cb6b48cc3b Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Tue, 4 May 2021 07:28:24 -0400 Subject: Revert vim-patch:942db23c9cb7 for phpcomplete.vim It targets Vim 8.2 without feature and version checks. --- runtime/autoload/phpcomplete.vim | 93 ++++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 38 deletions(-) (limited to 'runtime') diff --git a/runtime/autoload/phpcomplete.vim b/runtime/autoload/phpcomplete.vim index 4041a80bd8..377baa8432 100644 --- a/runtime/autoload/phpcomplete.vim +++ b/runtime/autoload/phpcomplete.vim @@ -3,7 +3,7 @@ " Maintainer: Dávid Szabó ( complex857 AT gmail DOT com ) " Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " URL: https://github.com/shawncplus/phpcomplete.vim -" Last Change: 2021 Feb 08 +" Last Change: 2018 Oct 10 " " OPTIONS: " @@ -122,6 +122,7 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{ endif endif + " If exists b:php_menu it means completion was already constructed we " don't need to do anything more if exists("b:php_menu") @@ -147,6 +148,8 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{ try let eventignore = &eventignore let &eventignore = 'all' + let winheight = winheight(0) + let winnr = winnr() let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.'))) @@ -180,6 +183,7 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{ endif if filereadable(classlocation) + let classfile = readfile(classlocation) let classcontent = '' let classcontent .= "\n".phpcomplete#GetClassContents(classlocation, classname) let sccontent = split(classcontent, "\n") @@ -213,6 +217,7 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{ return phpcomplete#CompleteGeneral(a:base, current_namespace, imports) endif finally + silent! exec winnr.'resize '.winheight let &eventignore = eventignore endtry endfunction @@ -1020,7 +1025,7 @@ function! phpcomplete#CompleteUserClass(context, base, sccontent, visibility) " let c_var = '$'.c_var endif let c_variables[c_var] = '' - if g:phpcomplete_parse_docblock_comments && len(get(variables, var_index, '')) > 0 + if g:phpcomplete_parse_docblock_comments && len(get(variables, var_index)) > 0 let c_doc[c_var] = phpcomplete#GetDocBlock(a:sccontent, variables[var_index]) endif let var_index += 1 @@ -2077,17 +2082,26 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam " ... " ] " - let class_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' let full_file_path = fnamemodify(a:file_path, ':p') + let class_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' + let cfile = join(a:file_lines, "\n") let result = [] - let popup_id = popup_create(a:file_lines, {'hidden': v:true}) - - call win_execute(popup_id, 'call search(''\c\(class\|interface\|trait\)\_s\+'.a:class_name.'\(\>\|$\)'')') - call win_execute(popup_id, "let cfline = line('.')") - call win_execute(popup_id, "call search('{')") - call win_execute(popup_id, "let endline = line('.')") - - call win_execute(popup_id, 'let content = join(getline('.cfline.', '.endline.'), "\n")') + " We use new buffer and (later) normal! because + " this is the most efficient way. The other way + " is to go through the looong string looking for + " matching {} + + " remember the window we started at + let phpcomplete_original_window = winnr() + + silent! below 1new + silent! 0put =cfile + call search('\c\(class\|interface\|trait\)\_s\+'.a:class_name.'\(\>\|$\)') + let cfline = line('.') + call search('{') + let endline = line('.') + + let content = join(getline(cfline, endline), "\n") " Catch extends if content =~? 'extends' let extends_string = matchstr(content, '\(class\|interface\)\_s\+'.a:class_name.'\_.\+extends\_s\+\zs\('.class_name_pattern.'\(,\|\_s\)*\)\+\ze\(extends\|{\)') @@ -2103,16 +2117,14 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam else let implemented_interfaces = [] endif - - call win_execute(popup_id, 'let [class_closing_bracket_line, class_closing_bracket_col] = searchpairpos("{", "", "}", "W")') + call searchpair('{', '', '}', 'W') + let class_closing_bracket_line = line('.') " Include class docblock let doc_line = cfline - 1 - call win_execute(popup_id, 'let l = getline('.doc_line.')') - if l =~? '^\s*\*/' + if getline(doc_line) =~? '^\s*\*/' while doc_line != 0 - call win_execute(popup_id, 'let l = getline('.doc_line.')') - if l =~? '^\s*/\*\*' + if getline(doc_line) =~? '^\s*/\*\*' let cfline = doc_line break endif @@ -2120,22 +2132,22 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam endwhile endif - call win_execute(popup_id, 'let classcontent = join(getline('.cfline.', '.class_closing_bracket_line.'), "\n")') + let classcontent = join(getline(cfline, class_closing_bracket_line), "\n") let used_traits = [] " move back to the line next to the class's definition - call win_execute(popup_id, 'call cursor('.(endline + 1).', 1)') + call cursor(endline + 1, 1) let keep_searching = 1 while keep_searching != 0 " try to grab "use..." keywords - call win_execute(popup_id, 'let [lnum, col] = searchpos(''\c^\s\+use\s\+'.class_name_pattern.''', "cW", '.class_closing_bracket_line.')') - call win_execute(popup_id, 'let syn_name = synIDattr(synID('.lnum.', '.col.', 0), "name")') + let [lnum, col] = searchpos('\c^\s\+use\s\+'.class_name_pattern, 'cW', class_closing_bracket_line) + let syn_name = synIDattr(synID(lnum, col, 0), "name") if syn_name =~? 'string\|comment' - call win_execute(popup_id, 'call cursor('.(lnum + 1).', 1)') + call cursor(lnum + 1, 1) continue endif - call win_execute(popup_id, 'let trait_line = getline('.lnum.')') + let trait_line = getline(lnum) if trait_line !~? ';' " try to find the next line containing ';' let l = lnum @@ -2145,23 +2157,25 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam while search_line !~? ';' && l > 0 " file lines are reversed so we need to go backwards let l += 1 - call win_execute(popup_id, 'let search_line = getline('.l.')') + let search_line = getline(l) let trait_line .= ' '.substitute(search_line, '\(^\s\+\|\s\+$\)', '', 'g') endwhile endif let use_expression = matchstr(trait_line, '^\s*use\s\+\zs.\{-}\ze;') let use_parts = map(split(use_expression, '\s*,\s*'), 'substitute(v:val, "\\s+", " ", "g")') let used_traits += map(use_parts, 'substitute(v:val, "\\s", "", "g")') - call win_execute(popup_id, 'call cursor('.(lnum + 1).', 1)') + call cursor(lnum + 1, 1) if [lnum, col] == [0, 0] let keep_searching = 0 endif endwhile - call popup_close(popup_id) + silent! bw! % let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(a:file_lines[0:cfline]) + " go back to original window + exe phpcomplete_original_window.'wincmd w' call add(result, { \ 'class': a:class_name, \ 'content': classcontent, @@ -2518,37 +2532,40 @@ function! phpcomplete#FormatDocBlock(info) " {{{ endif return res -endfunction +endfunction! " }}} function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{ - let popup_id = popup_create(a:file_lines, {'hidden': v:true}) - call win_execute(popup_id, 'normal! G') + let original_window = winnr() + + silent! below 1new + silent! 0put =a:file_lines + normal! G " clear out classes, functions and other blocks while 1 - call win_execute(popup_id, 'let block_start_pos = searchpos(''\c\(class\|trait\|function\|interface\)\s\+\_.\{-}\zs{'', "Web")') + let block_start_pos = searchpos('\c\(class\|trait\|function\|interface\)\s\+\_.\{-}\zs{', 'Web') if block_start_pos == [0, 0] break endif - call win_execute(popup_id, 'let block_end_pos = searchpairpos("{", "", ''}\|\%$'', "W", ''synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'')') + let block_end_pos = searchpairpos('{', '', '}\|\%$', 'W', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"') - let popup_lines = winbufnr(popup_id)->getbufline(1, '$') if block_end_pos != [0, 0] " end of the block found, just delete it - call remove(popup_lines, block_start_pos[0] - 1, block_end_pos[0] - 1) + silent! exec block_start_pos[0].','.block_end_pos[0].'d _' else " block pair not found, use block start as beginning and the end " of the buffer instead - call remove(popup_lines, block_start_pos[0] - 1, -1) + silent! exec block_start_pos[0].',$d _' endif - call popup_settext(popup_id, popup_lines) endwhile - call win_execute(popup_id, 'normal! G', 'silent!') + normal! G " grab the remains - call win_execute(popup_id, "let file_lines = reverse(getline(1, line('.')-1))") - call popup_close(popup_id) + let file_lines = reverse(getline(1, line('.') - 1)) + + silent! bw! % + exe original_window.'wincmd w' let namespace_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' let i = 0 -- cgit