@@ -7,6 +7,7 @@ import { Disposable, EndOfLine, Position, Range, SnippetString,
7
7
import { LanguageClient , RequestType } from "vscode-languageclient" ;
8
8
import { IFeature } from "../feature" ;
9
9
import { Logger } from "../logging" ;
10
+ import Settings = require( "../settings" ) ;
10
11
11
12
export const CommentHelpRequestType =
12
13
new RequestType < any , any , void , void > ( "powerShell/getCommentHelp" ) ;
@@ -27,21 +28,30 @@ export class HelpCompletionFeature implements IFeature {
27
28
private helpCompletionProvider : HelpCompletionProvider ;
28
29
private languageClient : LanguageClient ;
29
30
private disposable : Disposable ;
31
+ private settings : Settings . ISettings ;
30
32
31
33
constructor ( private log : Logger ) {
32
- this . helpCompletionProvider = new HelpCompletionProvider ( ) ;
33
- const subscriptions = [ ] ;
34
- workspace . onDidChangeTextDocument ( this . onEvent , this , subscriptions ) ;
35
- this . disposable = Disposable . from ( ...subscriptions ) ;
34
+ this . settings = Settings . load ( ) ;
35
+
36
+ if ( this . settings . helpCompletion !== Settings . HelpCompletion . Disabled ) {
37
+ this . helpCompletionProvider = new HelpCompletionProvider ( ) ;
38
+ const subscriptions = [ ] ;
39
+ workspace . onDidChangeTextDocument ( this . onEvent , this , subscriptions ) ;
40
+ this . disposable = Disposable . from ( ...subscriptions ) ;
41
+ }
36
42
}
37
43
38
44
public dispose ( ) {
39
- this . disposable . dispose ( ) ;
45
+ if ( this . disposable ) {
46
+ this . disposable . dispose ( ) ;
47
+ }
40
48
}
41
49
42
50
public setLanguageClient ( languageClient : LanguageClient ) {
43
51
this . languageClient = languageClient ;
44
- this . helpCompletionProvider . languageClient = languageClient ;
52
+ if ( this . helpCompletionProvider ) {
53
+ this . helpCompletionProvider . languageClient = languageClient ;
54
+ }
45
55
}
46
56
47
57
public onEvent ( changeEvent : TextDocumentChangeEvent ) : void {
@@ -68,6 +78,7 @@ class TriggerFinder {
68
78
private state : SearchState ;
69
79
private document : TextDocument ;
70
80
private count : number ;
81
+
71
82
constructor ( private triggerCharacters : string ) {
72
83
this . state = SearchState . Searching ;
73
84
this . count = 0 ;
@@ -113,20 +124,20 @@ class TriggerFinder {
113
124
}
114
125
115
126
class HelpCompletionProvider {
116
- private triggerFinderBlockComment : TriggerFinder ;
117
127
private triggerFinderLineComment : TriggerFinder ;
118
128
private lastChangeText : string ;
119
129
private lastChangeRange : Range ;
120
130
private lastDocument : TextDocument ;
121
131
private langClient : LanguageClient ;
132
+ private settings : Settings . ISettings ;
122
133
123
134
constructor ( ) {
124
- this . triggerFinderBlockComment = new TriggerFinder ( "<#" ) ;
125
135
this . triggerFinderLineComment = new TriggerFinder ( "##" ) ;
136
+ this . settings = Settings . load ( ) ;
126
137
}
127
138
128
139
public get triggerFound ( ) : boolean {
129
- return this . triggerFinderBlockComment . found || this . triggerFinderLineComment . found ;
140
+ return this . triggerFinderLineComment . found ;
130
141
}
131
142
132
143
public set languageClient ( value : LanguageClient ) {
@@ -137,12 +148,10 @@ class HelpCompletionProvider {
137
148
this . lastDocument = document ;
138
149
this . lastChangeText = changeText ;
139
150
this . lastChangeRange = changeRange ;
140
- this . triggerFinderBlockComment . updateState ( document , changeText ) ;
141
151
this . triggerFinderLineComment . updateState ( document , changeText ) ;
142
152
}
143
153
144
154
public reset ( ) : void {
145
- this . triggerFinderBlockComment . reset ( ) ;
146
155
this . triggerFinderLineComment . reset ( ) ;
147
156
}
148
157
@@ -161,7 +170,7 @@ class HelpCompletionProvider {
161
170
{
162
171
documentUri : doc . uri . toString ( ) ,
163
172
triggerPosition : triggerStartPos ,
164
- blockComment : this . triggerFinderBlockComment . found ,
173
+ blockComment : this . settings . helpCompletion === Settings . HelpCompletion . BlockComment ,
165
174
} ) . then ( ( result ) => {
166
175
if ( result == null || result . content == null ) {
167
176
return ;
0 commit comments