sublimehq / sublime_text

Issue tracker for Sublime Text
https://www.sublimetext.com
814 stars 40 forks source link

Merge user-sublime-color-scheme into tmTheme #2352

Open deathaxe opened 6 years ago

deathaxe commented 6 years ago

Summary

If a Package provides a .sublime-color-scheme file and one with the same name name exists in the Packages/User/ path, the content of the later one overwrites the package settings seamlessly if the user selects it via UI: Select Color Scheme command.

But most packages still provide color schemes as tmTheme format and will so for a while.

The goal is to enable users to manipulate old color schemes the same way as they can do with the new sublime-color-scheme format, by just creating a file with missing or modified rules in the User folder.

Expected behavior

If a user changes the color scheme via UI: Select Color Scheme to one of the old tmTheme format, Sublime Text should merge in the content from a Packages/User/<same name>.sublime-color-scheme if exists or at least automatically select the later one via UI: Select Color Scheme command.

Actual behavior

If the Package provides an old tmTheme color scheme and the user creates a .sublime-color-scheme of the same name within Packages/User/ he needs to select the later one to see the modifications.

This is unfortunately not supported by UI: Select Color Scheme as it always selects the tmTheme from the original package.

see: https://github.com/jisaacks/GitGutter/issues/502#issuecomment-395792187

FichteFoll commented 6 years ago

So I presume meging the user overrides works correctly when you specify Filename.sublime-color-scheme in the preferences, but selecting the color scheme with UI: Select Color Scheme causes ST to put in the full relative path to the tmTheme file where overrides are not considered?

deathaxe commented 6 years ago

Completely correct.

A little tweak in SelectColorSchemeCommand to load an sublime-color-scheme file if exists rather than the tmTheme would solve the problem.

Maybe need some constraints to load the sublime-color-scheme from within the User folder only to prevent possible conflicts - not sure.