Monnoroch / ColorHighlighter

ColorHighlighter - is a plugin for the Sublime text 2 and 3, which underlays selected hexadecimal colorcodes (like "#FFFFFF", "rgb(255,255,255)", "white", etc.) with their real color. Also, plugin adds color picker to easily modify colors. Documentation: https://monnoroch.github.io/ColorHighlighter.
https://sublime.wbond.net/packages/Color%20Highlighter
1.31k stars 130 forks source link

Full of Bugs on ST 3.2.2 #476

Open JoshMayberry opened 4 years ago

JoshMayberry commented 4 years ago

tl;dr

Due to bugs, this package does not work as intended with Sublime Text 3.2.2.

System

I am using the latest release of "Color Highlighter", using Sublime Text version 3.2.2, Build 3211.

The Issue

The color picker is working, but text highlighting is not: image

Investigation

The console window gives the following output when sublime text opens:

raise IOError("resource not found")

``` Traceback (most recent call last): File "C:\Program Files\Sublime Text 3\sublime_plugin.py", line 298, in on_api_ready plc() File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\main.py", line 606, in plugin_loaded ColorHighlighterPlugin.init() File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\main.py", line 319, in init ColorHighlighterPlugin._fake_color_scheme = ColorHighlighterPlugin.components.provide_fake_color_scheme() File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\main.py", line 197, in provide_fake_color_scheme return self.provide_fake_color_scheme_data()[0] File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\main.py", line 188, in provide_fake_color_scheme_data self._fake_color_scheme_data = parse_color_scheme(self.provide_color_scheme(), self._settings.debug) File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\color_scheme.py", line 40, in parse_color_scheme color_scheme_content = load_resource.load_resource(color_scheme) File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\load_resource.py", line 34, in load_resource return sublime.load_resource(file_path) File "C:\Program Files\Sublime Text 3\sublime.py", line 192, in load_resource raise IOError("resource not found") OSError: resource not found ```

So, I added the following code to the start of the function load_resource.py.load_resource: file_path = "Packages/Color Scheme - Default/" + file_path image

This allowed more of the porogram to load, until it reached this error:

xml.etree.ElementTree.ParseError: not well-formed (invalid token)

``` Traceback (most recent call last): File "C:\Program Files\Sublime Text 3\sublime_plugin.py", line 298, in on_api_ready plc() File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\main.py", line 606, in plugin_loaded ColorHighlighterPlugin.init() File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\main.py", line 319, in init ColorHighlighterPlugin._fake_color_scheme = ColorHighlighterPlugin.components.provide_fake_color_scheme() File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\main.py", line 197, in provide_fake_color_scheme return self.provide_fake_color_scheme_data()[0] File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\main.py", line 188, in provide_fake_color_scheme_data self._fake_color_scheme_data = parse_color_scheme(self.provide_color_scheme(), self._settings.debug) File "C:\Users\jmayberry\AppData\Roaming\Sublime Text 3\Packages\Color Highlighter\color_scheme.py", line 43, in parse_color_scheme color_scheme_xml = ElementTree.fromstring(color_scheme_content) File "./python3.3/xml/etree/ElementTree.py", line 1356, in XML File "", line None xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 0 ```

In my case, the variable being passed to ElementTree.fromstring was not a string of XML- but a python dictionary as a string:

print(color_scheme_content)

