From 569635067cdedfd56081baa4311df447465674ef Mon Sep 17 00:00:00 2001 From: Brad Cornes Date: Mon, 12 Jul 2021 15:23:16 +0100 Subject: [PATCH] update css helper hovers --- .../tailwindcss-language-service/package.json | 1 + .../getInvalidConfigPathDiagnostics.ts | 2 +- .../src/hoverProvider.ts | 7 ++++-- .../src/util/stringify.ts | 23 +++++++++++-------- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/tailwindcss-language-service/package.json b/packages/tailwindcss-language-service/package.json index 5c14354..60e397c 100644 --- a/packages/tailwindcss-language-service/package.json +++ b/packages/tailwindcss-language-service/package.json @@ -27,6 +27,7 @@ "postcss-selector-parser": "6.0.2", "semver": "7.3.2", "sift-string": "0.0.2", + "stringify-object": "3.3.0", "vscode-emmet-helper-bundled": "0.0.1", "vscode-languageclient": "7.0.0", "vscode-languageserver": "7.0.0", diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts index 3377233..99f7043 100644 --- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts +++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts @@ -20,7 +20,7 @@ function pathToString(path: string | string[]): string { }, '') } -function validateConfigPath( +export function validateConfigPath( state: State, path: string | string[], base: string[] = [] diff --git a/packages/tailwindcss-language-service/src/hoverProvider.ts b/packages/tailwindcss-language-service/src/hoverProvider.ts index b6c45d4..d62c148 100644 --- a/packages/tailwindcss-language-service/src/hoverProvider.ts +++ b/packages/tailwindcss-language-service/src/hoverProvider.ts @@ -7,6 +7,7 @@ import { findClassNameAtPosition } from './util/find' import { validateApply } from './util/validateApply' import { getClassNameParts } from './util/getClassNameAtPosition' import * as jit from './util/jit' +import { validateConfigPath } from './diagnostics/getInvalidConfigPathDiagnostics' export async function doHover( state: State, @@ -50,12 +51,14 @@ function provideCssHelperHover(state: State, document: TextDocument, position: P key = ['theme', ...key] } - const value = stringifyConfigValue(dlv(state.config, key)) + const value = validateConfigPath(state, key).isValid + ? stringifyConfigValue(dlv(state.config, key)) + : null if (value === null) return null return { - contents: { kind: 'plaintext', value }, + contents: { kind: 'markdown', value: ['```plaintext', value, '```'].join('\n') }, range: { start: { line: position.line, character: startChar }, end: { diff --git a/packages/tailwindcss-language-service/src/util/stringify.ts b/packages/tailwindcss-language-service/src/util/stringify.ts index c46bd5b..0d75667 100644 --- a/packages/tailwindcss-language-service/src/util/stringify.ts +++ b/packages/tailwindcss-language-service/src/util/stringify.ts @@ -3,17 +3,22 @@ const dlv = require('dlv') import escapeClassName from 'css.escape' import { ensureArray } from './array' import { remToPx } from './remToPx' +import stringifyObject from 'stringify-object' +import isObject from './isObject' export function stringifyConfigValue(x: any): string { - if (typeof x === 'string') return x - if (typeof x === 'number') return x.toString() - if (Array.isArray(x)) { - return x - .filter((y) => typeof y === 'string') - .filter(Boolean) - .join(', ') - } - return null + if (isObject(x)) return `${Object.keys(x).length} values` + if (typeof x === 'function') return 'ƒ' + return stringifyObject(x, { + inlineCharacterLimit: Infinity, + singleQuotes: false, + transform: (obj, prop, originalResult) => { + if (typeof obj[prop] === 'function') { + return 'ƒ' + } + return originalResult + }, + }) } export function stringifyCss(