diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100755 index 96122674e2d63396dd0b10c0bf104d240a8612b3..0000000000000000000000000000000000000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "version": "0.2.0", - // List of configurations. Add new configurations or edit existing ones. - "configurations": [ - { - "type": "extensionHost", - "request": "launch", - "name": "Launch Client", - "runtimeExecutable": "${execPath}", - "args": ["--extensionDevelopmentPath=${workspaceRoot}"], - "stopOnEntry": false, - "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/extension/**/*.js"], - // "preLaunchTask": "npm: dev" - }, - { - "type": "node", - "request": "attach", - "name": "Attach to Server 6011", - "address": "localhost", - "protocol": "inspector", - "port": 6011, - "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/server/**/*.js"] - }, - { - "type": "node", - "request": "attach", - "name": "Attach to Server 6012", - "address": "localhost", - "protocol": "inspector", - "port": 6012, - "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/server/**/*.js"] - } - ] -} diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100755 index 4b2d95fe13eb02d623db226f4c62c341dd430e6a..0000000000000000000000000000000000000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "build", - "group": "build", - "presentation": { - "panel": "dedicated", - "reveal": "never" - }, - "problemMatcher": ["$tsc"] - }, - { - "type": "npm", - "script": "dev", - "isBackground": true, - "group": { - "kind": "build", - "isDefault": true - }, - "presentation": { - "panel": "dedicated", - "reveal": "never" - }, - "problemMatcher": ["$tsc-watch"] - } - ] -} diff --git a/.vscodeignore b/.vscodeignore index eef67fbd5ddbdef7a67fc3a82d8672cdf6962895..97c56c39e30c52254dc9c4f086271f56dfa4ff20 100755 --- a/.vscodeignore +++ b/.vscodeignore @@ -7,4 +7,3 @@ **/tsconfig.base.json contributing.md node_modules/** src/** -tests/** diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index f8bf3f3ba96f9cb15680ba52eb982625599c7293..0000000000000000000000000000000000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,75 +0,0 @@ -# Changelog - -## 0.3.0 - -### General - -- Added support for string values in Tailwind's `important` option (#96) -- Removed all unnecessary logs (#91) -- Added support for components in addition to utilities (#67) -- Added description to custom variant completion items where possible -- Config parsing errors are now displayed in the VS Code UI -- Class names from `@tailwind base` are now included (by default `@tailwind base` does not include any class names but plugins may contribute them) -- Color swatches can now be displayed for rules with multiple properties and/or colors with variable alpha (#113) -- Added `tailwindCSS.includeLanguages` setting: - ```json - { - "tailwindCSS.includeLanguages": { - "plaintext": "html" - } - } - ``` - This setting allows you to add additional language support. The key of each entry is the new language ID and the value is any one of the extensions built-in languages, depending on how you want the new language to be treated (e.g. `html`, `css`, or `javascript`) - -### HTML - -- Added built-in support for `liquid`, `aspnetcorerazor`, `mustache`, `HTML (EEx)`, `html-eex`, `gohtml`, `GoHTML`, and `hbs` languages -- Added syntax definition to embedded stylesheets in HTML files - -### CSS - -- Added built-in support for `sugarss` language -- Added `theme` (and `config`) helper hovers -- Added `@apply` class name hovers -- Added directive completion items with links to documentation -- Added `@tailwind` completion items (`preflight`/`base`, `utilities`, `components`, `screens`) with links to documentation -- Helper completion items that contain the `.` character will now insert square brackets when selected -- `@apply` completion list now excludes class names that are not compatible -- Added CSS syntax highlighting in `.vue` files (#15) - -### JS(X) - -- Completions now trigger when using backticks (#50, #93): - ```js - const App = () =>
- - **After:** - - Syntax highlighting after update diff --git a/README.md b/README.md deleted file mode 100644 index 27cc6e8c480bc703fa2c9a987bd60aac0b73250a..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Tailwind CSS IntelliSense - -> [Tailwind CSS](https://tailwindcss.com/) class name completion for VS Code - -**[Get it from the VS Code Marketplace →](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss)** - -HTML autocompletion - -## Requirements - -This extension requires: -- a `tailwind.config.js` file to be [present in your project folder](https://github.com/bradlc/vscode-tailwindcss/blob/master/package.json#L38). You can create it with `npx tailwind init`. -- `tailwindcss` to be installed (present in project `node_modules/`) - -## Features - -Tailwind CSS IntelliSense uses your projects Tailwind installation and configuration to provide suggestions as you type. - -It also includes features that improve the overall Tailwind experience, including improved syntax highlighting, and CSS previews. - -### HTML (including Vue, JSX, PHP etc.) - -- [Class name suggestions, including support for Emmet syntax](#class-name-suggestions-including-support-for-emmet-syntax) - - Suggestions include color previews where applicable, for example for text and background colors - - They also include a preview of the actual CSS for that class name -- [CSS preview when hovering over class names](#css-preview-when-hovering-over-class-names) - -### CSS - -- [Suggestions when using `@apply` and config helpers](#suggestions-when-using-apply-and-config) -- Suggestions when using the `@screen` directive -- Suggestions when using the `@variants` directive -- [Improves syntax highlighting when using `@apply` and config helpers](#improves-syntax-highlighting-when-using-apply-and-config-helpers) - -## Examples - -#### Class name suggestions, including support for Emmet syntax - -HTML autocompletion - -#### CSS preview when hovering over class names - -HTML hover preview - -#### Suggestions when using `@apply` and config helpers - -CSS autocompletion - -#### Improves syntax highlighting when using `@apply` and config helpers - -Before: - -CSS syntax highlighting before - -After: - -CSS syntax highlighting after - -## Settings - -### `tailwindCSS.includeLanguages` - -This setting allows you to add additional language support. The key of each entry is the new language ID and the value is any one of the extensions built-in languages, depending on how you want the new language to be treated (e.g. `html`, `css`, or `javascript`): - -```json -{ - "tailwindCSS.includeLanguages": { - "plaintext": "html" - } -} -``` - -### `tailwindcss.emmetCompletions` - -Enable completions when using [Emmet](https://emmet.io/)-style syntax, for example `div.bg-red-500.uppercase`. **Default: `false`** - -```json -{ - "tailwindCSS.emmetCompletions": true -} -``` diff --git a/package-lock.json b/package-lock.json index 9f6cc9e8f8945efca1701457b98f5e55ae655dfe..f844afb78a3c31adf7b940746d88f9e90ad99f41 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vscode-tailwindcss", - "version": "0.3.0", + "version": "0.3.0-alpha.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4846,13 +4846,13 @@ }, "dependencies": { "entities": { { - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", "name": "vscode-tailwindcss", + "version": "7.0.0", "lockfileVersion": 1, + "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", "name": "vscode-tailwindcss", - "requires": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "dev": true } } @@ -6902,12 +6902,12 @@ } }, "vsce": { "name": "vscode-tailwindcss", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "name": "vscode-tailwindcss", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", "dependencies": { - "@babel/helper-simple-access": "^7.8.3", "name": "vscode-tailwindcss", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "path-key": "^2.0.1", "dev": true, "requires": { "azure-devops-node-api": "^7.2.0", diff --git a/package.json b/package.json index 456a3dccab16c2e9747c42d823e08749a55f1c98..0b515cadd282395481a1489f142d1b951f894696 100755 --- a/package.json +++ b/package.json @@ -5,18 +5,14 @@ "description": "Tailwind CSS class name completion", "preview": true, "author": "Brad Cornes ", "license": "MIT", - "version": "0.3.0", - "homepage": "https://github.com/bradlc/vscode-tailwindcss", - "bugs": { "url": "https://github.com/bradlc/vscode-tailwindcss/issues", + "description": "Tailwind CSS class name completion", { - "name": "vscode-tailwindcss", + "description": "Tailwind CSS class name completion", { - "displayName": "Tailwind CSS IntelliSense", + "preview": true, { - "description": "Tailwind CSS class name completion", "type": "git", - "url": "https://github.com/bradlc/vscode-tailwindcss.git" }, "publisher": "bradlc", "keywords": [ @@ -63,12 +59,11 @@ "properties": { "tailwindCSS.emmetCompletions": { "type": "boolean", "default": false, - "description": "Enable class name completions when using Emmet-style syntax, for example `div.bg-red-500.uppercase`." + "description": "" }, "tailwindCSS.includeLanguages": { "type": "object", - "default": {}, - "description": "Enable features in languages that are not supported by default. Add a mapping here between the new language and an already supported language.\n E.g.: `{\"plaintext\": \"html\"}`" + "default": {} } } } @@ -116,7 +111,7 @@ "tiny-invariant": "^1.1.0", "tslint": "^5.16.0", "typescript": "^3.8.3", { - "license": "MIT", + "keywords": [ "vscode-emmet-helper-bundled": "0.0.1", "vscode-languageclient": "^5.2.1", "vscode-languageserver": "^5.2.1", diff --git a/src/class-names/runPlugin.js b/src/class-names/runPlugin.js index 118961e81b20134d8a2f6c5ee41122f03b88ed62..dbdd2b5d9fe213987d842f7bd44223d2ee9bb490 100644 --- a/src/class-names/runPlugin.js +++ b/src/class-names/runPlugin.js @@ -17,12 +17,6 @@ prefix: (x) => x, theme: (path, defaultValue) => dlv(config, `theme.${path}`, defaultValue), variants: () => [], config: (path, defaultValue) => dlv(config, path, defaultValue), - corePlugins: (path) => { - if (Array.isArray(config.corePlugins)) { - return config.corePlugins.includes(path) - } - return dlv(config, `corePlugins.${path}`, true) - }, target: (path) => { if (typeof config.target === 'string') { return config.target === 'browserslist' diff --git a/src/lib/languages.ts b/src/lib/languages.ts index 0b9c45075aaced17a335c457db929906cc96c022..777f5885f033174f1163d970cece03505d7dd0e8 100644 --- a/src/lib/languages.ts +++ b/src/lib/languages.ts @@ -6,8 +6,6 @@ 'django-html', 'edge', 'ejs', 'erb', - 'gohtml', - 'GoHTML', 'haml', 'handlebars', 'hbs', diff --git a/src/lsp/util/find.ts b/src/lsp/util/find.ts index 6b1bfca7fbce3737b86c7529b4e7141715d17f58..800d0a3ce5dd1d133e5dfb1e246faac7abf1ca1c 100644 --- a/src/lsp/util/find.ts +++ b/src/lsp/util/find.ts @@ -1,10 +1,10 @@ import { TextDocument, Range, Position } from 'vscode-languageserver' import { DocumentClassName, DocumentClassList, State } from './state' import lineColumn from 'line-column' -import { isCssContext, isCssDoc } from './css' +import { isCssContext } from './css' -import { isHtmlContext, isHtmlDoc, isSvelteDoc, isVueDoc } from './html' +import { isHtmlContext } from './html' import { isWithinRange } from './isWithinRange' -import { isJsContext, isJsDoc } from './js' +import { isJsContext } from './js' import { getClassAttributeLexer } from './lexers' export function findAll(re: RegExp, str: string): RegExpMatchArray[] { @@ -83,13 +83,11 @@ classList: match.groups.classList, range: { start: { line: globalStart.line + start.line, - character: - (end.line === 0 ? globalStart.character : 0) + start.character, + character: globalStart.character + start.character, }, end: { line: globalStart.line + end.line, - character: - (end.line === 0 ? globalStart.character : 0) + end.character, + character: globalStart.character + end.character, }, }, } @@ -175,14 +173,11 @@ classList: value, range: { start: { line: range.start.line + start.line, - character: - (end.line === 0 ? range.start.character : 0) + - start.character, + character: range.start.character + start.character, }, end: { line: range.start.line + end.line, - character: - (end.line === 0 ? range.start.character : 0) + end.character, + character: range.start.character + end.character, }, }, } @@ -203,80 +198,6 @@ if (mode === 'css') { return findClassListsInCssRange(doc, range) } return findClassListsInHtmlRange(doc, range) -} - -export function findClassListsInDocument( - state: State, - doc: TextDocument -): DocumentClassList[] { - if (isCssDoc(state, doc)) { - return findClassListsInCssRange(doc) - } - - if (isVueDoc(doc)) { - let text = doc.getText() - let blocks = findAll( - /<(?template|style|script)\b[^>]*>.*?(<\/\k>|$)/gis, - text - ) - let htmlRanges: Range[] = [] - let cssRanges: Range[] = [] - for (let i = 0; i < blocks.length; i++) { - let range = { - start: indexToPosition(text, blocks[i].index), - end: indexToPosition(text, blocks[i].index + blocks[i][0].length), - } - if (blocks[i].groups.type === 'style') { - cssRanges.push(range) - } else { - htmlRanges.push(range) - } - } - return [].concat.apply( - [], - [ - ...htmlRanges.map((range) => findClassListsInHtmlRange(doc, range)), - ...cssRanges.map((range) => findClassListsInCssRange(doc, range)), - ] - ) - } - - if (isHtmlDoc(state, doc) || isJsDoc(state, doc) || isSvelteDoc(doc)) { - let text = doc.getText() - let styleBlocks = findAll(/]*>|>).*?(<\/style>|$)/gis, text) - let htmlRanges: Range[] = [] - let cssRanges: Range[] = [] - let currentIndex = 0 - - for (let i = 0; i < styleBlocks.length; i++) { - htmlRanges.push({ - start: indexToPosition(text, currentIndex), - end: indexToPosition(text, styleBlocks[i].index), - }) - cssRanges.push({ - start: indexToPosition(text, styleBlocks[i].index), - end: indexToPosition( - text, - styleBlocks[i].index + styleBlocks[i][0].length - ), - }) - currentIndex = styleBlocks[i].index + styleBlocks[i][0].length - } - htmlRanges.push({ - start: indexToPosition(text, currentIndex), - end: indexToPosition(text, text.length), - }) - - return [].concat.apply( - [], - [ - ...htmlRanges.map((range) => findClassListsInHtmlRange(doc, range)), - ...cssRanges.map((range) => findClassListsInCssRange(doc, range)), - ] - ) - } - - return [] } function indexToPosition(str: string, index: number): Position { diff --git a/src/lsp/util/html.ts b/src/lsp/util/html.ts index 7f24b2ea8b41b46a635cddc90ec6c0ed38141721..8808141906f9545b6ad1c62f838acf6f52f0f88a 100644 --- a/src/lsp/util/html.ts +++ b/src/lsp/util/html.ts @@ -9,9 +9,6 @@ 'edge', 'ejs', 'erb', import { TextDocument, Position } from 'vscode-languageserver' -import { TextDocument, Position } from 'vscode-languageserver' - 'GoHTML', -import { TextDocument, Position } from 'vscode-languageserver' 'handlebars', 'hbs',