Skip to content

Commit

Permalink
feat(catppuccin support): added support for catppuccin themes
Browse files Browse the repository at this point in the history
  • Loading branch information
ghaschel committed Sep 6, 2024
1 parent ed7ac6f commit 5855fe0
Show file tree
Hide file tree
Showing 10 changed files with 3,722 additions and 3,761 deletions.
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
"type": "extensionHost",
"request": "launch",
"args": ["${workspaceFolder}/out", "--extensionDevelopmentPath=${workspaceFolder}"],
"outFiles": ["${workspaceFolder}/out/**/*.js"]
// "preLaunchTask": "${defaultBuildTask}"
"outFiles": ["${workspaceFolder}/out/**/*.js"],
"preLaunchTask": "${defaultBuildTask}"
},
{
"name": "Run Extension Tests",
Expand Down
4 changes: 4 additions & 0 deletions docs/SUPPORTED-THEMES.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,9 @@
- [One Dark Pro Monokai Darker Theme](https://marketplace.visualstudio.com/items?itemName=eserozvataf.one-dark-pro-monokai-darker)
- [Visual Studio 2019 Dark plus syntax](https://marketplace.visualstudio.com/items?itemName=skyletoft.theme-custom-colour)
- [Nord](https://marketplace.visualstudio.com/items?itemName=arcticicestudio.nord-visual-studio-code)
- [Catppuccin Mocha](https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc)
- [Catppuccin Macchiato](https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc)
- [Catppuccin Frappé](https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc)
- [Catppuccin Latte](https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc)
- All the default ones
- Generic Fallback
106 changes: 7 additions & 99 deletions src/ts/interfaces/themes.ts
Original file line number Diff line number Diff line change
@@ -1,101 +1,3 @@
export type SupportedThemes = [
| 'Abyss'
| 'Angular Theme'
| 'Atom One Dark'
| 'Ayu Dark'
| 'Ayu Dark Bordered'
| 'Ayu Light'
| 'Ayu Light Bordered'
| 'Ayu Mirage'
| 'Ayu Mirage Bordered'
| 'Community Material Theme'
| 'Community Material Theme Darker'
| 'Community Material Theme Darker High Contrast'
| 'Community Material Theme High Contrast'
| 'Community Material Theme Lighter'
| 'Community Material Theme Lighter High Contrast'
| 'Community Material Theme Ocean'
| 'Community Material Theme Ocean High Contrast'
| 'Community Material Theme Palenight'
| 'Community Material Theme Palenight High Contrast'
| 'Darcula'
| 'Darcula - Black Edition'
| 'Darcula - WebStorm Edition'
| 'Dark (Visual Studio - CC++)'
| 'Dark (Visual Studio)'
| 'Dark High Contrast'
| 'Dark Modern'
| 'Dark Purple - Black Edition'
| 'Dark Purple - Webstorm'
| 'dark-plus-syntax'
| 'dark-plus-syntax (high contrast)'
| 'Default Dark+'
| 'Default Dark Modern'
| 'Default Light+'
| 'Dracula'
| 'Dracula Soft'
| 'GitHub Dark'
| 'GitHub Dark Colorblind (Beta)'
| 'GitHub Dark Default'
| 'GitHub Dark Dimmed'
| 'GitHub Dark High Contrast'
| 'GitHub Light'
| 'GitHub Light Colorblind (Beta)'
| 'GitHub Light Default'
| 'Github Light High Contrast'
| 'index.ts'
| 'Kimbie Dark'
| 'Light (Visual Studio - CC++)'
| 'Light (Visual Studio)'
| 'Light High Contrast'
| 'light-plus-syntax'
| 'light-plus-syntax (high contrast)'
| 'Material Theme'
| 'Material Theme Darker'
| 'Material Theme Darker High Contrast'
| 'Material Theme Lighter'
| 'Material Theme Lighter High Contrast'
| 'Material Theme Ocean'
| 'Material Theme Ocean High Contrast'
| 'Material Theme Palenight'
| 'Material Theme Palenight High Contrast'
| 'Monokai'
| 'Monokai Classic'
| 'Monokai Dimmed'
| 'Monokai Pro'
| 'Monokai Pro (Filter Machine)'
| 'Monokai Pro (Filter Octagon)'
| 'Monokai Pro (Filter Ristretto)'
| 'Monokai Pro (Filter Spectrum)'
| 'Monokai++'
| 'Monokai++Dark'
| 'Monokai++Unified'
| 'Night Owl'
| 'Night Owl (No Italics)'
| 'Night Owl Light'
| 'Night Owl Light (No Italics)'
| 'Nord'
| 'One Dark Pro'
| 'One Dark Pro Darker'
| 'One Dark Pro Flat'
| 'One Dark Pro Mix'
| 'One Monokai'
| 'Quiet Light'
| 'Red'
| 'Solarized Dark'
| 'Solarized Light'
// eslint-disable-next-line @typescript-eslint/quotes
| "SynthWave '84"
| 'Tomorrow Night Blue'
| 'Visual Studio 2019 Dark plus syntax'
| 'Winter is Coming (Dark Black - No Italics)'
| 'Winter is Coming (Dark Black)'
| 'Winter is Coming (Dark Blue - No Italics)'
| 'Winter is Coming (Dark Blue)'
| 'Winter is Coming (Light)'
| 'Winter is Coming (Lights - No Italics)',
];

export const supportedThemes = [
'Abyss',
'Atom One Dark',
Expand All @@ -105,6 +7,10 @@ export const supportedThemes = [
'Ayu Light Bordered',
'Ayu Mirage',
'Ayu Mirage Bordered',
'Catppuccin Frappé',
'Catppuccin Latte',
'Catppuccin Macchiato',
'Catppuccin Mocha',
'Community Material Theme',
'Community Material Theme Darker',
'Community Material Theme Darker High Contrast',
Expand Down Expand Up @@ -191,4 +97,6 @@ export const supportedThemes = [
'Winter is Coming (Dark Blue)',
'Winter is Coming (Light)',
'Winter is Coming (Lights - No Italics)',
] as unknown as SupportedThemes[];
] as const;

export type SupportedThemes = (typeof supportedThemes)[number];
12 changes: 12 additions & 0 deletions src/ts/themes/Catppuccin Frappé/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { Scopes } from '../../interfaces/custom-scopes-per-rule';

export = {
'constant.character.entity.html': '#CA9EE6',
'constant.numeric.angular-directive': '#E5C890',
'entity.name.tag.other.html': '#8CAAEE',
'keyword.operator.entity.html': '#81C8BE',
'keyword.operator.expression.let.js': '#CA9EE6',
'keyword.operator.punctuation': '#CA9EE6',
'string.regexp': '#F4B8E4',
'support.type.object.html-attribute': '#E5C890',
} as Scopes;
12 changes: 12 additions & 0 deletions src/ts/themes/Catppuccin Latte/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { Scopes } from '../../interfaces/custom-scopes-per-rule';

export = {
'constant.character.entity.html': '#8839EF',
'constant.numeric.angular-directive': '#EA76CB',
'entity.name.tag.other.html': '#1E66F5',
'keyword.operator.entity.html': '#8839EF',
'keyword.operator.expression.let.js': '#8839EF',
'keyword.operator.punctuation': '#8839EF',
'string.regexp': '#EA76CB',
'support.type.object.html-attribute': '#DF8E1D',
} as Scopes;
12 changes: 12 additions & 0 deletions src/ts/themes/Catppuccin Macchiato/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { Scopes } from '../../interfaces/custom-scopes-per-rule';

export = {
'constant.character.entity.html': '#C6A0F6',
'constant.numeric.angular-directive': '#EED49F',
'entity.name.tag.other.html': '#8AADF4',
'keyword.operator.entity.html': '#8BD5CA',
'keyword.operator.expression.let.js': '#C6A0F6',
'keyword.operator.punctuation': '#8BD5CA',
'string.regexp': '#C6A0F6',
'support.type.object.html-attribute': '#EED49F',
} as Scopes;
12 changes: 12 additions & 0 deletions src/ts/themes/Catppuccin Mocha/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { Scopes } from '../../interfaces/custom-scopes-per-rule';

export = {
'constant.character.entity.html': '#F38BA8',
'constant.numeric.angular-directive': '#94E2D5',
'entity.name.tag.other.html': '#89B4FA',
'keyword.operator.entity.html': '#FAB387',
'keyword.operator.expression.let.js': '#CBA6F7',
'keyword.operator.punctuation': '#94E2D5',
'string.regexp': '#CBA6F7',
'support.type.object.html-attribute': '#F9E2AF',
} as Scopes;
4 changes: 2 additions & 2 deletions src/ts/themes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { LegacyScopes } from '../interfaces/custom-scopes-per-rule';
import { supportedThemes } from '../interfaces/themes';
import { getSettingsJSON, setSettingsJSON } from '../settings';

import * as JSONC from 'jsonc-parser';
import * as jsonC from 'jsonc-parser';
import * as vscode from 'vscode';

import type { GeneratedTheme, Scopes } from '../interfaces/custom-scopes-per-rule';
Expand All @@ -11,7 +11,7 @@ import type { Debug } from '../tools';

const fetchThemeColors = async (): Promise<GeneratedTheme[]> => {
await vscode.commands.executeCommand('workbench.action.generateColorTheme');
const content = JSONC.parse(vscode.window.activeTextEditor?.document.getText() as string);
const content = jsonC.parse(vscode.window.activeTextEditor?.document.getText() as string);
await vscode.commands.executeCommand('editor.action.selectAll');
await vscode.commands.executeCommand('editor.action.clipboardCutAction');
await vscode.commands.executeCommand('workbench.action.closeActiveEditor');
Expand Down
Loading

0 comments on commit 5855fe0

Please sign in to comment.