@@ -61,14 +61,18 @@ const moduleWrapper = tsserver => {
61
61
//
62
62
// Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
63
63
//
64
- // Update 2021-10-08: VSCode changed their format in 1.61.
64
+ // 2021-10-08: VSCode changed the format in 1.61.
65
65
// Before | ^zip:/c:/foo/bar.zip/package.json
66
66
// After | ^/zip//c:/foo/bar.zip/package.json
67
67
//
68
- // Update 2022-04-06: VSCode changed the format in 1.66.
68
+ // 2022-04-06: VSCode changed the format in 1.66.
69
69
// Before | ^/zip//c:/foo/bar.zip/package.json
70
70
// After | ^/zip/c:/foo/bar.zip/package.json
71
71
//
72
+ // 2022-05-06: VSCode changed the format in 1.68
73
+ // Before | ^/zip/c:/foo/bar.zip/package.json
74
+ // After | ^/zip//c:/foo/bar.zip/package.json
75
+ //
72
76
case `vscode <1.61` : {
73
77
str = `^zip:${ str } ` ;
74
78
} break ;
@@ -77,10 +81,14 @@ const moduleWrapper = tsserver => {
77
81
str = `^/zip/${ str } ` ;
78
82
} break ;
79
83
80
- case `vscode` : {
84
+ case `vscode <1.68 ` : {
81
85
str = `^/zip${ str } ` ;
82
86
} break ;
83
87
88
+ case `vscode` : {
89
+ str = `^/zip/${ str } ` ;
90
+ } break ;
91
+
84
92
// To make "go to definition" work,
85
93
// We have to resolve the actual file system path from virtual path
86
94
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
@@ -127,9 +135,7 @@ const moduleWrapper = tsserver => {
127
135
128
136
case `vscode` :
129
137
default : {
130
- return process . platform === `win32`
131
- ? str . replace ( / ^ \^ ? ( z i p : | \/ z i p ) \/ + / , `` )
132
- : str . replace ( / ^ \^ ? ( z i p : | \/ z i p ) \/ + / , `/` ) ;
138
+ return str . replace ( / ^ \^ ? ( z i p : | \/ z i p ( \/ t s - n u l - a u t h o r i t y ) ? ) \/ + / , process . platform === `win32` ? `` : `/` )
133
139
} break ;
134
140
}
135
141
}
@@ -169,10 +175,19 @@ const moduleWrapper = tsserver => {
169
175
) {
170
176
hostInfo = parsedMessage . arguments . hostInfo ;
171
177
if ( hostInfo === `vscode` && process . env . VSCODE_IPC_HOOK ) {
172
- if ( / ( \/ | - ) 1 \. ( [ 1 - 5 ] [ 0 - 9 ] | 6 0 ) \. / . test ( process . env . VSCODE_IPC_HOOK ) ) {
173
- hostInfo += ` <1.61` ;
174
- } else if ( / ( \/ | - ) 1 \. ( 6 [ 1 - 5 ] ) \. / . test ( process . env . VSCODE_IPC_HOOK ) ) {
175
- hostInfo += ` <1.66` ;
178
+ const [ , major , minor ] = ( process . env . VSCODE_IPC_HOOK . match (
179
+ // The RegExp from https://semver.org/ but without the caret at the start
180
+ / ( 0 | [ 1 - 9 ] \d * ) \. ( 0 | [ 1 - 9 ] \d * ) \. ( 0 | [ 1 - 9 ] \d * ) (?: - ( (?: 0 | [ 1 - 9 ] \d * | \d * [ a - z A - Z - ] [ 0 - 9 a - z A - Z - ] * ) (?: \. (?: 0 | [ 1 - 9 ] \d * | \d * [ a - z A - Z - ] [ 0 - 9 a - z A - Z - ] * ) ) * ) ) ? (?: \+ ( [ 0 - 9 a - z A - Z - ] + (?: \. [ 0 - 9 a - z A - Z - ] + ) * ) ) ? $ /
181
+ ) ?? [ ] ) . map ( Number )
182
+
183
+ if ( major === 1 ) {
184
+ if ( minor < 61 ) {
185
+ hostInfo += ` <1.61` ;
186
+ } else if ( minor < 66 ) {
187
+ hostInfo += ` <1.66` ;
188
+ } else if ( minor < 68 ) {
189
+ hostInfo += ` <1.68` ;
190
+ }
176
191
}
177
192
}
178
193
}
0 commit comments