Skip to content

Commit

Permalink
perf(plugin-md-power): support more file-tree icons (#197)
Browse files Browse the repository at this point in the history
  • Loading branch information
pengzhanbo authored Sep 20, 2024
1 parent 39ad1c5 commit defa4d2
Show file tree
Hide file tree
Showing 2 changed files with 225 additions and 4 deletions.
222 changes: 219 additions & 3 deletions plugins/plugin-md-power/src/node/features/fileTree/definitions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,48 @@ export const definitions: Definitions = {
astro: 'vscode-icons:file-type-light-astro',
Astro: 'vscode-icons:file-type-light-astro',

vitest: 'vscode-icons:file-type-vitest',
Vitest: 'vscode-icons:file-type-vitest',
playwright: 'vscode-icons:file-type-playwright',
Playwright: 'vscode-icons:file-type-playwright',
jest: 'vscode-icons:file-type-jest',
Jest: 'vscode-icons:file-type-jest',
cypress: 'vscode-icons:file-type-cypress',
Cypress: 'vscode-icons:file-type-cypress',

docker: 'vscode-icons:file-type-docker',
Docker: 'vscode-icons:file-type-docker',

// TODO: code group title icons
// programming languages
html: 'vscode-icons:file-type-html',
Html: 'vscode-icons:file-type-html',
HTML: 'vscode-icons:file-type-html',
javascript: 'vscode-icons:file-type-js-official',
Javascript: 'vscode-icons:file-type-js-official',
JavaScript: 'vscode-icons:file-type-js-official',
js: 'vscode-icons:file-type-js-official',
JS: 'vscode-icons:file-type-js-official',
typescript: 'vscode-icons:file-type-typescript-official',
Typescript: 'vscode-icons:file-type-typescript-official',
TypeScript: 'vscode-icons:file-type-typescript-official',
ts: 'vscode-icons:file-type-typescript-official',
TS: 'vscode-icons:file-type-typescript-official',
css: 'vscode-icons:file-type-css',
CSS: 'vscode-icons:file-type-css',
less: 'vscode-icons:file-type-less',
Less: 'vscode-icons:file-type-less',
scss: 'vscode-icons:file-type-scss',
Scss: 'vscode-icons:file-type-scss',
SCSS: 'vscode-icons:file-type-scss',
sass: 'vscode-icons:file-type-sass',
Sass: 'vscode-icons:file-type-sass',
SASS: 'vscode-icons:file-type-sass',
stylus: 'vscode-icons:file-type-light-stylus',
Stylus: 'vscode-icons:file-type-light-stylus',
postcss: 'vscode-icons:file-type-postcss',
Postcss: 'vscode-icons:file-type-postcss',
PostCSS: 'vscode-icons:file-type-postcss',
java: 'vscode-icons:file-type-java',
Java: 'vscode-icons:file-type-java',
JAVA: 'vscode-icons:file-type-java',
Expand All @@ -67,40 +105,147 @@ export const definitions: Definitions = {
C: 'vscode-icons:file-type-c',
python: 'vscode-icons:file-type-python',
Python: 'vscode-icons:file-type-python',
kotlin: 'vscode-icons:file-type-kotlin',
Kotlin: 'vscode-icons:file-type-kotlin',
go: 'vscode-icons:file-type-go-gopher',
golang: 'vscode-icons:file-type-go-gopher',
Go: 'vscode-icons:file-type-go-gopher',
GoLang: 'vscode-icons:file-type-go-gopher',
rust: 'vscode-icons:file-type-rust',
Rust: 'vscode-icons:file-type-rust',
zig: 'vscode-icons:file-type-zig',
Zig: 'vscode-icons:file-type-zig',
swift: 'vscode-icons:file-type-swift',
Swift: 'vscode-icons:file-type-swift',
},
folders: {
'default': 'vscode-icons:default-folder',

'src': 'vscode-icons:folder-type-src',
'srcs': 'vscode-icons:folder-type-src',
'source': 'vscode-icons:folder-type-src',
'sources': 'vscode-icons:folder-type-src',
'code': 'vscode-icons:folder-type-src',
'tauri-src': 'vscode-icons:folder-type-tauri',

'dist': 'vscode-icons:folder-type-dist',
'out': 'vscode-icons:folder-type-dist',
'output': 'vscode-icons:folder-type-dist',
'release': 'vscode-icons:folder-type-dist',
'bin': 'vscode-icons:folder-type-dist',
'distribution': 'vscode-icons:folder-type-dist',

'docs': 'vscode-icons:folder-type-docs',
'doc': 'vscode-icons:folder-type-docs',
'document': 'vscode-icons:folder-type-docs',
'documents': 'vscode-icons:folder-type-docs',
'documentation': 'vscode-icons:folder-type-docs',
'post': 'vscode-icons:folder-type-docs',
'posts': 'vscode-icons:folder-type-docs',
'article': 'vscode-icons:folder-type-docs',
'articles': 'vscode-icons:folder-type-docs',

'scripts': 'vscode-icons:folder-type-script',
'shared': 'vscode-icons:folder-type-shared',
'script': 'vscode-icons:folder-type-script',

'node_modules': 'vscode-icons:folder-type-light-node',

'cli': 'vscode-icons:folder-type-cli',
'tauri-src': 'vscode-icons:folder-type-tauri',

'template': 'vscode-icons:folder-type-template',
'templates': 'vscode-icons:folder-type-template',

'theme': 'vscode-icons:folder-type-theme',
'themes': 'vscode-icons:folder-type-theme',
'color': 'vscode-icons:folder-type-theme',
'colors': 'vscode-icons:folder-type-theme',
'design': 'vscode-icons:folder-type-theme',
'designs': 'vscode-icons:folder-type-theme',

'packages': 'vscode-icons:folder-type-package',
'tools': 'vscode-icons:folder-type-tools',
'package': 'vscode-icons:folder-type-package',
'pkg': 'vscode-icons:folder-type-package',
'pkgs': 'vscode-icons:folder-type-package',

'shared': 'vscode-icons:folder-type-shared',
'utils': 'vscode-icons:folder-type-tools',
'util': 'vscode-icons:folder-type-tools',
'utility': 'vscode-icons:folder-type-tools',
'utilities': 'vscode-icons:folder-type-tools',
'helper': 'vscode-icons:folder-type-helper',
'helpers': 'vscode-icons:folder-type-helper',
'tools': 'vscode-icons:folder-type-tools',
'toolkit': 'vscode-icons:folder-type-tools',
'toolkits': 'vscode-icons:folder-type-tools',
'tooling': 'vscode-icons:folder-type-tools',
'devtools': 'vscode-icons:folder-type-tools',

'component': 'vscode-icons:folder-type-component',
'components': 'vscode-icons:folder-type-component',
'Component': 'vscode-icons:folder-type-component',
'Components': 'vscode-icons:folder-type-component',
'widget': 'vscode-icons:folder-type-component',
'widgets': 'vscode-icons:folder-type-component',
'fragments': 'vscode-icons:folder-type-component',

'hooks': 'vscode-icons:folder-type-hook',
'composables': 'vscode-icons:folder-type-hook',

'public': 'vscode-icons:folder-type-public',
'www': 'vscode-icons:folder-type-public',
'web': 'vscode-icons:folder-type-public',
'wwwroot': 'vscode-icons:folder-type-public',
'website': 'vscode-icons:folder-type-public',
'site': 'vscode-icons:folder-type-public',
'browser': 'vscode-icons:folder-type-public',
'browsers': 'vscode-icons:folder-type-public',

'fonts': 'vscode-icons:folder-type-fonts',
'font': 'vscode-icons:folder-type-fonts',

'images': 'vscode-icons:folder-type-images',
'image': 'vscode-icons:folder-type-images',
'imgs': 'vscode-icons:folder-type-images',
'img': 'vscode-icons:folder-type-images',
'icon': 'vscode-icons:folder-type-images',
'icons': 'vscode-icons:folder-type-images',
'ico': 'vscode-icons:folder-type-images',
'icos': 'vscode-icons:folder-type-images',
'figure': 'vscode-icons:folder-type-images',
'figures': 'vscode-icons:folder-type-images',
'fig': 'vscode-icons:folder-type-images',
'figs': 'vscode-icons:folder-type-images',
'screenshot': 'vscode-icons:folder-type-images',
'screenshots': 'vscode-icons:folder-type-images',
'screengrab': 'vscode-icons:folder-type-images',
'screengrabs': 'vscode-icons:folder-type-images',
'pic': 'vscode-icons:folder-type-images',
'pics': 'vscode-icons:folder-type-images',
'picture': 'vscode-icons:folder-type-images',
'pictures': 'vscode-icons:folder-type-images',
'photo': 'vscode-icons:folder-type-images',
'photos': 'vscode-icons:folder-type-images',
'photograph': 'vscode-icons:folder-type-images',
'photographs': 'vscode-icons:folder-type-images',

'asset': 'vscode-icons:folder-type-asset',
'assets': 'vscode-icons:folder-type-asset',
'resource': 'vscode-icons:folder-type-asset',
'resources': 'vscode-icons:folder-type-asset',
'res': 'vscode-icons:folder-type-asset',
'static': 'vscode-icons:folder-type-asset',
'report': 'vscode-icons:folder-type-asset',
'reports': 'vscode-icons:folder-type-asset',

'apis': 'vscode-icons:folder-type-api',
'api': 'vscode-icons:folder-type-api',
'restapi': 'vscode-icons:folder-type-api',

'style': 'vscode-icons:folder-type-style',
'styles': 'vscode-icons:folder-type-style',
'stylesheet': 'vscode-icons:folder-type-style',
'stylesheets': 'vscode-icons:folder-type-style',

'css': 'vscode-icons:folder-type-css',
'scss': 'vscode-icons:folder-type-light-sass',
'sass': 'vscode-icons:folder-type-light-sass',
Expand All @@ -112,15 +257,34 @@ export const definitions: Definitions = {
'types': 'vscode-icons:folder-type-typings',
'mock': 'vscode-icons:folder-type-mock',

'i18n': 'vscode-icons:folder-type-locale',
'locales': 'vscode-icons:folder-type-locale',
'locale': 'vscode-icons:folder-type-locale',
'lang': 'vscode-icons:folder-type-locale',
'langs': 'vscode-icons:folder-type-locale',
'language': 'vscode-icons:folder-type-locale',
'languages': 'vscode-icons:folder-type-locale',
'l10n': 'vscode-icons:folder-type-locale',
'localization': 'vscode-icons:folder-type-locale',
'translation': 'vscode-icons:folder-type-locale',
'translate': 'vscode-icons:folder-type-locale',
'translations': 'vscode-icons:folder-type-locale',
'tx': 'vscode-icons:folder-type-locale',

'config': 'vscode-icons:folder-type-config',
'configs': 'vscode-icons:folder-type-config',
'.config': 'vscode-icons:folder-type-config',
'.configs': 'vscode-icons:folder-type-config',
'cfg': 'vscode-icons:folder-type-config',
'cfgs': 'vscode-icons:folder-type-config',
'conf': 'vscode-icons:folder-type-config',
'confs': 'vscode-icons:folder-type-config',
'configuration': 'vscode-icons:folder-type-config',
'configurations': 'vscode-icons:folder-type-config',
'setting': 'vscode-icons:folder-type-config',
'settings': 'vscode-icons:folder-type-config',
'option': 'vscode-icons:folder-type-config',
'options': 'vscode-icons:folder-type-config',

'controller': 'vscode-icons:folder-type-controller',
'controllers': 'vscode-icons:folder-type-controller',
Expand All @@ -134,17 +298,69 @@ export const definitions: Definitions = {
'services': 'vscode-icons:folder-type-services',
'Service': 'vscode-icons:folder-type-services',
'Services': 'vscode-icons:folder-type-services',

'view': 'vscode-icons:folder-type-view',
'views': 'vscode-icons:folder-type-view',
'View': 'vscode-icons:folder-type-view',
'Views': 'vscode-icons:folder-type-view',
'page': 'vscode-icons:folder-type-view',
'pages': 'vscode-icons:folder-type-view',
'html': 'vscode-icons:folder-type-html',

'app': 'vscode-icons:folder-type-app',
'apps': 'vscode-icons:folder-type-app',

'client': 'vscode-icons:folder-type-client',
'clients': 'vscode-icons:folder-type-client',
'frontend': 'vscode-icons:folder-type-client',
'frontends': 'vscode-icons:folder-type-client',

'server': 'vscode-icons:folder-type-server',
'servers': 'vscode-icons:folder-type-server',
'backend': 'vscode-icons:folder-type-server',
'backends': 'vscode-icons:folder-type-server',

'db': 'vscode-icons:folder-type-db',
'database': 'vscode-icons:folder-type-db',
'databases': 'vscode-icons:folder-type-db',
'data': 'vscode-icons:folder-type-db',
'sql': 'vscode-icons:folder-type-db',

'e2e': 'vscode-icons:folder-type-e2e',
'cypress': 'vscode-icons:folder-type-light-cypress',
'test': 'vscode-icons:folder-type-test',
'tests': 'vscode-icons:folder-type-test',
'testing': 'vscode-icons:folder-type-test',
'snapshots': 'vscode-icons:folder-type-test',
'spec': 'vscode-icons:folder-type-test',
'specs': 'vscode-icons:folder-type-test',

'lib': 'vscode-icons:folder-type-library',
'libs': 'vscode-icons:folder-type-library',
'library': 'vscode-icons:folder-type-library',
'libraries': 'vscode-icons:folder-type-library',
'vendor': 'vscode-icons:folder-type-library',
'vendors': 'vscode-icons:folder-type-library',
'third-party': 'vscode-icons:folder-type-library',
'lib64': 'vscode-icons:folder-type-library',

'include': 'vscode-icons:folder-type-include',
'inc': 'vscode-icons:folder-type-include',
'includes': 'vscode-icons:folder-type-include',
'partial': 'vscode-icons:folder-type-include',
'partials': 'vscode-icons:folder-type-include',
'inc64': 'vscode-icons:folder-type-include',

'temp': 'vscode-icons:folder-type-temp',
'tmp': 'vscode-icons:folder-type-temp',
'cache': 'vscode-icons:folder-type-temp',
'cached': 'vscode-icons:folder-type-temp',
'.temp': 'vscode-icons:folder-type-temp',
'.cache': 'vscode-icons:folder-type-temp',

'log': 'vscode-icons:folder-type-log',
'logs': 'vscode-icons:folder-type-log',
'logging': 'vscode-icons:folder-type-log',

'.git': 'vscode-icons:folder-type-git',
'.github': 'vscode-icons:folder-type-github',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ export function getFileIcon(fileName: string, type: 'file' | 'folder' = 'file'):

function getFileIconName(fileName: string, type: 'file' | 'folder' = 'file'): string | undefined {
if (type === 'folder') {
return definitions.folders[fileName]
const icon = definitions.folders[fileName]
if (icon)
return icon
if (fileName.includes('/'))
return definitions.folders[fileName.slice(fileName.lastIndexOf('/') + 1)]
return
}
let icon: string | undefined = definitions.named[fileName] || definitions.files[fileName]
if (icon)
Expand Down

0 comments on commit defa4d2

Please sign in to comment.