@@ -14,6 +14,7 @@ export namespace CommentHelpRequest {
14
14
interface CommentHelpRequestParams {
15
15
documentUri : string ;
16
16
triggerPosition : Position ;
17
+ blockComment : boolean ;
17
18
}
18
19
19
20
interface CommentHelpRequestResult {
@@ -23,12 +24,20 @@ interface CommentHelpRequestResult {
23
24
enum SearchState { Searching , Locked , Found } ;
24
25
25
26
export class HelpCompletionFeature implements IFeature {
27
+ private readonly triggerCharactersBlockComment : string ;
28
+ private readonly triggerCharactersLineComment : string ;
29
+ private triggerCharactersFound : string ;
26
30
private languageClient : LanguageClient ;
27
- private triggerCharacters : string ;
28
31
private disposable : Disposable ;
29
32
private searchState : SearchState ;
33
+ private get isBlockComment ( ) : boolean {
34
+ return this . triggerCharactersFound !== undefined &&
35
+ this . triggerCharactersFound === this . triggerCharactersBlockComment ;
36
+ }
37
+
30
38
constructor ( ) {
31
- this . triggerCharacters = "#<" ;
39
+ this . triggerCharactersBlockComment = "#<" ;
40
+ this . triggerCharactersLineComment = "##" ;
32
41
let subscriptions = [ ] ;
33
42
workspace . onDidChangeTextDocument ( this . onEvent , this , subscriptions ) ;
34
43
this . searchState = SearchState . Searching ;
@@ -47,15 +56,20 @@ export class HelpCompletionFeature implements IFeature {
47
56
let text = changeEvent . contentChanges [ 0 ] . text ;
48
57
switch ( this . searchState ) {
49
58
case SearchState . Searching :
50
- if ( text . length === 1 && text [ 0 ] === this . triggerCharacters [ 0 ] ) {
59
+ if ( text . length === 1 && text [ 0 ] === this . triggerCharactersBlockComment [ 0 ] ) {
51
60
this . searchState = SearchState . Locked ;
52
61
}
53
62
break ;
54
63
55
64
case SearchState . Locked :
56
- if ( text . length === 1 && text [ 0 ] === this . triggerCharacters [ 1 ] ) {
65
+ if ( text . length === 1 &&
66
+ ( text [ 0 ] === ( this . triggerCharactersFound = this . triggerCharactersBlockComment ) [ 1 ] ||
67
+ text [ 0 ] === ( this . triggerCharactersFound = this . triggerCharactersLineComment ) [ 1 ] ) ) {
57
68
this . searchState = SearchState . Found ;
58
69
}
70
+ else {
71
+ this . searchState = SearchState . Searching ;
72
+ }
59
73
break ;
60
74
}
61
75
@@ -72,7 +86,8 @@ export class HelpCompletionFeature implements IFeature {
72
86
CommentHelpRequest . type ,
73
87
{
74
88
documentUri : changeEvent . document . uri . toString ( ) ,
75
- triggerPosition : triggerStartPos
89
+ triggerPosition : triggerStartPos ,
90
+ blockComment : this . isBlockComment
76
91
} ) . then ( result => {
77
92
let content = result . content ;
78
93
if ( content === undefined ) {
0 commit comments