Skip to content

Commit 2051298

Browse files
committed
fix: support negated rem values
1 parent fed438b commit 2051298

File tree

3 files changed

+34
-8
lines changed

3 files changed

+34
-8
lines changed

src/language-service.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,9 @@ export class TwindTemplateLanguageService implements TemplateLanguageService {
319319
? vscode.CompletionItemKind.EnumMember
320320
: completion.kind == 'variant'
321321
? vscode.CompletionItemKind.Module
322-
: vscode.CompletionItemKind.Property,
322+
: completion.interpolation
323+
? vscode.CompletionItemKind.Variable
324+
: vscode.CompletionItemKind.Constant,
323325
data: completion.kind,
324326
label:
325327
rule.prefix && completion.label !== '&' && completion.kind == 'utility'
@@ -518,6 +520,8 @@ function translateCompletionItemKind(
518520
case vscode.CompletionItemKind.Unit:
519521
case vscode.CompletionItemKind.Value:
520522
return typescript.ScriptElementKind.constElement
523+
case vscode.CompletionItemKind.Variable:
524+
return typescript.ScriptElementKind.variableElement
521525
case vscode.CompletionItemKind.Enum:
522526
return typescript.ScriptElementKind.enumElement
523527
case vscode.CompletionItemKind.EnumMember:

src/plugin.ts

+28-6
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,39 @@ export class TwindPlugin {
2727
return info.languageService
2828
}
2929

30-
// Set up decorator
31-
// const proxy: ts.LanguageService = {
30+
// // Set up decorator
31+
// const { languageService } = info
32+
33+
// info.languageService = {
3234
// ...info.languageService,
33-
// getCompletionsAtPosition: (fileName, position, options) => {
34-
// // emmetCompletions: false
35-
// const prior = info.languageService.getCompletionsAtPosition(fileName, position, options)
35+
36+
// getCompletionEntrySymbol(fileName, position, name, source) {
37+
// const prior = languageService.getCompletionEntrySymbol(fileName, position, name, source)
3638

3739
// logger.log(
38-
// 'getCompletionsAtPosition: ' + JSON.stringify({ fileName, position, prior }, null, 2),
40+
// 'getCompletionEntrySymbol: ' + JSON.stringify({ fileName, position, name, source }),
3941
// )
4042

43+
// // prior.entries = prior.entries.filter((e) => e.name !== 'caller')
44+
// return prior
45+
// },
46+
// getCompletionsAtPosition: (fileName, position, options) => {
47+
// // emmetCompletions: false
48+
// const prior = languageService.getCompletionsAtPosition(fileName, position, options)
49+
50+
// // TODO match file [t]sx?
51+
// const contents = info.project.readFile(fileName)
52+
53+
// // logger.log('getCompletionsAtPosition: ' + JSON.stringify({ fileName, position }))
54+
55+
// console.log('')
56+
// console.log('')
57+
// console.log(
58+
// 'getCompletionsAtPosition',
59+
// JSON.stringify({ fileName, position, options, prior }, null, 2),
60+
// )
61+
// console.log('')
62+
// console.log('')
4163
// // prior.entries = prior.entries.filter((e) => e.name !== 'caller')
4264
// return prior
4365
// },

src/twind.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const sameValueToUndefined = (ref: string, value: string | undefined): string |
3737
ref === value ? undefined : value
3838

3939
const convertRem = (value: string | undefined): string | undefined => {
40-
const replaced = value?.replace(/((?:\d+\.)\d+)rem/g, (_, number) => `${Number(number) * 16}px`)
40+
const replaced = value?.replace(/(-?(?:\d+\.)\d+)rem/g, (_, number) => `${Number(number) * 16}px`)
4141

4242
return value === replaced ? value : `${value} (${replaced})`
4343
}

0 commit comments

Comments
 (0)