diff --git a/package.json b/package.json
index ed9f25cd137089358ce76c2770a291fc9afbff71..b61f1051377d35dc3dc935ae9629ceb4c7db7e5f 100644
--- a/package.json
+++ b/package.json
@@ -1 +1,509 @@
-{"__metadata":{"id":"3a15b5a7-be12-47e3-8445-88ee3eabc8b2","publisherDisplayName":"sumneko","publisherId":"fb626675-24cf-4881-8c13-b465f29bec2f"},"activationEvents":["onLanguage:lua","onWebviewPanel:lua-doc","onCommand:extension.lua.doc"],"author":"sumneko","categories":["Linters","Programming Languages","Snippets"],"contributes":{"configuration":{"properties":{"Lua.color.mode":{"default":"Semantic","enum":["Grammar","Semantic"],"markdownDescription":"%config.color.mode%","markdownEnumDescriptions":["%config.color.mode.Grammar%","%config.color.mode.Semantic%"],"scope":"resource","type":"string"},"Lua.completion.callSnippet":{"default":"Disable","enum":["Disable","Both","Replace"],"markdownDescription":"%config.completion.callSnippet%","markdownEnumDescriptions":["%config.completion.callSnippet.Disable%","%config.completion.callSnippet.Both%","%config.completion.callSnippet.Replace%"],"scope":"resource","type":"string"},"Lua.completion.enable":{"default":true,"markdownDescription":"%config.completion.enable%","scope":"resource","type":"boolean"},"Lua.completion.keywordSnippet":{"default":"Replace","enum":["Disable","Both","Replace"],"markdownDescription":"%config.completion.keywordSnippet%","markdownEnumDescriptions":["%config.completion.keywordSnippet.Disable%","%config.completion.keywordSnippet.Both%","%config.completion.keywordSnippet.Replace%"],"scope":"resource","type":"string"},"Lua.develop.debuggerPort":{"default":11412,"markdownDescription":"%config.develop.debuggerPort%","scope":"resource","type":"integer"},"Lua.develop.debuggerWait":{"default":false,"markdownDescription":"%config.develop.debuggerWait%","scope":"resource","type":"boolean"},"Lua.develop.enable":{"default":false,"markdownDescription":"%config.develop.enable%","scope":"resource","type":"boolean"},"Lua.diagnostics.disable":{"items":{"type":"string"},"markdownDescription":"%config.diagnostics.disable%","scope":"resource","type":"array"},"Lua.diagnostics.enable":{"default":true,"markdownDescription":"%config.diagnostics.enable%","scope":"resource","type":"boolean"},"Lua.diagnostics.globals":{"items":{"type":"string"},"markdownDescription":"%config.diagnostics.globals%","scope":"resource","type":"array"},"Lua.diagnostics.severity":{"markdownDescription":"%config.diagnostics.severity%","properties":{"ambiguity-1":{"default":"Warning","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"duplicate-index":{"default":"Warning","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"duplicate-method":{"default":"Warning","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"emmy-lua":{"default":"Warning","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"empty-block":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"global-in-nil-env":{"default":"Warning","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"lowercase-global":{"default":"Information","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"newfield-call":{"default":"Warning","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"newline-call":{"default":"Information","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"redefined-local":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"redundant-parameter":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"redundant-value":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"set-const":{"default":"Error","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"set-for-state":{"default":"Warning","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"trailing-space":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"undefined-env-child":{"default":"Information","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"undefined-global":{"default":"Warning","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"unused-function":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"unused-label":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"unused-local":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"},"unused-vararg":{"default":"Hint","enum":["Error","Warning","Information","Hint"],"scope":"resource","type":"string"}},"scope":"resource","title":"severity","type":"object"},"Lua.hover.enable":{"default":true,"markdownDescription":"%config.hover.enable%","scope":"resource","type":"boolean"},"Lua.hover.viewNumber":{"default":true,"markdownDescription":"%config.hover.viewNumber%","scope":"resource","type":"boolean"},"Lua.hover.viewString":{"default":true,"markdownDescription":"%config.hover.viewString%","scope":"resource","type":"boolean"},"Lua.hover.viewStringMax":{"default":1000,"markdownDescription":"%config.hover.viewStringMax%","scope":"resource","type":"integer"},"Lua.runtime.path":{"default":["?.lua","?\/init.lua","?\/?.lua"],"items":{"type":"string"},"markdownDescription":"%config.runtime.path%","scope":"resource","type":"array"},"Lua.runtime.version":{"default":"Lua 5.3","enum":["Lua 5.1","Lua 5.2","Lua 5.3","Lua 5.4","LuaJIT"],"markdownDescription":"%config.runtime.version%","scope":"resource","type":"string"},"Lua.signatureHelp.enable":{"default":true,"markdownDescription":"%config.signatureHelp.enable%","scope":"resource","type":"boolean"},"Lua.workspace.ignoreDir":{"default":[".vscode"],"items":{"type":"string"},"markdownDescription":"%config.workspace.ignoreDir%","scope":"resource","type":"array"},"Lua.workspace.ignoreSubmodules":{"default":true,"markdownDescription":"%config.workspace.ignoreSubmodules%","scope":"resource","type":"boolean"},"Lua.workspace.library":{"markdownDescription":"%config.workspace.library%","scope":"resource","type":"object"},"Lua.workspace.maxPreload":{"default":300,"markdownDescription":"%config.workspace.maxPreload%","scope":"resource","type":"integer"},"Lua.workspace.preloadFileSize":{"default":100,"markdownDescription":"%config.workspace.preloadFileSize%","scope":"resource","type":"integer"},"Lua.workspace.useGitIgnore":{"default":true,"markdownDescription":"%config.workspace.useGitIgnore%","scope":"resource","type":"boolean"}},"title":"Lua","type":"object"},"grammars":[{"language":"lua","path":".\/syntaxes\/lua.tmLanguage.json","scopeName":"source.lua"}],"semanticTokenScopes":[{"language":"lua","scopes":{"interface.declaration":["entity.name.function.lua"],"namespace.deprecated":["entity.name.label"],"namespace.readonly":["constant.language.lua"],"namespace.static":["support.function.lua"],"parameter.declaration":["variable.parameter"],"property.declaration":["entity.other.attribute"],"variable":["variable.other.lua"]}}]},"description":"Lua Language Server coded by Lua","displayName":"Lua","engines":{"vscode":"^1.23.0"},"icon":"images\/logo.png","keywords":["Lua","LSP","GoTo Definition","IntelliSense"],"license":"MIT","main":".\/client\/out\/extension","name":"lua","publisher":"sumneko","repository":{"type":"git","url":"https:\/\/github.com\/sumneko\/lua-language-server"},"version":"0.20.1"}
+{
+    "__metadata": {
+        "id": "3a15b5a7-be12-47e3-8445-88ee3eabc8b2",
+        "publisherDisplayName": "sumneko",
+        "publisherId": "fb626675-24cf-4881-8c13-b465f29bec2f"
+    },
+    "activationEvents": [
+        "onLanguage:lua",
+        "onWebviewPanel:lua-doc",
+        "onCommand:extension.lua.doc"
+    ],
+    "author": "sumneko",
+    "categories": [
+        "Linters",
+        "Programming Languages",
+        "Snippets"
+    ],
+    "contributes": {
+        "configuration": {
+            "properties": {
+                "Lua.color.mode": {
+                    "default": "Semantic",
+                    "enum": [
+                        "Grammar",
+                        "Semantic"
+                    ],
+                    "markdownDescription": "%config.color.mode%",
+                    "markdownEnumDescriptions": [
+                        "%config.color.mode.Grammar%",
+                        "%config.color.mode.Semantic%"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
+                "Lua.completion.callSnippet": {
+                    "default": "Disable",
+                    "enum": [
+                        "Disable",
+                        "Both",
+                        "Replace"
+                    ],
+                    "markdownDescription": "%config.completion.callSnippet%",
+                    "markdownEnumDescriptions": [
+                        "%config.completion.callSnippet.Disable%",
+                        "%config.completion.callSnippet.Both%",
+                        "%config.completion.callSnippet.Replace%"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
+                "Lua.completion.enable": {
+                    "default": true,
+                    "markdownDescription": "%config.completion.enable%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.completion.keywordSnippet": {
+                    "default": "Replace",
+                    "enum": [
+                        "Disable",
+                        "Both",
+                        "Replace"
+                    ],
+                    "markdownDescription": "%config.completion.keywordSnippet%",
+                    "markdownEnumDescriptions": [
+                        "%config.completion.keywordSnippet.Disable%",
+                        "%config.completion.keywordSnippet.Both%",
+                        "%config.completion.keywordSnippet.Replace%"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
+                "Lua.develop.debuggerPort": {
+                    "default": 11412,
+                    "markdownDescription": "%config.develop.debuggerPort%",
+                    "scope": "resource",
+                    "type": "integer"
+                },
+                "Lua.develop.debuggerWait": {
+                    "default": false,
+                    "markdownDescription": "%config.develop.debuggerWait%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.develop.enable": {
+                    "default": false,
+                    "markdownDescription": "%config.develop.enable%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.diagnostics.disable": {
+                    "items": {
+                        "type": "string"
+                    },
+                    "markdownDescription": "%config.diagnostics.disable%",
+                    "scope": "resource",
+                    "type": "array"
+                },
+                "Lua.diagnostics.enable": {
+                    "default": true,
+                    "markdownDescription": "%config.diagnostics.enable%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.diagnostics.globals": {
+                    "items": {
+                        "type": "string"
+                    },
+                    "markdownDescription": "%config.diagnostics.globals%",
+                    "scope": "resource",
+                    "type": "array"
+                },
+                "Lua.diagnostics.severity": {
+                    "markdownDescription": "%config.diagnostics.severity%",
+                    "properties": {
+                        "ambiguity-1": {
+                            "default": "Warning",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "duplicate-index": {
+                            "default": "Warning",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "duplicate-method": {
+                            "default": "Warning",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "emmy-lua": {
+                            "default": "Warning",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "empty-block": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "global-in-nil-env": {
+                            "default": "Warning",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "lowercase-global": {
+                            "default": "Information",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "newfield-call": {
+                            "default": "Warning",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "newline-call": {
+                            "default": "Information",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "redefined-local": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "redundant-parameter": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "redundant-value": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "set-const": {
+                            "default": "Error",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "set-for-state": {
+                            "default": "Warning",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "trailing-space": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "undefined-env-child": {
+                            "default": "Information",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "undefined-global": {
+                            "default": "Warning",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "unused-function": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "unused-label": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "unused-local": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
+                        "unused-vararg": {
+                            "default": "Hint",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        }
+                    },
+                    "scope": "resource",
+                    "title": "severity",
+                    "type": "object"
+                },
+                "Lua.hover.enable": {
+                    "default": true,
+                    "markdownDescription": "%config.hover.enable%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.hover.viewNumber": {
+                    "default": true,
+                    "markdownDescription": "%config.hover.viewNumber%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.hover.viewString": {
+                    "default": true,
+                    "markdownDescription": "%config.hover.viewString%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.hover.viewStringMax": {
+                    "default": 1000,
+                    "markdownDescription": "%config.hover.viewStringMax%",
+                    "scope": "resource",
+                    "type": "integer"
+                },
+                "Lua.runtime.path": {
+                    "default": [
+                        "?.lua",
+                        "?\/init.lua",
+                        "?\/?.lua"
+                    ],
+                    "items": {
+                        "type": "string"
+                    },
+                    "markdownDescription": "%config.runtime.path%",
+                    "scope": "resource",
+                    "type": "array"
+                },
+                "Lua.runtime.version": {
+                    "default": "Lua 5.3",
+                    "enum": [
+                        "Lua 5.1",
+                        "Lua 5.2",
+                        "Lua 5.3",
+                        "Lua 5.4",
+                        "LuaJIT"
+                    ],
+                    "markdownDescription": "%config.runtime.version%",
+                    "scope": "resource",
+                    "type": "string"
+                },
+                "Lua.signatureHelp.enable": {
+                    "default": true,
+                    "markdownDescription": "%config.signatureHelp.enable%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.workspace.ignoreDir": {
+                    "default": [
+                        ".vscode"
+                    ],
+                    "items": {
+                        "type": "string"
+                    },
+                    "markdownDescription": "%config.workspace.ignoreDir%",
+                    "scope": "resource",
+                    "type": "array"
+                },
+                "Lua.workspace.ignoreSubmodules": {
+                    "default": true,
+                    "markdownDescription": "%config.workspace.ignoreSubmodules%",
+                    "scope": "resource",
+                    "type": "boolean"
+                },
+                "Lua.workspace.library": {
+                    "markdownDescription": "%config.workspace.library%",
+                    "scope": "resource",
+                    "type": "object"
+                },
+                "Lua.workspace.maxPreload": {
+                    "default": 300,
+                    "markdownDescription": "%config.workspace.maxPreload%",
+                    "scope": "resource",
+                    "type": "integer"
+                },
+                "Lua.workspace.preloadFileSize": {
+                    "default": 100,
+                    "markdownDescription": "%config.workspace.preloadFileSize%",
+                    "scope": "resource",
+                    "type": "integer"
+                },
+                "Lua.workspace.useGitIgnore": {
+                    "default": true,
+                    "markdownDescription": "%config.workspace.useGitIgnore%",
+                    "scope": "resource",
+                    "type": "boolean"
+                }
+            },
+            "title": "Lua",
+            "type": "object"
+        },
+        "grammars": [
+            {
+                "language": "lua",
+                "path": ".\/syntaxes\/lua.tmLanguage.json",
+                "scopeName": "source.lua"
+            }
+        ],
+        "semanticTokenScopes": [
+            {
+                "language": "lua",
+                "scopes": {
+                    "interface.declaration": [
+                        "entity.name.function.lua"
+                    ],
+                    "namespace.deprecated": [
+                        "entity.name.label"
+                    ],
+                    "namespace.readonly": [
+                        "constant.language.lua"
+                    ],
+                    "namespace.static": [
+                        "support.function.lua"
+                    ],
+                    "parameter.declaration": [
+                        "variable.parameter"
+                    ],
+                    "property.declaration": [
+                        "entity.other.attribute"
+                    ],
+                    "variable": [
+                        "variable.other.lua"
+                    ]
+                }
+            }
+        ]
+    },
+    "description": "Lua Language Server coded by Lua",
+    "displayName": "Lua",
+    "engines": {
+        "vscode": "^1.23.0"
+    },
+    "icon": "images\/logo.png",
+    "keywords": [
+        "Lua",
+        "LSP",
+        "GoTo Definition",
+        "IntelliSense"
+    ],
+    "license": "MIT",
+    "main": ".\/client\/out\/extension",
+    "name": "lua",
+    "publisher": "sumneko",
+    "repository": {
+        "type": "git",
+        "url": "https:\/\/github.com\/sumneko\/lua-language-server"
+    },
+    "version": "0.20.1"
+}
diff --git a/package.nls.json b/package.nls.json
index bcd4392c4be48673bb536754ebd0eb38f15a25e1..027d151800f8ccf25d605c12659e4cab0c5c0885 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -1 +1,35 @@
-{"config.awakened.cat":"PLAY WITH ME >_<\u000a\u000a(This will enable the beta version which is still in development. Feedback is welcome! Reload the window after changing this option!)","config.color.mode":"Color mode.","config.color.mode.Grammar":"Grammar color.","config.color.mode.Semantic":"Semantic color (Testing. Your color theme must support semantic coloring to be effective.).","config.completion.callSnippet":"Shows function call snippets.","config.completion.callSnippet.Both":"Shows `function name` and `call snippet`.","config.completion.callSnippet.Disable":"Only shows `function name`.","config.completion.callSnippet.Replace":"Only shows `call snippet.`","config.completion.enable":"Enable completion.","config.completion.keywordSnippet":"Shows keyword syntax snippets.","config.completion.keywordSnippet.Both":"Shows `keyword` and `syntax snippet`.","config.completion.keywordSnippet.Disable":"Only shows `keyword`.","config.completion.keywordSnippet.Replace":"Only shows `syntax snippet`.","config.develop.debuggerPort":"Listen port of debugger.","config.develop.debuggerWait":"Suspend before debugger connects.","config.develop.enable":"Developer mode. Do not enable, performance will be affected.","config.diagnostics.disable":"Disabled diagnostic (Use code in hover brackets).\u000a```json\u000a\"Lua.diagnostics.disable\" : [\u000a    \"unused-local\",\u000a    \"lowercase-global\"\u000a]\u000a```\u000a","config.diagnostics.enable":"Enable diagnostics.","config.diagnostics.globals":"Defined global variables.\u000a```json\u000a\"Lua.diagnostics.globals\" : [\u000a    \"GLOBAL1\",\u000a    \"GLOBAL2\"\u000a]\u000a```\u000a","config.diagnostics.severity":"Modified diagnostic severity.\u000a```json\u000a\"Lua.diagnostics.severity\" : {\u000a    \"redefined-local\" : \"Warning\",\u000a    \"emmy-lua\" : \"Hint\"\u000a}\u000a```\u000a","config.hover.enable":"Enable hover.","config.hover.viewNumber":"Hover to view numeric content (only if literal is not decimal).","config.hover.viewString":"Hover to view the contents of a string (only if the literal contains an escape character).","config.hover.viewStringMax":"The maximum length of a hover to view the contents of a string.","config.runtime.path":"`package.path`","config.runtime.version":"Lua runtime version.","config.signatureHelp.enable":"Enable signature help.","config.workspace.ignoreDir":"Ignored directories (Use `.gitignore` grammar).\u000a```json\u000a\"Lua.workspace.ignoreDir\" : [\u000a    \"temp\/*.*\",\u000a    \"!temp\/*.lua\"\u000a]\u000a```\u000a","config.workspace.ignoreSubmodules":"Ignore submodules.","config.workspace.library":"Load external library.\u000aThis feature can load external Lua files, which can be used for definition, automatic completion and other functions. Note that the language server does not monitor changes in external files and needs to restart if the external files are modified.\u000aThe following example shows loaded files in `C:\/lua` and `..\/lib` ,exclude `..\/lib\/temp`.\u000a```json\u000a\"Lua.workspace.library\": {\u000a    \"C:\/lua\": true,\u000a    \"..\/lib\": [\u000a        \"temp\/*\"\u000a    ]\u000a}\u000a```\u000a","config.workspace.maxPreload":"Max preloaded files.","config.workspace.preloadFileSize":"Skip files larger than this value (KB) when preloading.","config.workspace.useGitIgnore":"Ignore files list in `.gitignore` ."}
\ No newline at end of file
+{
+    "config.awakened.cat": "PLAY WITH ME >_<\u000a\u000a(This will enable the beta version which is still in development. Feedback is welcome! Reload the window after changing this option!)",
+    "config.color.mode": "Color mode.",
+    "config.color.mode.Grammar": "Grammar color.",
+    "config.color.mode.Semantic": "Semantic color (Testing. Your color theme must support semantic coloring to be effective.).",
+    "config.completion.callSnippet": "Shows function call snippets.",
+    "config.completion.callSnippet.Both": "Shows `function name` and `call snippet`.",
+    "config.completion.callSnippet.Disable": "Only shows `function name`.",
+    "config.completion.callSnippet.Replace": "Only shows `call snippet.`",
+    "config.completion.enable": "Enable completion.",
+    "config.completion.keywordSnippet": "Shows keyword syntax snippets.",
+    "config.completion.keywordSnippet.Both": "Shows `keyword` and `syntax snippet`.",
+    "config.completion.keywordSnippet.Disable": "Only shows `keyword`.",
+    "config.completion.keywordSnippet.Replace": "Only shows `syntax snippet`.",
+    "config.develop.debuggerPort": "Listen port of debugger.",
+    "config.develop.debuggerWait": "Suspend before debugger connects.",
+    "config.develop.enable": "Developer mode. Do not enable, performance will be affected.",
+    "config.diagnostics.disable": "Disabled diagnostic (Use code in hover brackets).\u000a```json\u000a\"Lua.diagnostics.disable\" : [\u000a    \"unused-local\",\u000a    \"lowercase-global\"\u000a]\u000a```\u000a",
+    "config.diagnostics.enable": "Enable diagnostics.",
+    "config.diagnostics.globals": "Defined global variables.\u000a```json\u000a\"Lua.diagnostics.globals\" : [\u000a    \"GLOBAL1\",\u000a    \"GLOBAL2\"\u000a]\u000a```\u000a",
+    "config.diagnostics.severity": "Modified diagnostic severity.\u000a```json\u000a\"Lua.diagnostics.severity\" : {\u000a    \"redefined-local\" : \"Warning\",\u000a    \"emmy-lua\" : \"Hint\"\u000a}\u000a```\u000a",
+    "config.hover.enable": "Enable hover.",
+    "config.hover.viewNumber": "Hover to view numeric content (only if literal is not decimal).",
+    "config.hover.viewString": "Hover to view the contents of a string (only if the literal contains an escape character).",
+    "config.hover.viewStringMax": "The maximum length of a hover to view the contents of a string.",
+    "config.runtime.path": "`package.path`",
+    "config.runtime.version": "Lua runtime version.",
+    "config.signatureHelp.enable": "Enable signature help.",
+    "config.workspace.ignoreDir": "Ignored directories (Use `.gitignore` grammar).\u000a```json\u000a\"Lua.workspace.ignoreDir\" : [\u000a    \"temp\/*.*\",\u000a    \"!temp\/*.lua\"\u000a]\u000a```\u000a",
+    "config.workspace.ignoreSubmodules": "Ignore submodules.",
+    "config.workspace.library": "Load external library.\u000aThis feature can load external Lua files, which can be used for definition, automatic completion and other functions. Note that the language server does not monitor changes in external files and needs to restart if the external files are modified.\u000aThe following example shows loaded files in `C:\/lua` and `..\/lib` ,exclude `..\/lib\/temp`.\u000a```json\u000a\"Lua.workspace.library\": {\u000a    \"C:\/lua\": true,\u000a    \"..\/lib\": [\u000a        \"temp\/*\"\u000a    ]\u000a}\u000a```\u000a",
+    "config.workspace.maxPreload": "Max preloaded files.",
+    "config.workspace.preloadFileSize": "Skip files larger than this value (KB) when preloading.",
+    "config.workspace.useGitIgnore": "Ignore files list in `.gitignore` ."
+}
\ No newline at end of file
diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json
index c56b19d3460d8b2cd6abc145d7ed0938de8ff34b..050a825910dbf1d9a97299005311b0d94a5a21a6 100644
--- a/package.nls.zh-cn.json
+++ b/package.nls.zh-cn.json
@@ -1 +1,35 @@
-{"config.awakened.cat":"PLAY WITH ME >_<\u000a\u000a(这会启用还处于开发中的beta版,欢迎测试反馈!改变此选项需要重载窗口!)","config.color.mode":"着色模式。","config.color.mode.Grammar":"语法着色。","config.color.mode.Semantic":"语义着色(测试中。你的颜色主题必须要支持语义着色才有效。)。","config.completion.callSnippet":"显示函数调用片段。","config.completion.callSnippet.Both":"显示 `函数名` 与 `调用片段`。","config.completion.callSnippet.Disable":"只显示 `函数名`。","config.completion.callSnippet.Replace":"只显示 `调用片段`。","config.completion.enable":"启用自动完成。","config.completion.keywordSnippet":"显示关键字语法片段","config.completion.keywordSnippet.Both":"显示 `关键字` 与 `语法片段`。","config.completion.keywordSnippet.Disable":"只显示 `关键字`。","config.completion.keywordSnippet.Replace":"只显示 `语法片段`。","config.develop.debuggerPort":"调试器监听端口。","config.develop.debuggerWait":"调试器连接之前挂起。","config.develop.enable":"开发者模式。请勿开启,会影响性能。","config.diagnostics.disable":"禁用的诊断(使用浮框括号内的代码)。\u000a```json\u000a\"Lua.diagnostics.disable\" : [\u000a    \"unused-local\",\u000a    \"lowercase-global\"\u000a]\u000a```\u000a","config.diagnostics.enable":"启用诊断。","config.diagnostics.globals":"已定义的全局变量。\u000a```json\u000a\"Lua.diagnostics.globals\" : [\u000a    \"GLOBAL1\",\u000a    \"GLOBAL2\"\u000a]\u000a```\u000a","config.diagnostics.severity":"修改诊断等级。\u000a```json\u000a\"Lua.diagnostics.severity\" : {\u000a    \"redefined-local\" : \"Warning\",\u000a    \"emmy-lua\" : \"Hint\"\u000a}\u000a```\u000a","config.hover.enable":"启用悬停提示。","config.hover.viewNumber":"悬停提示查看数字内容(仅当字面量不是十进制时)。","config.hover.viewString":"悬停提示查看字符串内容(仅当字面量包含转义符时)。","config.hover.viewStringMax":"悬停提示查看字符串内容时的最大长度。","config.runtime.path":"`package.path`","config.runtime.version":"Lua运行版本。","config.signatureHelp.enable":"启用参数提示。","config.workspace.ignoreDir":"忽略的目录(使用 `.gitignore` 语法)。\u000a```json\u000a\"Lua.workspace.ignoreDir\" : [\u000a    \"temp\/*.*\",\u000a    \"!temp\/*.lua\"\u000a]\u000a```\u000a","config.workspace.ignoreSubmodules":"忽略子模块。","config.workspace.library":"加载外部函数库。\u000a该功能可以加载外部的Lua文件,用于函数定义、自动完成等功能。注意,语言服务不会监视外部文件的变化,如果修改了外部文件需要重启。\u000a下面这个例子表示加载`C:\/lua`与`..\/lib`中的所有文件,但不加载`..\/lib\/temp`中的文件。\u000a```json\u000a\"Lua.workspace.library\": {\u000a    \"C:\/lua\": true,\u000a    \"..\/lib\": [\u000a        \"temp\/*\"\u000a    ]\u000a}\u000a```\u000a","config.workspace.maxPreload":"最大预加载文件数。","config.workspace.preloadFileSize":"预加载时跳过大小大于该值(KB)的文件。","config.workspace.useGitIgnore":"忽略 `.gitignore` 中列举的文件。"}
\ No newline at end of file
+{
+    "config.awakened.cat": "PLAY WITH ME >_<\u000a\u000a(这会启用还处于开发中的beta版,欢迎测试反馈!改变此选项需要重载窗口!)",
+    "config.color.mode": "着色模式。",
+    "config.color.mode.Grammar": "语法着色。",
+    "config.color.mode.Semantic": "语义着色(测试中。你的颜色主题必须要支持语义着色才有效。)。",
+    "config.completion.callSnippet": "显示函数调用片段。",
+    "config.completion.callSnippet.Both": "显示 `函数名` 与 `调用片段`。",
+    "config.completion.callSnippet.Disable": "只显示 `函数名`。",
+    "config.completion.callSnippet.Replace": "只显示 `调用片段`。",
+    "config.completion.enable": "启用自动完成。",
+    "config.completion.keywordSnippet": "显示关键字语法片段",
+    "config.completion.keywordSnippet.Both": "显示 `关键字` 与 `语法片段`。",
+    "config.completion.keywordSnippet.Disable": "只显示 `关键字`。",
+    "config.completion.keywordSnippet.Replace": "只显示 `语法片段`。",
+    "config.develop.debuggerPort": "调试器监听端口。",
+    "config.develop.debuggerWait": "调试器连接之前挂起。",
+    "config.develop.enable": "开发者模式。请勿开启,会影响性能。",
+    "config.diagnostics.disable": "禁用的诊断(使用浮框括号内的代码)。\u000a```json\u000a\"Lua.diagnostics.disable\" : [\u000a    \"unused-local\",\u000a    \"lowercase-global\"\u000a]\u000a```\u000a",
+    "config.diagnostics.enable": "启用诊断。",
+    "config.diagnostics.globals": "已定义的全局变量。\u000a```json\u000a\"Lua.diagnostics.globals\" : [\u000a    \"GLOBAL1\",\u000a    \"GLOBAL2\"\u000a]\u000a```\u000a",
+    "config.diagnostics.severity": "修改诊断等级。\u000a```json\u000a\"Lua.diagnostics.severity\" : {\u000a    \"redefined-local\" : \"Warning\",\u000a    \"emmy-lua\" : \"Hint\"\u000a}\u000a```\u000a",
+    "config.hover.enable": "启用悬停提示。",
+    "config.hover.viewNumber": "悬停提示查看数字内容(仅当字面量不是十进制时)。",
+    "config.hover.viewString": "悬停提示查看字符串内容(仅当字面量包含转义符时)。",
+    "config.hover.viewStringMax": "悬停提示查看字符串内容时的最大长度。",
+    "config.runtime.path": "`package.path`",
+    "config.runtime.version": "Lua运行版本。",
+    "config.signatureHelp.enable": "启用参数提示。",
+    "config.workspace.ignoreDir": "忽略的目录(使用 `.gitignore` 语法)。\u000a```json\u000a\"Lua.workspace.ignoreDir\" : [\u000a    \"temp\/*.*\",\u000a    \"!temp\/*.lua\"\u000a]\u000a```\u000a",
+    "config.workspace.ignoreSubmodules": "忽略子模块。",
+    "config.workspace.library": "加载外部函数库。\u000a该功能可以加载外部的Lua文件,用于函数定义、自动完成等功能。注意,语言服务不会监视外部文件的变化,如果修改了外部文件需要重启。\u000a下面这个例子表示加载`C:\/lua`与`..\/lib`中的所有文件,但不加载`..\/lib\/temp`中的文件。\u000a```json\u000a\"Lua.workspace.library\": {\u000a    \"C:\/lua\": true,\u000a    \"..\/lib\": [\u000a        \"temp\/*\"\u000a    ]\u000a}\u000a```\u000a",
+    "config.workspace.maxPreload": "最大预加载文件数。",
+    "config.workspace.preloadFileSize": "预加载时跳过大小大于该值(KB)的文件。",
+    "config.workspace.useGitIgnore": "忽略 `.gitignore` 中列举的文件。"
+}
\ No newline at end of file
diff --git a/package/build.lua b/package/build.lua
index 0cf8dd6c784f47aadbfaee68df079cdbd0ff3e5f..355647f4cb4e5b18256d1b366b63c4e2c1a2e0a0 100644
--- a/package/build.lua
+++ b/package/build.lua
@@ -1,4 +1,4 @@
-local json = require 'json'
+local json = require 'json-beautify'
 
 local VERSION = "0.20.1"
 
@@ -11,11 +11,15 @@ package.__metadata = {
     publisherId = "fb626675-24cf-4881-8c13-b465f29bec2f",
 }
 
+local encodeOption = {
+    newline = '\r\n',
+    indent  = '    ',
+}
 print('生成 package.json')
-io.save(ROOT / 'package.json', json.encode(package) .. '\r\n')
+io.save(ROOT / 'package.json', json.beautify(package, encodeOption) .. '\r\n')
 
 print('生成 package.nls.json')
-io.save(ROOT / 'package.nls.json', json.encode((require 'package.nls')))
+io.save(ROOT / 'package.nls.json', json.beautify(require 'package.nls', encodeOption))
 
 print('生成 package.nls.zh-cn.json')
-io.save(ROOT / 'package.nls.zh-cn.json', json.encode((require 'package.nls-zh-cn')))
+io.save(ROOT / 'package.nls.zh-cn.json', json.beautify(require 'package.nls-zh-cn', encodeOption))
diff --git a/setting/build.lua b/setting/build.lua
index 1d13ced22fcda81d0e26ad51b8848931c10a9fad..0525eea133604986e00f11941af1350fe72c5796 100644
--- a/setting/build.lua
+++ b/setting/build.lua
@@ -1,7 +1,7 @@
 local fs = require 'bee.filesystem'
 
 require 'utility'
-local json = require 'json'
+local json = require 'json-beautify'
 local configuration = require 'package.configuration'
 
 local function copyWithNLS(t, callback)
@@ -18,6 +18,10 @@ local function copyWithNLS(t, callback)
     return nt
 end
 
+local encodeOption = {
+    newline = '\r\n',
+    indent  = '    ',
+}
 for _, lang in ipairs {'', '-zh-cn'} do
     local nls = require('package.nls' .. lang)
 
@@ -31,5 +35,5 @@ for _, lang in ipairs {'', '-zh-cn'} do
         end),
     }
 
-    io.save(fs.path'setting/schema'..lang..'.json', json.encode(setting))
+    io.save(fs.path'setting/schema'..lang..'.json', json.beautify(setting, encodeOption))
 end
diff --git a/setting/schema-zh-cn.json b/setting/schema-zh-cn.json
index 12c5afe051aee2c7d45d1ef9bfd0d81ae592f9d7..db6419d7b1bdb03e2c0ba3de8d55570360b01bd9 100644
--- a/setting/schema-zh-cn.json
+++ b/setting/schema-zh-cn.json
@@ -76,7 +76,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "禁用的诊断(使用浮框括号内的代码)。\n```json\n\"Lua.diagnostics.disable\" : [\n    \"unused-local\",\n    \"lowercase-global\"\n]\n```\n",
+            "markdownDescription": "禁用的诊断(使用浮框括号内的代码)。\u000a```json\u000a\"Lua.diagnostics.disable\" : [\u000a    \"unused-local\",\u000a    \"lowercase-global\"\u000a]\u000a```\u000a",
             "scope": "resource",
             "type": "array"
         },
@@ -90,12 +90,12 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "已定义的全局变量。\n```json\n\"Lua.diagnostics.globals\" : [\n    \"GLOBAL1\",\n    \"GLOBAL2\"\n]\n```\n",
+            "markdownDescription": "已定义的全局变量。\u000a```json\u000a\"Lua.diagnostics.globals\" : [\u000a    \"GLOBAL1\",\u000a    \"GLOBAL2\"\u000a]\u000a```\u000a",
             "scope": "resource",
             "type": "array"
         },
         "Lua.diagnostics.severity": {
-            "markdownDescription": "修改诊断等级。\n```json\n\"Lua.diagnostics.severity\" : {\n    \"redefined-local\" : \"Warning\",\n    \"emmy-lua\" : \"Hint\"\n}\n```\n",
+            "markdownDescription": "修改诊断等级。\u000a```json\u000a\"Lua.diagnostics.severity\" : {\u000a    \"redefined-local\" : \"Warning\",\u000a    \"emmy-lua\" : \"Hint\"\u000a}\u000a```\u000a",
             "properties": {
                 "ambiguity-1": {
                     "default": "Warning",
@@ -240,6 +240,17 @@
                     "scope": "resource",
                     "type": "string"
                 },
+                "set-for-state": {
+                    "default": "Warning",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "trailing-space": {
                     "default": "Hint",
                     "enum": [
@@ -349,8 +360,8 @@
         "Lua.runtime.path": {
             "default": [
                 "?.lua",
-                "?/init.lua",
-                "?/?.lua"
+                "?\/init.lua",
+                "?\/?.lua"
             ],
             "items": {
                 "type": "string"
@@ -385,7 +396,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "忽略的目录(使用 `.gitignore` 语法)。\n```json\n\"Lua.workspace.ignoreDir\" : [\n    \"temp/*.*\",\n    \"!temp/*.lua\"\n]\n```\n",
+            "markdownDescription": "忽略的目录(使用 `.gitignore` 语法)。\u000a```json\u000a\"Lua.workspace.ignoreDir\" : [\u000a    \"temp\/*.*\",\u000a    \"!temp\/*.lua\"\u000a]\u000a```\u000a",
             "scope": "resource",
             "type": "array"
         },
@@ -396,7 +407,7 @@
             "type": "boolean"
         },
         "Lua.workspace.library": {
-            "markdownDescription": "加载外部函数库。\n该功能可以加载外部的Lua文件,用于函数定义、自动完成等功能。注意,语言服务不会监视外部文件的变化,如果修改了外部文件需要重启。\n下面这个例子表示加载`C:/lua`与`../lib`中的所有文件,但不加载`../lib/temp`中的文件。\n```json\n\"Lua.workspace.library\": {\n    \"C:/lua\": true,\n    \"../lib\": [\n        \"temp/*\"\n    ]\n}\n```\n",
+            "markdownDescription": "加载外部函数库。\u000a该功能可以加载外部的Lua文件,用于函数定义、自动完成等功能。注意,语言服务不会监视外部文件的变化,如果修改了外部文件需要重启。\u000a下面这个例子表示加载`C:\/lua`与`..\/lib`中的所有文件,但不加载`..\/lib\/temp`中的文件。\u000a```json\u000a\"Lua.workspace.library\": {\u000a    \"C:\/lua\": true,\u000a    \"..\/lib\": [\u000a        \"temp\/*\"\u000a    ]\u000a}\u000a```\u000a",
             "scope": "resource",
             "type": "object"
         },
diff --git a/setting/schema.json b/setting/schema.json
index a33a6a8305109e0cad977c31ade747ce7f39c29c..47c2b4497e0d659b883a1bf69122644a23259258 100644
--- a/setting/schema.json
+++ b/setting/schema.json
@@ -76,7 +76,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "Disabled diagnostic (Use code in hover brackets).\n```json\n\"Lua.diagnostics.disable\" : [\n    \"unused-local\",\n    \"lowercase-global\"\n]\n```\n",
+            "markdownDescription": "Disabled diagnostic (Use code in hover brackets).\u000a```json\u000a\"Lua.diagnostics.disable\" : [\u000a    \"unused-local\",\u000a    \"lowercase-global\"\u000a]\u000a```\u000a",
             "scope": "resource",
             "type": "array"
         },
@@ -90,12 +90,12 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "Defined global variables.\n```json\n\"Lua.diagnostics.globals\" : [\n    \"GLOBAL1\",\n    \"GLOBAL2\"\n]\n```\n",
+            "markdownDescription": "Defined global variables.\u000a```json\u000a\"Lua.diagnostics.globals\" : [\u000a    \"GLOBAL1\",\u000a    \"GLOBAL2\"\u000a]\u000a```\u000a",
             "scope": "resource",
             "type": "array"
         },
         "Lua.diagnostics.severity": {
-            "markdownDescription": "Modified diagnostic severity.\n```json\n\"Lua.diagnostics.severity\" : {\n    \"redefined-local\" : \"Warning\",\n    \"emmy-lua\" : \"Hint\"\n}\n```\n",
+            "markdownDescription": "Modified diagnostic severity.\u000a```json\u000a\"Lua.diagnostics.severity\" : {\u000a    \"redefined-local\" : \"Warning\",\u000a    \"emmy-lua\" : \"Hint\"\u000a}\u000a```\u000a",
             "properties": {
                 "ambiguity-1": {
                     "default": "Warning",
@@ -240,6 +240,17 @@
                     "scope": "resource",
                     "type": "string"
                 },
+                "set-for-state": {
+                    "default": "Warning",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "trailing-space": {
                     "default": "Hint",
                     "enum": [
@@ -349,8 +360,8 @@
         "Lua.runtime.path": {
             "default": [
                 "?.lua",
-                "?/init.lua",
-                "?/?.lua"
+                "?\/init.lua",
+                "?\/?.lua"
             ],
             "items": {
                 "type": "string"
@@ -385,7 +396,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "Ignored directories (Use `.gitignore` grammar).\n```json\n\"Lua.workspace.ignoreDir\" : [\n    \"temp/*.*\",\n    \"!temp/*.lua\"\n]\n```\n",
+            "markdownDescription": "Ignored directories (Use `.gitignore` grammar).\u000a```json\u000a\"Lua.workspace.ignoreDir\" : [\u000a    \"temp\/*.*\",\u000a    \"!temp\/*.lua\"\u000a]\u000a```\u000a",
             "scope": "resource",
             "type": "array"
         },
@@ -396,7 +407,7 @@
             "type": "boolean"
         },
         "Lua.workspace.library": {
-            "markdownDescription": "Load external library.\nThis feature can load external Lua files, which can be used for definition, automatic completion and other functions. Note that the language server does not monitor changes in external files and needs to restart if the external files are modified.\nThe following example shows loaded files in `C:/lua` and `../lib` ,exclude `../lib/temp`.\n```json\n\"Lua.workspace.library\": {\n    \"C:/lua\": true,\n    \"../lib\": [\n        \"temp/*\"\n    ]\n}\n```\n",
+            "markdownDescription": "Load external library.\u000aThis feature can load external Lua files, which can be used for definition, automatic completion and other functions. Note that the language server does not monitor changes in external files and needs to restart if the external files are modified.\u000aThe following example shows loaded files in `C:\/lua` and `..\/lib` ,exclude `..\/lib\/temp`.\u000a```json\u000a\"Lua.workspace.library\": {\u000a    \"C:\/lua\": true,\u000a    \"..\/lib\": [\u000a        \"temp\/*\"\u000a    ]\u000a}\u000a```\u000a",
             "scope": "resource",
             "type": "object"
         },