tkcode icon indicating copy to clipboard operation
tkcode copied to clipboard

Pointers are broken in json reading

Open Moosems opened this issue 3 years ago • 4 comments

I set up a json file as a theme and used pointers to make future editing simpler. The issue is that I got an error.

Error:

  File "/Users/Moosems/Desktop/DIP-dev/LangEditors.py", line 22, in __init__
    CodeEditor.__init__(self, master, language="Python", autofocus=True, highlighter=self.highlighter, font=self.editor_font, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/tkcode/codeeditor.py", line 23, in __init__
    codebox.BaseCodeBox.__init__(
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/tkcode/codebox.py", line 94, in __init__
    self.update_highlighter(highlighter)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/tkcode/codebox.py", line 280, in update_highlighter
    self.config(**general_props)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/tkcode/codebox.py", line 429, in configure
    tk.Text.configure(self, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/tkinter/__init__.py", line 1675, in configure
    return self._configure('configure', cnf, kw)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/tkinter/__init__.py", line 1665, in _configure
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: unknown color name "{'$ref': '#/ColoringLight/bg'}"

Json file:

{
    "ColoringLight":
    {
        "bg": "#ffffff",
        "fg": "#4f4c4d",
        "TokenText": "#544619",
        "TokenKeyword": "#2f33ff",
        "TokenPunctuation": "#dd8ced",
        "TokenName": "#b6c23f",
        "TokenOperator": "#f6a656",
        "TokenComment": "#2cbe48",
        "TokenLiteralNumber": "#ab4bbe",
        "TokenLiteralString": "#f45159"
    },

    "general":
    {
        "background":{"$ref": "#/ColoringLight/bg"},
        "foreground": {"$ref": "#/ColoringLight/fg"},
        "insertbackground": "#c8894a",
        "insertwidth": 1,
        "highlightthickness": 0,
        "borderwidth": 0
    },
    
    
    "selection":
    {
    },
    

    "syntax":
    {
        "Token.Text": {"$ref": "#/ColoringLight/TokenText"},
        "Token.Other": {"$ref": "#/ColoringLight/TokenText"},
        "Token.Error": {"$ref": "#/ColoringLight/TokenText"},
        "Token.Whitespace": {"$ref": "#/ColoringLight/TokenText"},
        "Token.Escape": {"$ref": "#/ColoringLight/TokenText"},
        
        "Token.Keyword": {"$ref": "#/ColoringLight/TokenKeyword"},
        "Token.Keyword.Constant": {"$ref": "#/ColoringLight/TokenKeyword"},
        "Token.Keyword.Declaration": {"$ref": "#/ColoringLight/TokenKeyword"},
        "Token.Keyword.Namespace": {"$ref": "#/ColoringLight/TokenKeyword"},
        "Token.Keyword.Pseudo": {"$ref": "#/ColoringLight/TokenKeyword"},
        "Token.Keyword.Reserved": {"$ref": "#/ColoringLight/TokenKeyword"},
        "Token.Keyword.Type": {"$ref": "#/ColoringLight/TokenKeyword"},
        "Token.Keyword.Other": {"$ref": "#/ColoringLight/TokenKeyword"},
        
        "Token.Punctuation": {"$ref": "#/ColoringLight/TokenPunctuation"},

        "Token.Name.Attribute": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Builtin": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Builtin.Pseudo": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Class": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Constant": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Decorator": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Entity": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Exception": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Function": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Function.Magic": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Label": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Namespace": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Other": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Tag": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Variable": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Variable.Class": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Variable.Global": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Variable.Instance": {"$ref": "#/ColoringLight/TokenName"},
        "Token.Name.Variable.Magic": {"$ref": "#/ColoringLight/TokenName"},

        "Token.Operator": {"$ref": "#/ColoringLight/TokenOperator"},
        "Token.Operator.Word": {"$ref": "#/ColoringLight/TokenOperator"},
        
        "Token.Comment": {"$ref": "#/ColoringLight/TokenComment"},
        "Token.Comment.Hashbang": {"$ref": "#/ColoringLight/TokenComment"},
        "Token.Comment.Multiline": {"$ref": "#/ColoringLight/TokenComment"},
        "Token.Comment.Preproc": {"$ref": "#/ColoringLight/TokenComment"},
        "Token.Comment.Preprocfile": {"$ref": "#/ColoringLight/TokenComment"},
        "Token.Comment.Single": {"$ref": "#/ColoringLight/TokenComment"},
        "Token.Comment.Special": {"$ref": "#/ColoringLight/TokenComment"},
        
        "Token.Literal.Number.Bin": {"$ref": "#/ColoringLight/TokenLiteralNumber"},
        "Token.Literal.Number.Float": {"$ref": "#/ColoringLight/TokenLiteralNumber"},
        "Token.Literal.Number.Hex": {"$ref": "#/ColoringLight/TokenLiteralNumber"},
        "Token.Literal.Number.Integer": {"$ref": "#/ColoringLight/TokenLiteralNumber"},
        "Token.Literal.Number.Integer.Long": {"$ref": "#/ColoringLight/TokenLiteralNumber"},
        "Token.Literal.Number.Oct": {"$ref": "#/ColoringLight/TokenLiteralNumber"},
        
        "Token.Literal.String.Affix": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Char": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Delimeter": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Doc": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Double": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Escape": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Heredoc": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Interpol": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Other": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Regex": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Single": {"$ref": "#/ColoringLight/TokenLiteralString"},
        "Token.Literal.String.Symbol": {"$ref": "#/ColoringLight/TokenLiteralString"}
    }
}

Moosems avatar Jul 09 '22 19:07 Moosems

TBH, I've never heard of JSON pointers before. But if it isn't working, it's an issue with Python's json module, since tkcode uses that to get the colors and it's not something, I could solve in tkcode.

rdbende avatar Jul 09 '22 20:07 rdbende

@rdbende I opened this stackoverflow question and I'll let you know if anything becomes of it

Moosems avatar Jul 09 '22 20:07 Moosems

@rdbende An answer was given that I think will work for tkcode

Moosems avatar Jul 09 '22 20:07 Moosems

you can use the jsonref module instead of the json module and it should fix the issue

Moosems avatar Jul 10 '22 01:07 Moosems