Skip to content

Commit 5dc990b

Browse files
committed
better support completion in comment
1 parent d120b97 commit 5dc990b

File tree

7 files changed

+116
-37
lines changed

7 files changed

+116
-37
lines changed

build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ data class BuildData(
2929

3030
private val buildDataList = listOf(
3131
BuildData(
32-
ideaSDKShortVersion = "243",
33-
ideaSDKVersion = "2024.3",
34-
sinceBuild = "243",
32+
ideaSDKShortVersion = "252",
33+
ideaSDKVersion = "2025.2",
34+
sinceBuild = "252",
3535
untilBuild = "252.*"
3636
)
3737
)

gen/com/tang/intellij/lua/comment/lexer/_LuaDocLexer.java

Lines changed: 50 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public class _LuaDocLexer implements FlexLexer, LuaDocTypes {
2020
/** lexical states */
2121
public static final int YYINITIAL = 0;
2222
public static final int xCOMMENT_STRING = 2;
23+
public static final int xWORD_PARSING = 4;
2324

2425
/**
2526
* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
@@ -28,7 +29,7 @@ public class _LuaDocLexer implements FlexLexer, LuaDocTypes {
2829
* l is of the form l = 2*k, k a non negative integer
2930
*/
3031
private static final int ZZ_LEXSTATE[] = {
31-
0, 0, 1, 1
32+
0, 0, 1, 1, 2, 2
3233
};
3334

3435
/**
@@ -65,8 +66,10 @@ private static int zzUnpackcmap_top(String packed, int offset, int [] result) {
6566
private static final int [] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks();
6667

6768
private static final String ZZ_CMAP_BLOCKS_PACKED_0 =
68-
"\11\0\1\1\1\2\1\3\1\4\1\5\22\0\1\1"+
69-
"\14\0\1\6\127\0\1\3\u01a2\0\2\3\326\0\u0100\3";
69+
"\11\0\1\1\1\2\1\3\1\1\1\4\22\0\1\5"+
70+
"\2\6\1\7\2\0\7\6\1\10\2\6\12\11\6\6"+
71+
"\1\12\32\13\3\6\1\0\1\13\1\6\32\13\4\6"+
72+
"\6\0\1\3\u01a2\0\2\3\326\0\u0100\3";
7073

7174
private static int [] zzUnpackcmap_blocks() {
7275
int [] result = new int[1024];
@@ -93,11 +96,11 @@ private static int zzUnpackcmap_blocks(String packed, int offset, int [] result)
9396
private static final int [] ZZ_ACTION = zzUnpackAction();
9497

9598
private static final String ZZ_ACTION_PACKED_0 =
96-
"\1\0\1\1\1\2\1\3\1\4\1\5\1\4\1\2"+
97-
"\1\1\1\3\1\6";
99+
"\1\0\1\1\1\0\1\2\1\3\1\4\1\5\1\4"+
100+
"\1\2\1\1\1\3\1\6\1\7\1\10\1\11\1\12";
98101

99102
private static int [] zzUnpackAction() {
100-
int [] result = new int[11];
103+
int [] result = new int[16];
101104
int offset = 0;
102105
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
103106
return result;
@@ -122,11 +125,11 @@ private static int zzUnpackAction(String packed, int offset, int [] result) {
122125
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
123126

124127
private static final String ZZ_ROWMAP_PACKED_0 =
125-
"\0\0\0\7\0\16\0\25\0\16\0\16\0\34\0\43"+
126-
"\0\52\0\61\0\43";
128+
"\0\0\0\14\0\30\0\44\0\60\0\44\0\44\0\74"+
129+
"\0\110\0\124\0\140\0\44\0\44\0\44\0\154\0\110";
127130

128131
private static int [] zzUnpackRowMap() {
129-
int [] result = new int[11];
132+
int [] result = new int[16];
130133
int offset = 0;
131134
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
132135
return result;
@@ -149,14 +152,16 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) {
149152
private static final int [] ZZ_TRANS = zzUnpacktrans();
150153

151154
private static final String ZZ_TRANS_PACKED_0 =
152-
"\1\3\1\4\1\5\1\6\1\4\1\7\1\10\1\11"+
153-
"\1\12\1\5\1\11\1\4\1\7\1\11\10\0\1\4"+
154-
"\2\0\1\4\4\0\1\5\12\0\1\13\2\11\1\0"+
155-
"\1\11\2\0\2\11\1\12\1\0\1\11\1\4\1\0"+
156-
"\1\11";
155+
"\1\4\1\5\1\6\1\7\1\10\1\5\2\4\1\11"+
156+
"\3\4\1\12\1\5\1\6\1\12\1\10\1\13\6\12"+
157+
"\1\4\1\5\1\6\1\7\1\10\1\5\1\14\1\15"+
158+
"\1\14\1\4\1\16\1\17\15\0\1\5\3\0\1\5"+
159+
"\10\0\1\6\21\0\1\20\3\0\1\12\2\0\1\12"+
160+
"\1\0\10\12\1\5\1\0\1\12\1\0\1\13\6\12"+
161+
"\11\0\1\17\1\0\1\17";
157162

158163
private static int [] zzUnpacktrans() {
159-
int [] result = new int[56];
164+
int [] result = new int[120];
160165
int offset = 0;
161166
offset = zzUnpacktrans(ZZ_TRANS_PACKED_0, offset, result);
162167
return result;
@@ -194,10 +199,11 @@ private static int zzUnpacktrans(String packed, int offset, int [] result) {
194199
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
195200

196201
private static final String ZZ_ATTRIBUTE_PACKED_0 =
197-
"\1\0\1\1\1\11\1\1\2\11\5\1";
202+
"\1\0\1\1\1\0\1\11\1\1\2\11\4\1\3\11"+
203+
"\2\1";
198204

199205
private static int [] zzUnpackAttribute() {
200-
int [] result = new int[11];
206+
int [] result = new int[16];
201207
int offset = 0;
202208
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
203209
return result;
@@ -527,32 +533,52 @@ else if (zzAtEOF) {
527533
{ yybegin(YYINITIAL); return STRING;
528534
}
529535
// fall through
530-
case 7: break;
536+
case 11: break;
531537
case 2:
532538
{ yybegin(xCOMMENT_STRING); yypushback(yylength());
533539
}
534540
// fall through
535-
case 8: break;
541+
case 12: break;
536542
case 3:
537543
{ return com.intellij.psi.TokenType.WHITE_SPACE;
538544
}
539545
// fall through
540-
case 9: break;
546+
case 13: break;
541547
case 4:
542548
{ yybegin(YYINITIAL); return com.intellij.psi.TokenType.WHITE_SPACE;
543549
}
544550
// fall through
545-
case 10: break;
551+
case 14: break;
546552
case 5:
547553
{ return TokenType.WHITE_SPACE;
548554
}
549555
// fall through
550-
case 11: break;
556+
case 15: break;
551557
case 6:
552-
{ return DASHES;
558+
{ return STRING;
553559
}
554560
// fall through
555-
case 12: break;
561+
case 16: break;
562+
case 7:
563+
{ yybegin(xCOMMENT_STRING); return HASH;
564+
}
565+
// fall through
566+
case 17: break;
567+
case 8:
568+
{ return AT;
569+
}
570+
// fall through
571+
case 18: break;
572+
case 9:
573+
{ return WORD;
574+
}
575+
// fall through
576+
case 19: break;
577+
case 10:
578+
{ yybegin(xWORD_PARSING); return DASHES;
579+
}
580+
// fall through
581+
case 20: break;
556582
default:
557583
zzScanError(ZZ_NO_MATCH);
558584
}

gen/com/tang/intellij/lua/comment/parser/LuaDocParser.java

Lines changed: 31 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/com/tang/intellij/lua/comment/psi/LuaDocTypes.java

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/com/tang/intellij/lua/doc.bnf

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,15 @@
3636
STRING_LITERAL = "STRING_LITERAL"
3737
DASHES = 'DASHES'
3838
STRING = 'STRING'
39+
WORD = 'WORD'
40+
HASH = 'HASH'
41+
AT = 'AT'
42+
SPECIAL_SYMBOL = 'SPECIAL_SYMBOL'
3943
]
4044
}
4145

4246
doc ::= (DASHES comment_content?)*
4347

44-
private comment_content ::= STRING { recoverWhile=comment_content_recover }
48+
private comment_content ::= token_sequence? { recoverWhile=comment_content_recover }
49+
private token_sequence ::= (WORD | STRING | HASH | AT)+
4550
private comment_content_recover ::= !(DASHES)

src/main/java/com/tang/intellij/lua/doc.flex

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,35 @@ DOC_DASHES = --+
4343
DOUBLE_QUOTED_STRING=\"([^\\\"]|\\\S|\\[\r\n])*\"?
4444
SINGLE_QUOTED_STRING='([^\\\']|\\\S|\\[\r\n])*'?
4545

46+
// 单词分隔符:空格、制表符等
47+
WORD_SEPARATOR=[\ \t\f]
48+
// 单词:字母、数字、下划线等组成,不包含#和@
49+
WORD=[a-zA-Z_][a-zA-Z0-9_]*
50+
// 特殊符号:点、逗号、分号、冒号、括号等
51+
SPECIAL_SYMBOL=[\.,:;()\[\]{}|&!+\-*/=<>?~`'\"\\]
52+
// #和@符号
53+
HASH="#"
54+
AT="@"
55+
4656
%state xCOMMENT_STRING
57+
%state xWORD_PARSING
4758

4859
%%
4960

5061
<YYINITIAL> {
5162
{EOL} { yybegin(YYINITIAL); return com.intellij.psi.TokenType.WHITE_SPACE;}
5263
{LINE_WS}+ { return com.intellij.psi.TokenType.WHITE_SPACE; }
53-
{DOC_DASHES} { return DASHES; }
64+
{DOC_DASHES} { yybegin(xWORD_PARSING); return DASHES; }
65+
. { yybegin(xCOMMENT_STRING); yypushback(yylength()); }
66+
}
67+
68+
<xWORD_PARSING> {
69+
{EOL} { yybegin(YYINITIAL); return com.intellij.psi.TokenType.WHITE_SPACE;}
70+
{WORD_SEPARATOR}+ { return com.intellij.psi.TokenType.WHITE_SPACE; }
71+
{WORD} { return WORD; }
72+
{SPECIAL_SYMBOL} { return STRING; }
73+
{HASH} { yybegin(xCOMMENT_STRING); return HASH; }
74+
{AT} { return AT; }
5475
. { yybegin(xCOMMENT_STRING); yypushback(yylength()); }
5576
}
5677

src/main/resources/META-INF/plugin.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@
7474
<!-- LSP 颜色配置页面 -->
7575
<colorSettingsPage implementation="com.tang.intellij.lua.highlighting.LuaLspColorSettingsPage"/>
7676

77-
<!-- <highlightUsagesHandlerFactory
78-
implementation="com.tang.intellij.lua.codeInsight.highlighting.LuaHighlightUsagesHandlerFactory"/> -->
79-
8077
<!-- <readWriteAccessDetector implementation="com.tang.intellij.lua.codeInsight.LuaReadWriteAccessDetector"/> -->
8178

8279
<!-- debugger-->

0 commit comments

Comments
 (0)