``` { "name": "Monokai", "author": "Sublime HQ Pty Ltd, Wimer Hazenberg", "variables": { "black": "hsl(0, 0%, 0%)", "black2": "hsl(60, 17%, 11%)", "black3": "hsl(70, 8%, 15%)", "blue": "hsl(190, 81%, 67%)", "grey": "hsl(55, 8%, 26%)", "orange": "hsl(32, 98%, 56%)", "orange2": "hsl(30, 83%, 34%)", "orange3": "hsl(47, 100%, 79%)", "purple": "hsl(261, 100%, 75%)", "red": "hsl(0, 93%, 59%)", "red2": "hsl(338, 95%, 56%)", "white": "hsl(0, 0%, 97%)", "white2": "hsl(60, 36%, 96%)", "white3": "hsl(60, 30%, 96%)", "yellow": "hsl(54, 70%, 68%)", "yellow2": "hsl(80, 76%, 53%)", "yellow3": "hsl(60, 12%, 79%)", "yellow4": "hsl(55, 11%, 22%)", "yellow5": "hsl(50, 11%, 41%)" }, "globals": { "foreground": "var(white3)", "background": "var(black3)", "caret": "color(var(white2) alpha(0.9))", "block_caret": "color(var(white2) alpha(0.4))", "invisibles": "color(var(white3) alpha(0.35))", "line_highlight": "var(yellow4)", "selection": "var(grey)", "selection_border": "var(black2)", "misspelling": "var(red2)", "active_guide": "color(var(orange2) alpha(0.69))", "find_highlight_foreground": "var(black)", "find_highlight": "var(orange3)", "brackets_options": "underline", "brackets_foreground": "color(var(white3) alpha(0.65))", "bracket_contents_options": "underline", "bracket_contents_foreground": "color(var(white3) alpha(0.65))", "tags_options": "stippled_underline" }, "rules": [ { "name": "Comment", "scope": "comment", "foreground": "var(yellow5)" }, { "name": "String", "scope": "string", "foreground": "var(yellow)" }, { "name": "Number", "scope": "constant.numeric", "foreground": "var(purple)" }, { "name": "Built-in constant", "scope": "constant.language", "foreground": "var(purple)" }, { "name": "User-defined constant", "scope": "constant.character, constant.other", "foreground": "var(purple)" }, { "name": "Variable", "scope": "variable" }, { "name": "Keyword", "scope": "keyword - (source.c keyword.operator | source.c++ keyword.operator | source.objc keyword.operator | source.objc++ keyword.operator), keyword.operator.word", "foreground": "var(red2)" }, { "name": "Annotation Punctuation", "scope": "punctuation.definition.annotation", "foreground": "var(red2)" }, { "name": "JavaScript Dollar", "scope": "variable.other.dollar.only.js", "foreground": "var(red2)" }, { "name": "Storage", "scope": "storage", "foreground": "var(red2)" }, { "name": "Storage type", "scope": "storage.type", "foreground": "var(blue)", "font_style": "italic" }, { "name": "Entity name", "scope": "entity.name - (entity.name.filename | entity.name.section | entity.name.tag | entity.name.label)", "foreground": "var(yellow2)" }, { "name": "Inherited class", "scope": "entity.other.inherited-class", "foreground": "var(yellow2)", "font_style": "italic underline" }, { "name": "Function argument", "scope": "variable.parameter - (source.c | source.c++ | source.objc | source.objc++)", "foreground": "var(orange)", "font_style": "italic" }, { "name": "Language variable", "scope": "variable.language", "foreground": "var(orange)", "font_style": "italic" }, { "name": "Tag name", "scope": "entity.name.tag", "foreground": "var(red2)" }, { "name": "Tag attribute", "scope": "entity.other.attribute-name", "foreground": "var(yellow2)" }, { "name": "Function call", "scope": "variable.function, variable.annotation", "foreground": "var(blue)" }, { "name": "Library function", "scope": "support.function, support.macro", "foreground": "var(blue)" }, { "name": "Library constant", "scope": "support.constant", "foreground": "var(blue)" }, { "name": "Library class/type", "scope": "support.type, support.class", "foreground": "var(blue)", "font_style": "italic" }, { "name": "Library variable", "scope": "support.other.variable" }, { "name": "Invalid", "scope": "invalid", "foreground": "var(white2)", "background": "var(red2)" }, { "name": "Invalid deprecated", "scope": "invalid.deprecated", "foreground": "var(white2)", "background": "var(purple)" }, { "name": "JSON String", "scope": "meta.structure.dictionary.json string.quoted.double.json", "foreground": "var(yellow3)" }, { "name": "YAML String", "scope": "string.unquoted.yaml", "foreground": "var(white3)" }, { "name": "diff.header", "scope": "meta.diff, meta.diff.header", "foreground": "var(yellow5)" }, { "name": "markup headings", "scope": "markup.heading", "font_style": "bold" }, { "name": "markup headings", "scope": "markup.heading punctuation.definition.heading", "foreground": "var(orange)" }, { "name": "markup h1", "scope": "markup.heading.1 punctuation.definition.heading", "foreground": "var(red2)" }, { "name": "markup links", "scope": "markup.underline.link", "foreground": "var(blue)" }, { "name": "markup bold", "scope": "markup.bold", "font_style": "bold" }, { "name": "markup italic", "scope": "markup.italic", "font_style": "italic" }, { "name": "markup bold/italic", "scope": "markup.italic markup.bold | markup.bold markup.italic", "font_style": "bold italic" }, { "name": "markup hr", "scope": "punctuation.definition.thematic-break", "foreground": "var(yellow5)" }, { "name": "markup blockquote", "scope": "markup.quote punctuation.definition.blockquote", "foreground": "var(yellow5)" }, { "name": "markup bullets", "scope": "markup.list.numbered.bullet", "foreground": "var(purple)" }, { "name": "markup bullets", "scope": "markup.list.unnumbered.bullet | (markup.list.numbered punctuation.definition)", "foreground": "color(var(white) alpha(0.67))" }, { "name": "markup code", "scope": "markup.raw", "background": "color(var(white) alpha(0.094))" }, { "name": "markup punctuation", "scope": "markup.raw punctuation.definition.raw", "foreground": "color(var(white) alpha(0.67))" }, { "name": "markup punctuation", "scope": "text & (punctuation.definition.italic | punctuation.definition.bold | punctuation.definition.raw | punctuation.definition.link | punctuation.definition.metadata | punctuation.definition.image | punctuation.separator.table-cell | punctuation.section.table-header | punctuation.definition.constant)", "foreground": "color(var(white) alpha(0.67))" }, { "name": "diff.deleted", "scope": "markup.deleted", "foreground": "var(red2)" }, { "name": "diff.inserted", "scope": "markup.inserted", "foreground": "var(yellow2)" }, { "name": "diff.changed", "scope": "markup.changed", "foreground": "var(yellow)" }, { "scope": "constant.numeric.line-number.find-in-files - match", "foreground": "color(var(purple) alpha(0.63))" }, { "scope": "entity.name.filename", "foreground": "var(yellow)" }, { "scope": "message.error", "foreground": "var(red)" }, { "scope": "diff.deleted", "background": "hsla(338, 50%, 56%, 0.15)", "foreground_adjust": "l(+ 5%)" }, { "scope": "diff.deleted.char", "background": "hsla(338, 65%, 56%, 0.30)", "foreground_adjust": "l(+ 10%)" }, { "scope": "diff.inserted", "background": "hsla(80, 50%, 53%, 0.15)", "foreground_adjust": "l(+ 5%)" }, { "scope": "diff.inserted.char", "background": "hsla(80, 65%, 53%, 0.30)", "foreground_adjust": "l(+ 10%)" }, ] } ```

I tried to see if I could resolve this issue further, but it looks like it is going to require quite a bit of re-writing.