@@ -1238,13 +1238,23 @@ class Server {
1238
1238
1239
1239
function makeRawTextHover (cursorLorelinePos : loreline. Position , title : String , description : Array <String >, content : String , part : NStringPart , ? pos : loreline. Position ): Hover {
1240
1240
1241
+ var spaceOffset = 0 ;
1242
+ if (pos == null ) {
1243
+ pos = part .pos ;
1244
+ }
1245
+ else {
1246
+ spaceOffset = pos .offset - part .pos .offset ;
1247
+ }
1248
+
1241
1249
switch part .partType {
1242
1250
case Raw (text ):
1243
- final offset = cursorLorelinePos .offset - part .pos .offset ;
1251
+ final offset = cursorLorelinePos .offset - pos .offset ;
1252
+ var first = true ;
1244
1253
for (sub in extractTextSectionsExcludingComments (text )) {
1245
- if (offset >= sub .offset && offset < sub .offset + sub .length ) {
1246
- return makeHover (title , description , content , part , part . pos .withOffset (content , sub .offset , sub .length ));
1254
+ if (offset >= sub .offset && offset < sub .offset + sub .length - ( first ? spaceOffset : 0 ) ) {
1255
+ return makeHover (title , description , content , part , pos .withOffset (content , sub .offset - ( first ? 0 : spaceOffset ) , sub .length - ( first ? spaceOffset : 0 ) ));
1247
1256
}
1257
+ first = false ;
1248
1258
}
1249
1259
return null ;
1250
1260
case _ :
@@ -1444,23 +1454,23 @@ class Server {
1444
1454
if (literal .parts .length == 1 ) {
1445
1455
switch literal .parts [0 ].partType {
1446
1456
case Raw (text ):
1447
- return makeRawTextHover ( lorelinePos , hoverTitle (' Text' ), hoverDescriptionForNode (literal .parts [0 ]), content , stringPart , stringPart .pos .withOffset (content , - 1 , stringPart .pos .length + 2 ));
1457
+ return makeHover ( hoverTitle (' Text' ), hoverDescriptionForNode (literal .parts [0 ]), content , stringPart , stringPart .pos .withOffset (content , - 1 , stringPart .pos .length + 2 ));
1448
1458
case Expr (expr ):
1449
1459
case Tag (closing , expr ):
1450
1460
}
1451
1461
}
1452
1462
else if (partIndex == 0 ) {
1453
1463
switch literal .parts [0 ].partType {
1454
1464
case Raw (text ):
1455
- return makeRawTextHover ( lorelinePos , hoverTitle (' Text' ), hoverDescriptionForNode (literal .parts [0 ]), content , stringPart , stringPart .pos .withOffset (content , - 1 , stringPart .pos .length + 1 ));
1465
+ return makeHover ( hoverTitle (' Text' ), hoverDescriptionForNode (literal .parts [0 ]), content , stringPart , stringPart .pos .withOffset (content , - 1 , stringPart .pos .length + 1 ));
1456
1466
case Expr (expr ):
1457
1467
case Tag (closing , expr ):
1458
1468
}
1459
1469
}
1460
1470
else if (partIndex == literal .parts .length - 1 ) {
1461
1471
switch literal .parts [literal .parts .length - 1 ].partType {
1462
1472
case Raw (text ):
1463
- return makeRawTextHover ( lorelinePos , hoverTitle (' Text' ), hoverDescriptionForNode (literal .parts [literal .parts .length - 1 ]), content , stringPart , stringPart .pos .withOffset (content , 0 , stringPart .pos .length + 1 ));
1473
+ return makeHover ( hoverTitle (' Text' ), hoverDescriptionForNode (literal .parts [literal .parts .length - 1 ]), content , stringPart , stringPart .pos .withOffset (content , 0 , stringPart .pos .length + 1 ));
1464
1474
case Expr (expr ):
1465
1475
case Tag (closing , expr ):
1466
1476
}
0 commit comments