diff --git a/CHANGELOG.md b/CHANGELOG.md index 58534cad..8ce3e680 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,13 @@ Changelog structure reference: ## [Unreleased] +## [23.0.2] + +### Fixed + +- Zig + - Documentation comment after regular comment was being highlighted as regular comment + ## [23.0.1] ### Fixed diff --git a/core/src/main/grammar/Zig.flex b/core/src/main/grammar/Zig.flex index 11281fb5..6a0f1235 100644 --- a/core/src/main/grammar/Zig.flex +++ b/core/src/main/grammar/Zig.flex @@ -36,8 +36,10 @@ import static com.falsepattern.zigbrains.zig.psi.ZigTypes.*; %type IElementType %unicode -CRLF=\R -WHITE_SPACE=[\s]+ +WHITE_SPACE=\s+ + +// visual studio parity +LF=\r\n?|[\n\u0085\u2028\u2029] bin=[01] bin_="_"? {bin} @@ -54,13 +56,13 @@ dec_int={dec} {dec_}* hex_int={hex} {hex_}* char_char= \\ . - | [^\'\n] + | [^\'\r\n\u0085\u2028\u2029] string_char= \\ . - | [^\"\n] + | [^\"\r\n\u0085\u2028\u2029] -all_nl_wrap=[^\n]* [ \n]* -all_no_nl=[^\n]+ +nl_wrap={LF} (\s|{LF})* +all_no_nl=[^\r\n\u0085\u2028\u2029]+ FLOAT= "0x" {hex_int} "." {hex_int} ([pP] [-+]? {dec_int})? @@ -84,30 +86,35 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* %state UNT_SQUOT %state UNT_DQUOT -%state CDOC_CMT -%state DOC_CMT -%state LINE_CMT +%state CMT_LINE +%state CMT_DOC +%state CMT_CDOC %% //Comments - "//!" { yybegin(CDOC_CMT); } - {all_nl_wrap} "//!" { } - {all_no_nl} { } - \n { yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT; } - <> { yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT; } + "//!" { yybegin(CMT_CDOC); } + "////" { yybegin(CMT_LINE); } + "///" { yybegin(CMT_DOC); } + "//" { yybegin(CMT_LINE); } - "///" { yybegin(DOC_CMT); } - {all_nl_wrap} "///" { } - {all_no_nl} { } - \n { yybegin(YYINITIAL); return DOC_COMMENT; } - <> { yybegin(YYINITIAL); return DOC_COMMENT; } + {all_no_nl} { } + {nl_wrap} "////" { } + {nl_wrap} "///" { yypushback(yylength()); yybegin(YYINITIAL); return LINE_COMMENT; } + {nl_wrap} "//" { } + {LF} { yybegin(YYINITIAL); return LINE_COMMENT; } + <> { yybegin(YYINITIAL); return LINE_COMMENT; } - "//" { yybegin(LINE_CMT); } - {all_nl_wrap} "//" { } - {all_no_nl} { } - \n { yybegin(YYINITIAL); return LINE_COMMENT; } - <> { yybegin(YYINITIAL); return LINE_COMMENT; } + {all_no_nl} { } + {nl_wrap} "////" { yypushback(yylength()); yybegin(YYINITIAL); return DOC_COMMENT; } + {nl_wrap} "///" { } + {LF} { yybegin(YYINITIAL); return DOC_COMMENT; } + <> { yybegin(YYINITIAL); return DOC_COMMENT; } + + {all_no_nl} { } + {nl_wrap} "//!" { } + {LF} { yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT; } + <> { yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT; } //Symbols "&" { return AMPERSAND; } @@ -227,24 +234,31 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* "volatile" { return KEYWORD_VOLATILE; } "while" { return KEYWORD_WHILE; } +//Strings + "'" { yybegin(CHAR_LIT); } {char_char}*"'" { yybegin(YYINITIAL); return CHAR_LITERAL; } <> { yybegin(YYINITIAL); return BAD_SQUOT; } [^] { yypushback(1); yybegin(UNT_SQUOT); } - {FLOAT} { return FLOAT; } - {INTEGER} { return INTEGER; } - "\"" { yybegin(STR_LIT); } {string_char}*"\"" { yybegin(YYINITIAL); return STRING_LITERAL_SINGLE; } <> { yybegin(YYINITIAL); return BAD_DQUOT; } [^] { yypushback(1); yybegin(UNT_DQUOT); } + "\\\\" { yybegin(STR_MULT_LINE); } - {all_nl_wrap} "\\\\" { } - {all_no_nl} { } - \n { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } + {all_no_nl} { } + {nl_wrap} "\\\\" { } + {LF} { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } <> { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } +//Numbers + + {FLOAT} { return FLOAT; } + {INTEGER} { return INTEGER; } + +//Identifiers + {IDENTIFIER_PLAIN} { return IDENTIFIER; } "@\"" { yybegin(ID_QUOT); } {string_char}*"\"" { yybegin(YYINITIAL); return IDENTIFIER; } @@ -253,13 +267,17 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* {BUILTINIDENTIFIER} { return BUILTINIDENTIFIER; } +//Error handling + <> { yybegin(YYINITIAL); return BAD_SQUOT; } - {CRLF} { yybegin(YYINITIAL); return BAD_SQUOT; } + {LF} { yybegin(YYINITIAL); return BAD_SQUOT; } {all_no_nl} { } <> { yybegin(YYINITIAL); return BAD_DQUOT; } - {CRLF} { yybegin(YYINITIAL); return BAD_DQUOT; } + {LF} { yybegin(YYINITIAL); return BAD_DQUOT; } {all_no_nl} { } +//Misc + {WHITE_SPACE} { return WHITE_SPACE; } [^] { return BAD_CHARACTER; } diff --git a/core/src/main/grammar/Zon.flex b/core/src/main/grammar/Zon.flex index ccc0a4fb..7c86737b 100644 --- a/core/src/main/grammar/Zon.flex +++ b/core/src/main/grammar/Zon.flex @@ -36,8 +36,10 @@ import static com.falsepattern.zigbrains.zon.psi.ZonTypes.*; %type IElementType %unicode -CRLF=\R -WHITE_SPACE=[\s]+ +WHITE_SPACE=\s+ + +// visual studio parity +LF=\r\n?|[\n\u0085\u2028\u2029] bin=[01] bin_="_"? {bin} @@ -54,13 +56,13 @@ dec_int={dec} {dec_}* hex_int={hex} {hex_}* char_char= \\ . - | [^\'\n] + | [^\'\r\n\u0085\u2028\u2029] string_char= \\ . - | [^\"\n] + | [^\"\r\n\u0085\u2028\u2029] -all_nl_wrap=[^\n]* [ \n]* -all_no_nl=[^\n]+ +nl_wrap={LF} (\s|{LF})* +all_no_nl=[^\r\n\u0085\u2028\u2029]+ FLOAT= "0x" {hex_int} "." {hex_int} ([pP] [-+]? {dec_int})? @@ -83,16 +85,16 @@ IDENTIFIER_PLAIN=[A-Za-z_][A-Za-z0-9_]* %state UNT_SQUOT %state UNT_DQUOT -%state LINE_CMT +%state CMT_LINE %% //Comments - "//" { yybegin(LINE_CMT); } - {all_nl_wrap} "//" { } - {all_no_nl} { } - \n { yybegin(YYINITIAL); return LINE_COMMENT; } - <> { yybegin(YYINITIAL); return LINE_COMMENT; } + "//" { yybegin(CMT_LINE); } + {all_no_nl} { } + {nl_wrap} "//" { } + \R { yybegin(YYINITIAL); return LINE_COMMENT; } + <> { yybegin(YYINITIAL); return LINE_COMMENT; } //Symbols @@ -123,9 +125,9 @@ IDENTIFIER_PLAIN=[A-Za-z_][A-Za-z0-9_]* [^] { yypushback(1); yybegin(UNT_DQUOT); } "\\\\" { yybegin(STR_MULT_LINE); } - {all_nl_wrap} "\\\\" { } {all_no_nl} { } - \n { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } + {nl_wrap} "\\\\" { } + {LF} { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } <> { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } //Numbers @@ -144,10 +146,10 @@ IDENTIFIER_PLAIN=[A-Za-z_][A-Za-z0-9_]* //Error handling <> { yybegin(YYINITIAL); return BAD_SQUOT; } - {CRLF} { yybegin(YYINITIAL); return BAD_SQUOT; } + {LF} { yybegin(YYINITIAL); return BAD_SQUOT; } {all_no_nl} { } <> { yybegin(YYINITIAL); return BAD_DQUOT; } - {CRLF} { yybegin(YYINITIAL); return BAD_DQUOT; } + {LF} { yybegin(YYINITIAL); return BAD_DQUOT; } {all_no_nl} { } //Misc diff --git a/gradle.properties b/gradle.properties index 129dd012..0bc80027 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ pluginName=ZigBrains pluginRepositoryUrl=https://github.com/FalsePattern/ZigBrains -pluginVersion=23.0.1 +pluginVersion=23.0.2 pluginSinceBuild=241 pluginUntilBuild=241.* diff --git a/push.sh b/push.sh new file mode 100755 index 00000000..79d73c3a --- /dev/null +++ b/push.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# +# This file is part of ZigBrains. +# +# Copyright (C) 2023-2025 FalsePattern +# All Rights Reserved +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# ZigBrains is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, only version 3 of the License. +# +# ZigBrains is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with ZigBrains. If not, see . +# + +set -e + +declare -a branches=("dev" "master" "242" "241") + +die () { + echo >&2 "$@" + exit 1 +} + +[ "$#" -eq 1 ] || die "1 argument required, $# provided" + +for i in "${branches[@]}" +do + echo "Pushing branch $i" + git push "$1" "$i" +done \ No newline at end of file