1
1
import { notFound } from "@src/diagnostic" ;
2
2
import AutocompleteResult from "@src/parser/AutocompleteResult" ;
3
3
import {
4
+ getTranslationItemByName ,
4
5
getTranslations ,
5
6
TranslationItem ,
6
7
} from "@src/repositories/translations" ;
@@ -121,8 +122,7 @@ export const linkProvider: LinkProvider = (doc: vscode.TextDocument) => {
121
122
return null ;
122
123
}
123
124
124
- const translation =
125
- getTranslations ( ) . items . translations [ param . value ] ;
125
+ const translation = getTranslationItemByName ( param . value ) ;
126
126
127
127
if ( ! translation ) {
128
128
return null ;
@@ -148,7 +148,7 @@ export const hoverProvider: HoverProvider = (
148
148
pos : vscode . Position ,
149
149
) : vscode . ProviderResult < vscode . Hover > => {
150
150
return findHoverMatchesInDoc ( doc , pos , toFind , getTranslations , ( match ) => {
151
- const item = getTranslations ( ) . items . translations [ match ] ;
151
+ const item = getTranslationItemByName ( match ) ;
152
152
153
153
if ( ! item ) {
154
154
return null ;
@@ -184,7 +184,7 @@ export const diagnosticProvider = (
184
184
return null ;
185
185
}
186
186
187
- const item = getTranslations ( ) . items . translations [ param . value ] ;
187
+ const item = getTranslationItemByName ( param . value ) ;
188
188
189
189
if ( item ) {
190
190
return null ;
@@ -252,6 +252,15 @@ export const completionProvider = {
252
252
getTranslations ( ) . items . translations ,
253
253
) . length ;
254
254
255
+ const precedingCharacter = document . getText (
256
+ new vscode . Range (
257
+ position . line ,
258
+ position . character - 1 ,
259
+ position . line ,
260
+ position . character ,
261
+ ) ,
262
+ ) ;
263
+
255
264
return Object . entries ( getTranslations ( ) . items . translations ) . map (
256
265
( [ key , translations ] ) => {
257
266
let completionItem = new vscode . CompletionItem (
@@ -264,6 +273,12 @@ export const completionProvider = {
264
273
wordMatchRegex ,
265
274
) ;
266
275
276
+ if ( precedingCharacter === "'" ) {
277
+ completionItem . insertText = key . replaceAll ( "'" , "\\'" ) ;
278
+ } else if ( precedingCharacter === '"' ) {
279
+ completionItem . insertText = key . replaceAll ( '"' , '\\"' ) ;
280
+ }
281
+
267
282
if ( totalTranslationItems < 200 ) {
268
283
// This will bomb if we have too many translations,
269
284
// 200 is an arbitrary but probably safe number
0 commit comments