-
Notifications
You must be signed in to change notification settings - Fork 29.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[icon-themes] Support glob keys in file icon associations #174286
base: main
Are you sure you want to change the base?
Conversation
@microsoft-github-policy-service agree |
Can you explain what css classes you generate? |
Done in PR description |
While we are here:
|
Sorry, can you give examples how this works (maybe a table covering the various cases, prefix, suffix,
Give some example of resources in the explorer and how the class names match. The tricky part is that file name matches are always stronger than file extension matches and stronger than fold name matches. |
This comment was marked as outdated.
This comment was marked as outdated.
Now ready for review |
Made some small tweaks in my work lunch, but please feel free to review now @aeschli |
ok, now I understand. So The problem is to make sure the matching order holds: 'full file match' beats 'file match with pattern' beats 'file extension match' beats 'file extension with pattern' beats language beats folder name beats folder name with How this is implemented is the number of classes matching IMO we're at a dead end with CSS class name matching. I'm reluctant in adding even more class names. |
NB: I wanted to add an extra level of depth in generating |
Refs: [#issuecomment-1429874059](github.com/microsoft/pull/174286#issuecomment-1429874059)
That's done. BTW:
The "underscore or minus separated segments" feature, that is matching targets filenames in this format:
This is for a specific use case with A11Y benefit as explained here - vscode-icons/vscode-icons#2754 Took 18 lines of code to implement, but I hope this feature is worth it. |
@zm-cttae Sorry I didn't get back earlier, it was quite a busy week. I like your last change. Thanks a lot! I wanted to bring up an idea. Could we use the CSS Substring matching selectors) to further reduce the number of classes needed and allow some more ways on how theme authors can use the See #177650 to see a sketch of this. What do you think? |
…3879783 Apply feedback from PR microsoft#174286
I'll review by COB tomorrow (Tuesday 21/03). Merged in my reduced spec and will update PR description today |
Hi @zm-cttae, is this something you're still working on? |
This is ready to go but we have a better impl that @aeschli demoed - not clear whether that's been packaged up. We're also both busy, it seems. (Currently there's endgame for VS Code & I'm wrangling with Textmate library migration). |
Whats the status on this? |
Hoping this gets off the backburner soon. A lack of glob patterns has been the most obvious weakpoint of the icon API for nearly a decade, and it feels like we're so close to finally fixing that. |
Hope to see this merged soon! |
344562d
to
6cf396e
Compare
Closes #12493.
Background
The feature request is for glob support in the key of icon mappings for file icon themes
This PR allows multiple use cases - see table:
*
Makefile
,Dockerfile
Jenkinsfile.*
Jenkinsfile.prod
test_*.py
test_component.py
*_test.go
component_test.go
*Test.cs
CalculatorTest.cs
.env.*
.env.development
web.*.config
web.prod.config
webpack.*.config.js
webpack.dev.config.js
*.webpack.config.js
shared.dev.webpack.config.js
.env.*.*
.env.development.docker.example.env
*.md
pop goes ...................................... the weasel.md
Specification
File icon theme keys are separated by the last dot into
basename
andext
.The
basename
segment allows any number of.
characters.Both segments can be globbed like so:
*
accepts any value.prefix*
.*suffix
.*middle*
.prefix*suffix
Implementation
File/folder icon association keys that can be augmented by globs:
folderNames
,folderNamesExpanded
,fileNames
Any
*
in the key of the file/folder icon mapping:basename
and/orextname
attr values in the file icon themeThis PR introduces extraAttributes option to icon label APIs. These attributes are anchors that the CSS from the file icon theme side can target. This is necessary to prevent a FOUC after opening any collapsed folder or any text document, caused by file icon themes running 100s of globs per each file label.
EDIT:
EDIT 2:
EDIT 3: