@@ -14,66 +14,68 @@ import { registerExpandAliasCommand } from './features/ExpandAlias';
14
14
import { registerShowHelpCommand } from './features/ShowOnlineHelp' ;
15
15
import { registerConsoleCommands } from './features/Console' ;
16
16
17
+ var languageServerClient : LanguageClient = undefined ;
18
+
17
19
export function activate ( context : vscode . ExtensionContext ) : void {
18
-
20
+
19
21
var PowerShellLanguageId = 'powershell' ;
20
22
var settings = settingsManager . load ( 'powershell' ) ;
21
23
22
- vscode . languages . setLanguageConfiguration ( PowerShellLanguageId ,
24
+ vscode . languages . setLanguageConfiguration ( PowerShellLanguageId ,
23
25
{
24
26
wordPattern : / ( - ? \d * \. \d \w * ) | ( [ ^ \` \~ \! \@ \# \% \^ \& \* \( \) \= \+ \[ \{ \] \} \\ \| \; \' \" \, \. \< \> \/ \? \s ] + ) / g,
25
-
27
+
26
28
indentationRules : {
27
29
// ^(.*\*/)?\s*\ }.*$
28
30
decreaseIndentPattern : / ^ ( .* \* \/ ) ? \s * \} .* $ / ,
29
31
// ^.*\{[^}"']*$
30
32
increaseIndentPattern : / ^ .* \{ [ ^ } " ' ] * $ /
31
- } ,
32
-
33
+ } ,
34
+
33
35
comments : {
34
36
lineComment : '#' ,
35
37
blockComment : [ '<#' , '#>' ]
36
38
} ,
37
-
39
+
38
40
brackets : [
39
41
[ '{' , '}' ] ,
40
42
[ '[' , ']' ] ,
41
43
[ '(' , ')' ] ,
42
44
] ,
43
-
45
+
44
46
__electricCharacterSupport : {
45
47
brackets : [
46
48
{ tokenType :'delimiter.curly.ts' , open : '{' , close : '}' , isElectric : true } ,
47
49
{ tokenType :'delimiter.square.ts' , open : '[' , close : ']' , isElectric : true } ,
48
50
{ tokenType :'delimiter.paren.ts' , open : '(' , close : ')' , isElectric : true }
49
51
] ,
50
- docComment : { scope :'comment.documentation' , open :'/**' , lineStart :' * ' , close :' */' }
52
+ docComment : { scope :'comment.documentation' , open :'/**' , lineStart :' * ' , close :' */' }
51
53
} ,
52
-
54
+
53
55
__characterPairSupport : {
54
56
autoClosingPairs : [
55
57
{ open : '{' , close : '}' } ,
56
58
{ open : '[' , close : ']' } ,
57
59
{ open : '(' , close : ')' } ,
58
60
{ open : '"' , close : '"' , notIn : [ 'string' ] } ,
59
61
{ open : '\'' , close : '\'' , notIn : [ 'string' , 'comment' ] }
60
- ]
62
+ ]
61
63
}
62
64
} ) ;
63
-
65
+
64
66
let args = [ ] ;
65
67
if ( settings . developer . editorServicesWaitForDebugger )
66
68
{
67
69
args . push ( '/waitForDebugger' ) ;
68
70
}
69
-
71
+
70
72
let serverPath = resolveLanguageServerPath ( settings ) ;
71
73
let serverOptions = {
72
- run : {
74
+ run : {
73
75
command : serverPath ,
74
- args : args
76
+ args : args
75
77
} ,
76
- debug : {
78
+ debug : {
77
79
command : serverPath ,
78
80
args : [ '/waitForDebugger' ]
79
81
}
@@ -87,33 +89,42 @@ export function activate(context: vscode.ExtensionContext): void {
87
89
}
88
90
}
89
91
90
- let client =
92
+ languageServerClient =
91
93
new LanguageClient (
92
- 'PowerShell Editor Services' ,
93
- serverOptions ,
94
+ 'PowerShell Editor Services' ,
95
+ serverOptions ,
94
96
clientOptions ) ;
95
-
96
- client . start ( ) ;
97
+
98
+ languageServerClient . start ( ) ;
97
99
98
100
// Register other features
99
- registerExpandAliasCommand ( client ) ;
100
- registerShowHelpCommand ( client ) ;
101
- registerConsoleCommands ( client ) ;
101
+ registerExpandAliasCommand ( languageServerClient ) ;
102
+ registerShowHelpCommand ( languageServerClient ) ;
103
+ registerConsoleCommands ( languageServerClient ) ;
104
+ }
105
+
106
+ export function deactivate ( ) : void {
107
+ if ( languageServerClient )
108
+ {
109
+ // Close the language server client
110
+ languageServerClient . stop ( ) ;
111
+ languageServerClient = undefined ;
112
+ }
102
113
}
103
114
104
115
function resolveLanguageServerPath ( settings : settingsManager . ISettings ) : string {
105
116
var editorServicesHostPath = settings . developer . editorServicesHostPath ;
106
-
117
+
107
118
if ( editorServicesHostPath )
108
- {
119
+ {
109
120
console . log ( "Found Editor Services path from config: " + editorServicesHostPath ) ;
110
-
121
+
111
122
// Make the path absolute if it's not
112
123
editorServicesHostPath =
113
124
path . resolve (
114
125
__dirname ,
115
126
editorServicesHostPath ) ;
116
-
127
+
117
128
console . log ( " Resolved path to: " + editorServicesHostPath ) ;
118
129
}
119
130
else
@@ -125,9 +136,9 @@ function resolveLanguageServerPath(settings: settingsManager.ISettings) : string
125
136
'..' ,
126
137
'bin' ,
127
138
'Microsoft.PowerShell.EditorServices.Host.exe' ) ;
128
-
139
+
129
140
console . log ( "Using default Editor Services path: " + editorServicesHostPath ) ;
130
141
}
131
-
142
+
132
143
return editorServicesHostPath ;
133
144
}
0 commit comments