Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to refresh Sublime Text 3 workspace color schemes?

When you save a project, Sublime Text will create a .sublime-workspace file. In this file, there is an array of buffers, and for each buffer there is a color_scheme property. This is set to whatever color scheme was chosen when the buffers and workspace were created.

I recently changed my theme and color scheme in my user settings file. How can I refresh all of my project's workspaces so that way it uses my new color_scheme provided in my user preference file without needed to edit each project's workspace file one-by-one?

like image 593
Sam Avatar asked Apr 08 '15 01:04

Sam


2 Answers

Windows 10 AppData-related Solution

Please make sure that you are in a similar situation as me before trying this solution (see below). Steps:

  1. Note the language and package that the Error loading colour scheme reports (my case was: markdown and MarkdownEditing).
  2. Go to your AppData directory (type %AppData% in file explorer address bar).
  3. Open directory Sublime Text 3, or whatever your version is.
  4. Open the .sublime-settings file that matches the language from step 1.
  5. Remove any lines that refer to the package you noted from step 1.
  6. Remember that this file should be a properly formatted JSON file when you remove lines manually. Save this file and restart Sublime Text.

Background

I've decided to post here in case some of the python script solutions didn't work for you and your situation is similar to mine. I'm using GitHub to sync my Sublime Text AppData (Windows 10), in order to keep my workflow settings the same on multiple machines. Recently, I noticed that when I uninstalled a certain package on one of my machines, I accidentally merged some configuration files for that non-existent package on my other machine. This resulted in a persistent Error loading colour scheme, in particular for me when changing syntax to markdown (the package was MarkdownEditing for reference).

like image 158
Marian Minar Avatar answered Oct 20 '22 12:10

Marian Minar


Expanding on the answer given by Tot you can do this for all views in all windows that are open by using a nested list comprehension (remember this is Python so we can be pretty flexible):

[ v.settings().erase("color_scheme") for views in [ w.views() for w in sublime.windows() ] for v in views ]

This way you don't have to run the command in each tab individually.

like image 36
v0rtex Avatar answered Oct 20 '22 12:10

v0rtex