diff --git a/build-settings.lua b/build-settings.lua
index 33f5325481223809171fba8b9019a5a62357d6ad..9f4b5523e644876dbfc25d1fcc5422e789b18731 100644
--- a/build-settings.lua
+++ b/build-settings.lua
@@ -10,6 +10,8 @@ local json          = require 'json-beautify'
 local configuration = require 'server.tools.configuration'
 local fsu           = require 'fs-utility'
 local lloader       = require 'locale-loader'
+local diagd         = require 'proto.diagnostic'
+local util          = require 'utility'
 
 local function addSplited(t, key, value)
     t[key] = value
@@ -50,6 +52,17 @@ local encodeOption = {
     newline = '\r\n',
     indent  = '    ',
 }
+local function mergeDiagnosticGroupLocale(locale)
+    for groupName, names in pairs(diagd.diagnosticGroups) do
+        local key = ('config.diagnostics.%s'):format(groupName)
+        local list = {}
+        for name in util.sortPairs(names) do
+            list[#list+1] = ('* %s'):format(name)
+        end
+        local desc = table.concat(list, '\n')
+        locale[key] = desc
+    end
+end
 
 for dirPath in fs.pairs(fs.path 'server/locale') do
     local lang    = dirPath:filename():string()
@@ -59,6 +72,8 @@ for dirPath in fs.pairs(fs.path 'server/locale') do
         goto CONTINUE
     end
     local nls = lloader(text, nlsPath:string())
+    -- add `config.diagnostics.XXX`
+    mergeDiagnosticGroupLocale(nls)
 
     local setting = {
         title       = 'setting',
diff --git a/package.json b/package.json
index fb59fa07effc375c59a41d8f8244303973973bdf..f234054e2c454ca45793579213504856fff305bc 100644
--- a/package.json
+++ b/package.json
@@ -153,6 +153,300 @@
 					"scope": "resource",
 					"type": "array"
 				},
+				"Lua.diagnostics.groupFileStatus": {
+					"additionalProperties": false,
+					"markdownDescription": "%config.diagnostics.groupFileStatus%",
+					"properties": {
+						"ambiguity": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.ambiguity%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"await": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.await%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"codestyle": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.codestyle%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"duplicate": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.duplicate%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"global": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.global%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"luadoc": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.luadoc%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"redefined": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.redefined%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"strict": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.strict%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"strong": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.strong%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"type-check": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.type-check%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"unbalanced": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.unbalanced%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"unused": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.unused%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Fallback"
+							],
+							"type": "string"
+						}
+					},
+					"scope": "resource",
+					"title": "groupFileStatus",
+					"type": "object"
+				},
+				"Lua.diagnostics.groupSeverity": {
+					"additionalProperties": false,
+					"markdownDescription": "%config.diagnostics.groupSeverity%",
+					"properties": {
+						"ambiguity": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.ambiguity%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"await": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.await%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"codestyle": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.codestyle%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"duplicate": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.duplicate%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"global": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.global%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"luadoc": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.luadoc%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"redefined": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.redefined%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"strict": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.strict%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"strong": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.strong%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"type-check": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.type-check%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"unbalanced": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.unbalanced%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						},
+						"unused": {
+							"default": "Fallback",
+							"description": "%config.diagnostics.unused%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Fallback"
+							],
+							"type": "string"
+						}
+					},
+					"scope": "resource",
+					"title": "groupSeverity",
+					"type": "object"
+				},
 				"Lua.diagnostics.ignoredFiles": {
 					"default": "Opened",
 					"enum": [
@@ -195,7 +489,23 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
+							],
+							"type": "string"
+						},
+						"assign-type-mismatch": {
+							"default": "Opened",
+							"description": "%config.diagnostics.assign-type-mismatch%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -205,7 +515,36 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
+							],
+							"type": "string"
+						},
+						"cast-local-type": {
+							"default": "Opened",
+							"description": "%config.diagnostics.cast-local-type%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
+							],
+							"type": "string"
+						},
+						"cast-type-mismatch": {
+							"default": "Any",
+							"description": "%config.diagnostics.cast-type-mismatch%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -215,7 +554,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -225,7 +567,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -235,7 +580,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -245,7 +593,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -255,17 +606,23 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
 						"deprecated": {
-							"default": "Opened",
+							"default": "Any",
 							"description": "%config.diagnostics.deprecated%",
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -275,17 +632,23 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
 						"discard-returns": {
-							"default": "Opened",
+							"default": "Any",
 							"description": "%config.diagnostics.discard-returns%",
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -295,7 +658,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -305,7 +671,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -315,7 +684,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -325,7 +697,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -335,7 +710,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -345,7 +723,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -355,7 +736,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -365,7 +749,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -375,17 +762,23 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
 						"missing-parameter": {
-							"default": "Opened",
+							"default": "Any",
 							"description": "%config.diagnostics.missing-parameter%",
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -395,7 +788,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -405,7 +801,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -415,7 +814,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -425,7 +827,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -435,7 +840,23 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
+							],
+							"type": "string"
+						},
+						"param-type-mismatch": {
+							"default": "Opened",
+							"description": "%config.diagnostics.param-type-mismatch%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -445,17 +866,23 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
 						"redundant-parameter": {
-							"default": "Opened",
+							"default": "Any",
 							"description": "%config.diagnostics.redundant-parameter%",
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -465,17 +892,23 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
 						"redundant-value": {
-							"default": "Opened",
+							"default": "Any",
 							"description": "%config.diagnostics.redundant-value%",
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -485,7 +918,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -495,17 +931,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
-							],
-							"type": "string"
-						},
-						"type-check": {
-							"default": "None",
-							"description": "%config.diagnostics.type-check%",
-							"enum": [
-								"Any",
-								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -515,7 +944,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -525,7 +957,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -535,7 +970,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -545,7 +983,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -555,7 +996,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -565,7 +1009,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -575,7 +1022,23 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
+							],
+							"type": "string"
+						},
+						"unknown-cast-variable": {
+							"default": "Any",
+							"description": "%config.diagnostics.unknown-cast-variable%",
+							"enum": [
+								"Any",
+								"Opened",
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -585,7 +1048,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -595,7 +1061,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -605,7 +1074,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -615,7 +1087,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						},
@@ -625,7 +1100,10 @@
 							"enum": [
 								"Any",
 								"Opened",
-								"None"
+								"None",
+								"Any!",
+								"Opened!",
+								"None!"
 							],
 							"type": "string"
 						}
@@ -645,7 +1123,26 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
+							],
+							"type": "string"
+						},
+						"assign-type-mismatch": {
+							"default": "Warning",
+							"description": "%config.diagnostics.assign-type-mismatch%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -656,7 +1153,41 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
+							],
+							"type": "string"
+						},
+						"cast-local-type": {
+							"default": "Warning",
+							"description": "%config.diagnostics.cast-local-type%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
+							],
+							"type": "string"
+						},
+						"cast-type-mismatch": {
+							"default": "Warning",
+							"description": "%config.diagnostics.cast-type-mismatch%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -667,7 +1198,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -678,7 +1213,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -689,7 +1228,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -700,7 +1243,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -711,7 +1258,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -722,7 +1273,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -733,7 +1288,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -744,7 +1303,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -755,7 +1318,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -766,7 +1333,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -777,7 +1348,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -788,7 +1363,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -799,7 +1378,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -810,7 +1393,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -821,7 +1408,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -832,7 +1423,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -843,7 +1438,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -854,7 +1453,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -865,7 +1468,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -876,29 +1483,41 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
 						"newline-call": {
-							"default": "Information",
+							"default": "Warning",
 							"description": "%config.diagnostics.newline-call%",
 							"enum": [
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
 						"no-unknown": {
-							"default": "Information",
+							"default": "Warning",
 							"description": "%config.diagnostics.no-unknown%",
 							"enum": [
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -909,7 +1528,26 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
+							],
+							"type": "string"
+						},
+						"param-type-mismatch": {
+							"default": "Warning",
+							"description": "%config.diagnostics.param-type-mismatch%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -920,7 +1558,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -931,18 +1573,26 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
 						"redundant-return": {
-							"default": "Warning",
+							"default": "Hint",
 							"description": "%config.diagnostics.redundant-return%",
 							"enum": [
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -953,7 +1603,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -964,7 +1618,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -975,18 +1633,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
-							],
-							"type": "string"
-						},
-						"type-check": {
-							"default": "Warning",
-							"description": "%config.diagnostics.type-check%",
-							"enum": [
-								"Error",
-								"Warning",
-								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -997,7 +1648,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1008,7 +1663,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1019,7 +1678,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1030,7 +1693,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1041,7 +1708,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1052,7 +1723,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1063,7 +1738,26 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
+							],
+							"type": "string"
+						},
+						"unknown-cast-variable": {
+							"default": "Warning",
+							"description": "%config.diagnostics.unknown-cast-variable%",
+							"enum": [
+								"Error",
+								"Warning",
+								"Information",
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1074,7 +1768,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1085,7 +1783,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1096,7 +1798,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1107,7 +1813,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						},
@@ -1118,7 +1828,11 @@
 								"Error",
 								"Warning",
 								"Information",
-								"Hint"
+								"Hint",
+								"Error!",
+								"Warning!",
+								"Information!",
+								"Hint!"
 							],
 							"type": "string"
 						}
@@ -1141,7 +1855,7 @@
 				},
 				"Lua.format.defaultConfig": {
 					"additionalProperties": false,
-					"default": [],
+					"default": {},
 					"markdownDescription": "%config.format.defaultConfig%",
 					"patternProperties": {
 						".*": {
@@ -1234,7 +1948,7 @@
 					"type": "boolean"
 				},
 				"Lua.hover.previewFields": {
-					"default": 20,
+					"default": 50,
 					"markdownDescription": "%config.hover.previewFields%",
 					"scope": "resource",
 					"type": "integer"
@@ -1498,7 +2212,7 @@
 				},
 				"Lua.runtime.special": {
 					"additionalProperties": false,
-					"default": [],
+					"default": {},
 					"markdownDescription": "%config.runtime.special%",
 					"patternProperties": {
 						".*": {
diff --git a/package.nls.json b/package.nls.json
index db478fc074a2fc4ed2ad8e898a74ef312a760687..988e5af795432fd06cd3a2cf0c12b56d39f44d66 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -29,14 +29,21 @@
     "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.ambiguity": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
     "config.diagnostics.ambiguity-1": "Enable ambiguous operator precedence diagnostics. For example, the `num or 0 + 1` expression will be suggested `(num or 0) + 1` instead.",
+    "config.diagnostics.await": "* await-in-sync\n* not-yieldable",
+    "config.diagnostics.codestyle": "* codestyle-check\n* spell-check",
     "config.diagnostics.disable": "Disabled diagnostic (Use code in hover brackets).",
     "config.diagnostics.disableScheme": "Do not diagnose Lua files that use the following scheme.",
+    "config.diagnostics.duplicate": "* duplicate-index\n* duplicate-set-field",
     "config.diagnostics.duplicate-index": "Enable duplicate table index diagnostics.",
     "config.diagnostics.empty-block": "Enable empty code block diagnostics.",
     "config.diagnostics.enable": "Enable diagnostics.",
+    "config.diagnostics.global": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
     "config.diagnostics.global-in-nil-env": "Enable cannot use global variables ( `_ENV` is set to `nil`) diagnostics.",
     "config.diagnostics.globals": "Defined global variables.",
+    "config.diagnostics.groupFileStatus": "Modify the diagnostic needed file status in a group.\n\n* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* None:    disable this diagnostic\n\n`Fallback` means that diagnostics in this group are controlled by `diagnostics.neededFileStatus` separately.\nOther settings will override individual settings without end of `!`.\n",
+    "config.diagnostics.groupSeverity": "Modify the diagnostic severity in a group.\n`Fallback` means that diagnostics in this group are controlled by `diagnostics.severity` separately.\nOther settings will override individual settings without end of `!`.\n",
     "config.diagnostics.ignoredFiles": "How to diagnose ignored files.",
     "config.diagnostics.ignoredFiles.Disable": "These files are not diagnosed.",
     "config.diagnostics.ignoredFiles.Enable": "Always diagnose these files.",
@@ -46,22 +53,30 @@
     "config.diagnostics.libraryFiles.Enable": "Always diagnose these files.",
     "config.diagnostics.libraryFiles.Opened": "Only when these files are opened will it be diagnosed.",
     "config.diagnostics.lowercase-global": "Enable lowercase global variable definition diagnostics.",
-    "config.diagnostics.neededFileStatus": "* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* Disable: disable this diagnostic\n",
+    "config.diagnostics.luadoc": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+    "config.diagnostics.neededFileStatus": "* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* None:    disable this diagnostic\n\nEnd with `!` means override the group setting `diagnostics.groupFileStatus`.\n",
     "config.diagnostics.newfield-call": "在字面量表中,2行代码之间缺少分隔符,在语法上被解析为了一次索引操作",
     "config.diagnostics.newline-call": "Enable newline call diagnostics. Is's raised when a line starting with `(` is encountered, which is syntactically parsed as a function call on the previous line.",
+    "config.diagnostics.redefined": "* redefined-local",
     "config.diagnostics.redefined-local": "Enable redefined local variable diagnostics.",
     "config.diagnostics.redundant-parameter": "Enable redundant function parameter diagnostics.",
     "config.diagnostics.redundant-value": "Enable the redundant values assigned diagnostics. It's raised during assignment operation, when the number of values is higher than the number of objects being assigned.",
-    "config.diagnostics.severity": "Modified diagnostic severity.",
+    "config.diagnostics.severity": "Modify the diagnostic severity.\n\nEnd with `!` means override the group setting `diagnostics.groupSeverity`.\n",
+    "config.diagnostics.strict": "* close-non-object\n* deprecated\n* discard-returns",
+    "config.diagnostics.strong": "* no-unknown",
     "config.diagnostics.trailing-space": "Enable trailing space diagnostics.",
+    "config.diagnostics.type-check": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+    "config.diagnostics.unbalanced": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
     "config.diagnostics.undefined-env-child": "Enable undefined environment variable diagnostics. It's raised when `_ENV` table is set to a new literal table, but the used global variable is no longer present in the global environment.",
     "config.diagnostics.undefined-global": "Enable undefined global variable diagnostics.",
+    "config.diagnostics.unused": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
     "config.diagnostics.unused-function": "Enable unused function diagnostics.",
     "config.diagnostics.unused-label": "Enable unused label diagnostics.",
     "config.diagnostics.unused-local": "Enable unused local variable diagnostics.",
     "config.diagnostics.unused-vararg": "Enable unused vararg diagnostics.",
     "config.diagnostics.workspaceDelay": "Latency (milliseconds) for workspace diagnostics. When you start the workspace, or edit any file, the entire workspace will be re-diagnosed in the background. Set to negative to disable workspace diagnostics.",
     "config.diagnostics.workspaceRate": "Workspace diagnostics run rate (%). Decreasing this value reduces CPU usage, but also reduces the speed of workspace diagnostics. The diagnosis of the file you are currently editing is always done at full speed and is not affected by this setting.",
+    "config.format.defaultConfig": "The default format configuration. Has a lower priority than `.editorconfig` file in the workspace.\nRead [formatter docs](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs) to learn usage.\n",
     "config.format.enable": "Enable code formatter.",
     "config.hint.arrayIndex": "Show hints of array index when constructing a table.",
     "config.hint.arrayIndex.Auto": "Show hints only when the table is greater than 3 items, or the table is a mixed table.",
@@ -88,6 +103,7 @@
     "config.misc.parameters": "[Command line parameters](https://github.com/sumneko/lua-telemetry-server/tree/master/method) when starting the language service in VSCode.",
     "config.runtime.builtin": "Adjust the enabled state of the built-in library. You can disable (or redefine) the non-existent library according to the actual runtime environment.\n\n* `default`: Indicates that the library will be enabled or disabled according to the runtime version\n* `enable`: always enable\n* `disable`: always disable\n",
     "config.runtime.fileEncoding": "File encoding. The `ansi` option is only available under the `Windows` platform.",
+    "config.runtime.meta": "Format of the directory name of the meta files.",
     "config.runtime.nonstandardSymbol": "Supports non-standard symbols. Make sure that your runtime environment supports these symbols.",
     "config.runtime.path": "When using `require`, how to find the file based on the input name.\nSetting this config to `?/init.lua` means that when you enter `require 'myfile'`, `${workspace}/myfile/init.lua` will be searched from the loaded files.\nif `runtime.pathStrict` is `false`, `${workspace}/**/myfile/init.lua` will also be searched.\nIf you want to load files outside the workspace, you need to set `Lua.workspace.library` first.\n",
     "config.runtime.pathStrict": "When enabled, `runtime.path` will only search the first level of directories, see the description of `runtime.path`.",
@@ -100,6 +116,7 @@
     "config.semantic.keyword": "Semantic coloring of keywords/literals/operators. You only need to enable this feature if your editor cannot do syntax coloring.",
     "config.semantic.variable": "Semantic coloring of variables/fields/parameters.",
     "config.signatureHelp.enable": "Enable signature help.",
+    "config.spell.dict": "Custom words for spell checking.",
     "config.telemetry.enable": "Enable telemetry to send your editor information and error logs over the network. Read our privacy policy [here](https://github.com/sumneko/lua-language-server/wiki/Privacy-Policy).\n",
     "config.window.progressBar": "Show progress bar in status bar.",
     "config.window.statusBar": "Show extension status in status bar.",
diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json
index fd05d1f91b2e5e9bac7b1d8570d37a93374ace7e..d67f6319f249ec3ba8d5ad54d33f1baa6cb39f5e 100644
--- a/package.nls.pt-br.json
+++ b/package.nls.pt-br.json
@@ -29,14 +29,21 @@
     "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.ambiguity": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
     "config.diagnostics.ambiguity-1": "优先级歧义,如:`num or 0 + 1`,推测用户的实际期望为 `(num or 0) + 1` ",
+    "config.diagnostics.await": "* await-in-sync\n* not-yieldable",
+    "config.diagnostics.codestyle": "* codestyle-check\n* spell-check",
     "config.diagnostics.disable": "Disabled diagnostic (Use code in hover brackets).",
     "config.diagnostics.disableScheme": "Do not diagnose Lua files that use the following scheme.",
+    "config.diagnostics.duplicate": "* duplicate-index\n* duplicate-set-field",
     "config.diagnostics.duplicate-index": "在字面量表中重复定义了索引",
     "config.diagnostics.empty-block": "空代码块",
     "config.diagnostics.enable": "Enable diagnostics.",
+    "config.diagnostics.global": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
     "config.diagnostics.global-in-nil-env": "不能使用全局变量( `_ENV` 被设置为了 `nil`)",
     "config.diagnostics.globals": "Defined global variables.",
+    "config.diagnostics.groupFileStatus": "Modify the diagnostic needed file status in a group.\n\n* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* None:    disable this diagnostic\n\n`Fallback` means that diagnostics in this group are controlled by `diagnostics.neededFileStatus` separately.\nOther settings will override individual settings without end of `!`.\n",
+    "config.diagnostics.groupSeverity": "Modify the diagnostic severity in a group.\n`Fallback` means that diagnostics in this group are controlled by `diagnostics.severity` separately.\nOther settings will override individual settings without end of `!`.\n",
     "config.diagnostics.ignoredFiles": "How to diagnose ignored files.",
     "config.diagnostics.ignoredFiles.Disable": "These files are not diagnosed.",
     "config.diagnostics.ignoredFiles.Enable": "Always diagnose these files.",
@@ -46,22 +53,30 @@
     "config.diagnostics.libraryFiles.Enable": "Always diagnose these files.",
     "config.diagnostics.libraryFiles.Opened": "Only when these files are opened will it be diagnosed.",
     "config.diagnostics.lowercase-global": "首字母小写的全局变量定义",
-    "config.diagnostics.neededFileStatus": "* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* Disable: disable this diagnostic\n",
+    "config.diagnostics.luadoc": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+    "config.diagnostics.neededFileStatus": "* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* None:    disable this diagnostic\n\nEnd with `!` means override the group setting `diagnostics.groupFileStatus`.\n",
     "config.diagnostics.newfield-call": "在字面量表中,2行代码之间缺少分隔符,在语法上被解析为了一次索引操作",
     "config.diagnostics.newline-call": "以 `(` 开始的新行,在语法上被解析为了上一行的函数调用",
+    "config.diagnostics.redefined": "* redefined-local",
     "config.diagnostics.redefined-local": "重复定义的局部变量",
     "config.diagnostics.redundant-parameter": "函数调用时,传入了多余的参数",
     "config.diagnostics.redundant-value": "赋值操作时,值的数量比被赋值的对象多",
-    "config.diagnostics.severity": "Modified diagnostic severity.",
+    "config.diagnostics.severity": "Modify the diagnostic severity.\n\nEnd with `!` means override the group setting `diagnostics.groupSeverity`.\n",
+    "config.diagnostics.strict": "* close-non-object\n* deprecated\n* discard-returns",
+    "config.diagnostics.strong": "* no-unknown",
     "config.diagnostics.trailing-space": "后置空格",
+    "config.diagnostics.type-check": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+    "config.diagnostics.unbalanced": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
     "config.diagnostics.undefined-env-child": "`_ENV` 被设置为了新的字面量表,但是试图获取的全局变量不再这张表中",
     "config.diagnostics.undefined-global": "未定义的全局变量",
+    "config.diagnostics.unused": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
     "config.diagnostics.unused-function": "未使用的函数",
     "config.diagnostics.unused-label": "未使用的标签",
     "config.diagnostics.unused-local": "未使用的局部变量",
     "config.diagnostics.unused-vararg": "未使用的不定参数",
     "config.diagnostics.workspaceDelay": "Latency (milliseconds) for workspace diagnostics. When you start the workspace, or edit any file, the entire workspace will be re-diagnosed in the background. Set to negative to disable workspace diagnostics.",
     "config.diagnostics.workspaceRate": "Workspace diagnostics run rate (%). Decreasing this value reduces CPU usage, but also reduces the speed of workspace diagnostics. The diagnosis of the file you are currently editing is always done at full speed and is not affected by this setting.",
+    "config.format.defaultConfig": "The default format configuration. Has a lower priority than `.editorconfig` file in the workspace.\nRead [formatter docs](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs) to learn usage.\n",
     "config.format.enable": "Enable code formatter.",
     "config.hint.arrayIndex": "Show hints of array index when constructing a table.",
     "config.hint.arrayIndex.Auto": "Show hints only when the table is greater than 3 items, or the table is a mixed table.",
@@ -88,6 +103,7 @@
     "config.misc.parameters": "[Command line parameters](https://github.com/sumneko/lua-telemetry-server/tree/master/method) when starting the language service in VSCode.",
     "config.runtime.builtin": "Adjust the enabled state of the built-in library. You can disable (or redefine) the non-existent library according to the actual runtime environment.\n\n* `default`: Indicates that the library will be enabled or disabled according to the runtime version\n* `enable`: always enable\n* `disable`: always disable\n",
     "config.runtime.fileEncoding": "File encoding. The `ansi` option is only available under the `Windows` platform.",
+    "config.runtime.meta": "Format of the directory name of the meta files.",
     "config.runtime.nonstandardSymbol": "Supports non-standard symbols. Make sure that your runtime environment supports these symbols.",
     "config.runtime.path": "When using `require`, how to find the file based on the input name.\nSetting this config to `?/init.lua` means that when you enter `require 'myfile'`, `${workspace}/myfile/init.lua` will be searched from the loaded files.\nif `runtime.pathStrict` is `false`, `${workspace}/**/myfile/init.lua` will also be searched.\nIf you want to load files outside the workspace, you need to set `Lua.workspace.library` first.\n",
     "config.runtime.pathStrict": "When enabled, `runtime.path` will only search the first level of directories, see the description of `runtime.path`.",
@@ -100,6 +116,7 @@
     "config.semantic.keyword": "Semantic coloring of keywords/literals/operators. You only need to enable this feature if your editor cannot do syntax coloring.",
     "config.semantic.variable": "Semantic coloring of variables/fields/parameters.",
     "config.signatureHelp.enable": "Enable signature help.",
+    "config.spell.dict": "Custom words for spell checking.",
     "config.telemetry.enable": "Enable telemetry to send your editor information and error logs over the network. Read our privacy policy [here](https://github.com/sumneko/lua-language-server/wiki/Privacy-Policy).\n",
     "config.window.progressBar": "Show progress bar in status bar.",
     "config.window.statusBar": "Show extension status in status bar.",
diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json
index 057926e68e168f6420d96bff1ce9bf5f9449455d..906bd97b9f524534ac7d2f0be4f253a91d44004a 100644
--- a/package.nls.zh-cn.json
+++ b/package.nls.zh-cn.json
@@ -29,14 +29,21 @@
     "config.develop.debuggerPort": "调试器监听端口。",
     "config.develop.debuggerWait": "调试器连接之前挂起。",
     "config.develop.enable": "开发者模式。请勿开启,会影响性能。",
+    "config.diagnostics.ambiguity": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
     "config.diagnostics.ambiguity-1": "优先级歧义,如:`num or 0 + 1`,推测用户的实际期望为 `(num or 0) + 1` ",
+    "config.diagnostics.await": "* await-in-sync\n* not-yieldable",
+    "config.diagnostics.codestyle": "* codestyle-check\n* spell-check",
     "config.diagnostics.disable": "禁用的诊断(使用浮框括号内的代码)。",
     "config.diagnostics.disableScheme": "不诊断使用以下 scheme 的lua文件。",
+    "config.diagnostics.duplicate": "* duplicate-index\n* duplicate-set-field",
     "config.diagnostics.duplicate-index": "在字面量表中重复定义了索引",
     "config.diagnostics.empty-block": "空代码块",
     "config.diagnostics.enable": "启用诊断。",
+    "config.diagnostics.global": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
     "config.diagnostics.global-in-nil-env": "不能使用全局变量( `_ENV` 被设置为了 `nil`)",
     "config.diagnostics.globals": "已定义的全局变量。",
+    "config.diagnostics.groupFileStatus": "批量修改一个组中的文件状态。\n\n* Opened:  只诊断打开的文件\n* Any:     诊断任何文件\n* None:    禁用此诊断\n\n设置为 `Fallback` 意味着组中的诊断由 `diagnostics.neededFileStatus` 单独设置。\n其他设置将覆盖单独设置,但是不会覆盖以 `!` 结尾的设置。\n",
+    "config.diagnostics.groupSeverity": "批量修改一个组中的诊断等级。\n设置为 `Fallback` 意味着组中的诊断由 `diagnostics.severity` 单独设置。\n其他设置将覆盖单独设置,但是不会覆盖以 `!` 结尾的设置。\n",
     "config.diagnostics.ignoredFiles": "如何诊断被忽略的文件。",
     "config.diagnostics.ignoredFiles.Disable": "不诊断这些文件。",
     "config.diagnostics.ignoredFiles.Enable": "总是诊断这些文件。",
@@ -46,22 +53,30 @@
     "config.diagnostics.libraryFiles.Enable": "总是诊断这些文件。",
     "config.diagnostics.libraryFiles.Opened": "只有打开这些文件时才会诊断。",
     "config.diagnostics.lowercase-global": "首字母小写的全局变量定义",
-    "config.diagnostics.neededFileStatus": "* Opened:  只诊断打开的文件\n* Any:     诊断任何文件\n* Disable: 禁用此诊断\n",
+    "config.diagnostics.luadoc": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+    "config.diagnostics.neededFileStatus": "* Opened:  只诊断打开的文件\n* Any:     诊断任何文件\n* None:    禁用此诊断\n\n以 `!` 结尾的设置优先级高于组设置 `diagnostics.groupFileStatus`。\n",
     "config.diagnostics.newfield-call": "在字面量表中,2行代码之间缺少分隔符,在语法上被解析为了一次索引操作",
     "config.diagnostics.newline-call": "以 `(` 开始的新行,在语法上被解析为了上一行的函数调用",
+    "config.diagnostics.redefined": "* redefined-local",
     "config.diagnostics.redefined-local": "重复定义的局部变量",
     "config.diagnostics.redundant-parameter": "函数调用时,传入了多余的参数",
     "config.diagnostics.redundant-value": "赋值操作时,值的数量比被赋值的对象多",
-    "config.diagnostics.severity": "修改诊断等级。",
+    "config.diagnostics.severity": "修改诊断等级。\n以 `!` 结尾的设置优先级高于组设置 `diagnostics.groupSeverity`。\n",
+    "config.diagnostics.strict": "* close-non-object\n* deprecated\n* discard-returns",
+    "config.diagnostics.strong": "* no-unknown",
     "config.diagnostics.trailing-space": "后置空格",
+    "config.diagnostics.type-check": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+    "config.diagnostics.unbalanced": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
     "config.diagnostics.undefined-env-child": "`_ENV` 被设置为了新的字面量表,但是试图获取的全局变量不再这张表中",
     "config.diagnostics.undefined-global": "未定义的全局变量",
+    "config.diagnostics.unused": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
     "config.diagnostics.unused-function": "未使用的函数",
     "config.diagnostics.unused-label": "未使用的标签",
     "config.diagnostics.unused-local": "未使用的局部变量",
     "config.diagnostics.unused-vararg": "未使用的不定参数",
     "config.diagnostics.workspaceDelay": "进行工作区诊断的延迟(毫秒)。当你启动工作区,或编辑了任意文件后,将会在后台对整个工作区进行重新诊断。设置为负数可以禁用工作区诊断。",
     "config.diagnostics.workspaceRate": "工作区诊断的运行速率(百分比)。降低该值会减少CPU占用,但是也会降低工作区诊断的速度。你当前正在编辑的文件的诊断总是全速完成,不受该选项影响。",
+    "config.format.defaultConfig": "默认的格式化配置,优先级低于工作区内的 `.editorconfig` 文件。\n请查阅[格式化文档](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs)了解用法。\n",
     "config.format.enable": "启用代码格式化程序。",
     "config.hint.arrayIndex": "在构造表时提示数组索引。",
     "config.hint.arrayIndex.Auto": "只有表大于3项,或者表是混合类型时才进行提示。",
@@ -88,6 +103,7 @@
     "config.misc.parameters": "VSCode中启动语言服务时的[命令行参数](https://github.com/sumneko/lua-language-server/wiki/Command-line)。",
     "config.runtime.builtin": "调整内置库的启用状态,你可以根据实际运行环境禁用掉不存在的库(或重新定义)。\n\n* `default`: 表示库会根据运行版本启用或禁用\n* `enable`: 总是启用\n* `disable`: 总是禁用\n",
     "config.runtime.fileEncoding": "文件编码,`ansi` 选项只在 `Windows` 平台下有效。",
+    "config.runtime.meta": "meta文件的目录名称格式。",
     "config.runtime.nonstandardSymbol": "支持非标准的符号。请务必确认你的运行环境支持这些符号。",
     "config.runtime.path": "当使用 `require` 时,如何根据输入的名字来查找文件。\n此选项设置为 `?/init.lua` 意味着当你输入 `require 'myfile'` 时,会从已加载的文件中搜索 `{workspace}/myfile/init.lua`。\n当 `runtime.pathStrict` 设置为 `false` 时,还会尝试搜索 `${workspace}/**/myfile/init.lua`。\n如果你想要加载工作区以外的文件,你需要先设置 `Lua.workspace.library`。\n",
     "config.runtime.pathStrict": "启用后 `runtime.path` 将只搜索第一层目录,见 `runtime.path` 的说明。",
@@ -100,6 +116,7 @@
     "config.semantic.keyword": "对关键字/字面量/运算符进行语义着色。只有当你的编辑器无法进行语法着色时才需要启用此功能。",
     "config.semantic.variable": "对变量/字段/参数进行语义着色。",
     "config.signatureHelp.enable": "启用参数提示。",
+    "config.spell.dict": "拼写检查的自定义单词。",
     "config.telemetry.enable": "启用遥测,通过网络发送你的编辑器信息与错误日志。在[此处](https://github.com/sumneko/lua-language-server/wiki/%E9%9A%90%E7%A7%81%E5%A3%B0%E6%98%8E)阅读我们的隐私声明。\n",
     "config.window.progressBar": "在状态栏显示进度条。",
     "config.window.statusBar": "在状态栏显示插件状态。",
diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json
index 292315a131948cf657927e8ad0cd6cff41982ccd..f1aa7d18288926aaa2c6e1f460a1a6cee36403e2 100644
--- a/package.nls.zh-tw.json
+++ b/package.nls.zh-tw.json
@@ -1,8 +1,8 @@
 {
-    "config.IntelliSense.traceBeSetted": "請查閲[文件](https://github.com/sumneko/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
-    "config.IntelliSense.traceFieldInject": "請查閲[文件](https://github.com/sumneko/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
-    "config.IntelliSense.traceLocalSet": "請查閲[文件](https://github.com/sumneko/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
-    "config.IntelliSense.traceReturn": "請查閲[文件](https://github.com/sumneko/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
+    "config.IntelliSense.traceBeSetted": "請查閱[文件](https://github.com/sumneko/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
+    "config.IntelliSense.traceFieldInject": "請查閱[文件](https://github.com/sumneko/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
+    "config.IntelliSense.traceLocalSet": "請查閱[文件](https://github.com/sumneko/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
+    "config.IntelliSense.traceReturn": "請查閱[文件](https://github.com/sumneko/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
     "config.color.mode": "著色模式。",
     "config.color.mode.Grammar": "語法著色。",
     "config.color.mode.Semantic": "語義著色。你可能需要同時將 `editor.semanticHighlighting.enabled` 設定為 `true` 才能生效。",
@@ -29,14 +29,21 @@
     "config.develop.debuggerPort": "除錯器監聽埠。",
     "config.develop.debuggerWait": "除錯器連接之前懸置。",
     "config.develop.enable": "開發者模式。請勿開啟,會影響效能。",
-    "config.diagnostics.ambiguity-1": "優先級歧義,如: `num or 0 + 1` ,推測使用者的實際期望為 `(num or 0) + 1`",
+    "config.diagnostics.ambiguity": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+    "config.diagnostics.ambiguity-1": "優先順序歧義,如: `num or 0 + 1` ,推測使用者的實際期望為 `(num or 0) + 1`",
+    "config.diagnostics.await": "* await-in-sync\n* not-yieldable",
+    "config.diagnostics.codestyle": "* codestyle-check\n* spell-check",
     "config.diagnostics.disable": "停用的診斷(使用浮框括號內的程式碼)。",
     "config.diagnostics.disableScheme": "不診斷使用以下 scheme 的lua檔案。",
+    "config.diagnostics.duplicate": "* duplicate-index\n* duplicate-set-field",
     "config.diagnostics.duplicate-index": "在字面常數表中重複定義了索引",
     "config.diagnostics.empty-block": "空程式碼區塊",
     "config.diagnostics.enable": "啟用診斷。",
-    "config.diagnostics.global-in-nil-env": "不能使用全域變數( `_ENV` 被設定為了 `nil`)",
+    "config.diagnostics.global": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+    "config.diagnostics.global-in-nil-env": "不能使用全域變數( `_ENV` 被設定為 `nil`)",
     "config.diagnostics.globals": "已定義的全域變數。",
+    "config.diagnostics.groupFileStatus": "批量修改一個組中的檔案狀態。\n\n* Opened:  只診斷打開的檔案\n* Any:     診斷所有檔案\n* None:    停用此診斷\n\n設定為 `Fallback` 意味著組中的診斷由 `diagnostics.neededFileStatus` 單獨設定。\n其他設定將覆蓋單獨設定,但是不會覆蓋以 `!` 結尾的設定。\n",
+    "config.diagnostics.groupSeverity": "批量修改一個組中的診斷等級。\n設定為 `Fallback` 意味著組中的診斷由 `diagnostics.severity` 單獨設定。\n其他設定將覆蓋單獨設定,但是不會覆蓋以 `!` 結尾的設定。\n",
     "config.diagnostics.ignoredFiles": "如何診斷被忽略的檔案。",
     "config.diagnostics.ignoredFiles.Disable": "不診斷這些檔案。",
     "config.diagnostics.ignoredFiles.Enable": "總是診斷這些檔案。",
@@ -46,61 +53,71 @@
     "config.diagnostics.libraryFiles.Enable": "總是診斷這些檔案。",
     "config.diagnostics.libraryFiles.Opened": "只有打開這些檔案時才會診斷。",
     "config.diagnostics.lowercase-global": "首字母小寫的全域變數定義",
-    "config.diagnostics.neededFileStatus": "* Opened:  只診斷打開的檔案\n* Any:     診斷任何檔案\n* Disable: 停用此診斷\n",
+    "config.diagnostics.luadoc": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+    "config.diagnostics.neededFileStatus": "* Opened:  只診斷打開的檔案\n* Any:     診斷所有檔案\n* None:    停用此診斷\n\n以 `!` 結尾的設定優先順序高於組設定 `diagnostics.groupFileStatus`。\n",
     "config.diagnostics.newfield-call": "在字面常數表中,2行程式碼之間缺少分隔符,在語法上被解析為了一次索引操作",
     "config.diagnostics.newline-call": "以 `(` 開始的新行,在語法上被解析為了上一行的函式呼叫",
+    "config.diagnostics.redefined": "* redefined-local",
     "config.diagnostics.redefined-local": "重複定義的區域變數",
     "config.diagnostics.redundant-parameter": "函式呼叫時,傳入了多餘的引數",
     "config.diagnostics.redundant-value": "賦值操作時,值的數量比被賦值的對象多",
-    "config.diagnostics.severity": "修改診斷等級。",
+    "config.diagnostics.severity": "修改診斷等級。\n以 `!` 結尾的設定優先順序高於組設定 `diagnostics.groupSeverity`。\n",
+    "config.diagnostics.strict": "* close-non-object\n* deprecated\n* discard-returns",
+    "config.diagnostics.strong": "* no-unknown",
     "config.diagnostics.trailing-space": "後置空格",
+    "config.diagnostics.type-check": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+    "config.diagnostics.unbalanced": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
     "config.diagnostics.undefined-env-child": "`_ENV` 被設定為了新的字面常數表,但是試圖獲取的全域變數不在這張表中",
     "config.diagnostics.undefined-global": "未定義的全域變數",
+    "config.diagnostics.unused": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
     "config.diagnostics.unused-function": "未使用的函式",
     "config.diagnostics.unused-label": "未使用的標籤",
     "config.diagnostics.unused-local": "未使用的區域變數",
     "config.diagnostics.unused-vararg": "未使用的不定引數",
-    "config.diagnostics.workspaceDelay": "進行工作區診斷的延遲(毫秒)。當你啟動工作區,或編輯了任意檔案後,將會在背景對整個工作區進行重新診斷。設定為負數可以停用工作區診斷。",
-    "config.diagnostics.workspaceRate": "工作區診斷的執行速率(百分比)。降低該值會減少CPU佔用,但是也會降低工作區診斷的速度。你目前正在編輯的檔案的診斷總是全速完成,不受該選項影響。",
+    "config.diagnostics.workspaceDelay": "進行工作區診斷的延遲(毫秒)。當你啟動工作區,或編輯了任何檔案後,將會在背景對整個工作區進行重新診斷。設定為負數可以停用工作區診斷。",
+    "config.diagnostics.workspaceRate": "工作區診斷的執行速率(百分比)。降低該值會減少CPU使用率,但是也會降低工作區診斷的速度。你目前正在編輯的檔案的診斷總是全速完成,不受該選項影響。",
+    "config.format.defaultConfig": "預設的格式化組態,優先順序低於工作區內的 `.editorconfig` 檔案。\n請查閱[格式化文件](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs)了解用法。\n",
     "config.format.enable": "啟用程式碼格式化程式。",
     "config.hint.arrayIndex": "在建構表時提示陣列索引。",
-    "config.hint.arrayIndex.Auto": "只有表大於3項,或者表是混合型別時才進行提示。",
+    "config.hint.arrayIndex.Auto": "只有表大於3項,或者表是混合類型時才進行提示。",
     "config.hint.arrayIndex.Disable": "停用陣列索引提示。",
     "config.hint.arrayIndex.Enable": "所有的表中都提示陣列索引。",
-    "config.hint.await": "If the called function is marked `---@async`, prompt `await` at the call.",
+    "config.hint.await": "如果呼叫的函數被標記為了 `---@async`,則在呼叫處提示 `await`。",
     "config.hint.enable": "啟用內嵌提示。",
     "config.hint.paramName": "在函式呼叫處提示參數名。",
-    "config.hint.paramName.All": "所有型別的參數均進行提示。",
+    "config.hint.paramName.All": "所有類型的參數均進行提示。",
     "config.hint.paramName.Disable": "停用參數提示。",
-    "config.hint.paramName.Literal": "只有字面常數型別的參數進行提示。",
-    "config.hint.paramType": "在函式的參數位置提示型別。",
-    "config.hint.setType": "在賦值操作位置提示型別。",
+    "config.hint.paramName.Literal": "只有字面常數類型的參數進行提示。",
+    "config.hint.paramType": "在函式的參數位置提示類型。",
+    "config.hint.setType": "在賦值操作位置提示類型。",
     "config.hover.enable": "啟用懸浮提示。",
-    "config.hover.enumsLimit": "當值對應多個型別時,限制型別的顯示數量。",
-    "config.hover.expandAlias": "Whether to expand the alias. For example, expands `---@alias myType boolean|number` appears as `boolean|number`, otherwise it appears as `myType'.\n",
-    "config.hover.fieldInfer": "懸浮提示檢視表時,會對表的每個欄位進行型別推測,當型別推測的用時累計達到該設定值(毫秒)時,將跳過後續欄位的型別推測。",
+    "config.hover.enumsLimit": "當值對應多個類型時,限制類型的顯示數量。",
+    "config.hover.expandAlias": "是否展開別名。例如 `---@alias myType boolean|number` 展開後顯示為 `boolean|number`,否則顯示為 `myType'。\n",
+    "config.hover.fieldInfer": "懸浮提示檢視表時,會對表的每個欄位進行類型推測,當類型推測的用時累計達到該設定值(毫秒)時,將跳過後續欄位的類型推測。",
     "config.hover.previewFields": "懸浮提示檢視表時,限制表內欄位的最大預覽數量。",
     "config.hover.viewNumber": "懸浮提示檢視數字內容(僅當字面常數不是十進制時)。",
     "config.hover.viewString": "懸浮提示檢視字串內容(僅當字面常數包含跳脫字元時)。",
     "config.hover.viewStringMax": "懸浮提示檢視字串內容時的最大長度。",
-    "config.intelliSense.fastGlobal": "在對全域變數進行補全,及檢視 `_G` 的懸浮提示時進行最佳化。這會略微降低型別推測的準確度,但是對於大量使用全域變數的專案會有大幅的效能提升。",
+    "config.intelliSense.fastGlobal": "在對全域變數進行補全,及檢視 `_G` 的懸浮提示時進行最佳化。這會略微降低類型推測的準確度,但是對於大量使用全域變數的專案會有大幅的效能提升。",
     "config.intelliSense.searchDepth": "設定智慧感知的搜尋深度。增大該值可以增加準確度,但會降低效能。不同的工作區對該設定的容忍度差異較大,請自己調整為合適的值。",
-    "config.misc.parameters": "VSCode中啟動語言服務時的[命令列參數](https://github.com/sumneko/lua-language-server/wiki/Command-line)。",
-    "config.runtime.builtin": "調整內建庫的啟用狀態,你可以根據實際執行環境停用不存在的庫(或重新定義)。\n\n* `default`: 表示庫會根據執行版本啟用或停用\n* `enable`: 總是啟用\n* `disable`: 總是停用\n",
-    "config.runtime.fileEncoding": "檔案編碼,`ansi` 選項只在 `Windows` 平台下有效。",
+    "config.misc.parameters": "VSCode中啟動語言伺服時的[命令列參數](https://github.com/sumneko/lua-language-server/wiki/Command-line)。",
+    "config.runtime.builtin": "調整內建庫的啟用狀態,你可以根據實際執行環境停用(或重新定義)不存在的庫。\n\n* `default`: 表示庫會根據執行版本啟用或停用\n* `enable`: 總是啟用\n* `disable`: 總是停用\n",
+    "config.runtime.fileEncoding": "檔案編碼,選項 `ansi` 只在 `Windows` 平台下有效。",
+    "config.runtime.meta": "meta檔案的目錄名稱格式",
     "config.runtime.nonstandardSymbol": "支援非標準的符號。請務必確認你的執行環境支援這些符號。",
     "config.runtime.path": "當使用 `require` 時,如何根據輸入的名字來尋找檔案。\n此選項設定為 `?/init.lua` 意味著當你輸入 `require 'myfile'` 時,會從已載入的檔案中搜尋 `{workspace}/myfile/init.lua`。\n當 `runtime.pathStrict` 設定為 `false` 時,還會嘗試搜尋 `${workspace}/**/myfile/init.lua`。\n如果你想要載入工作區以外的檔案,你需要先設定 `Lua.workspace.library`。\n",
     "config.runtime.pathStrict": "啟用後 `runtime.path` 將只搜尋第一層目錄,見 `runtime.path` 的説明。",
-    "config.runtime.plugin": "延伸模組路徑,請查閲[文件](https://github.com/sumneko/lua-language-server/wiki/Plugin)瞭解用法。",
-    "config.runtime.special": "將自訂全域變數視為一些特殊的內建變數,語言服務將提供特殊的支援。\n下面這個例子表示將 `include` 視為 `require` 。\n```json\n\"Lua.runtime.special\" : {\n    \"include\" : \"require\"\n}\n```\n",
+    "config.runtime.plugin": "延伸模組路徑,請查閱[文件](https://github.com/sumneko/lua-language-server/wiki/Plugin)瞭解用法。",
+    "config.runtime.special": "將自訂全域變數視為一些特殊的內建變數,語言伺服將提供特殊的支援。\n下面這個例子表示將 `include` 視為 `require` 。\n```json\n\"Lua.runtime.special\" : {\n    \"include\" : \"require\"\n}\n```\n",
     "config.runtime.unicodeName": "允許在名字中使用 Unicode 字元。",
     "config.runtime.version": "Lua執行版本。",
-    "config.semantic.annotation": "對型別註解進行語義著色。",
+    "config.semantic.annotation": "對類型註解進行語義著色。",
     "config.semantic.enable": "啟用語義著色。你可能需要同時將 `editor.semanticHighlighting.enabled` 設定為 `true` 才能生效。",
     "config.semantic.keyword": "對關鍵字/字面常數/運算子進行語義著色。只有當你的編輯器無法進行語法著色時才需要啟用此功能。",
     "config.semantic.variable": "對變數/欄位/參數進行語義著色。",
     "config.signatureHelp.enable": "啟用參數提示。",
-    "config.telemetry.enable": "啟用遙測,透過網路發送你的編輯器資訊與錯誤日誌。在[此處](https://github.com/sumneko/lua-language-server/wiki/%E9%9A%B1%E7%A7%81%E8%81%B2%E6%98%8E)閲讀我們的隱私聲明。\n",
+    "config.spell.dict": "拼寫檢查的自訂單詞。",
+    "config.telemetry.enable": "啟用遙測,透過網路發送你的編輯器資訊與錯誤日誌。在[此處](https://github.com/sumneko/lua-language-server/wiki/%E9%9A%B1%E7%A7%81%E8%81%B2%E6%98%8E)閱讀我們的隱私聲明。\n",
     "config.window.progressBar": "在狀態欄顯示進度條。",
     "config.window.statusBar": "在狀態欄顯示延伸模組狀態。",
     "config.workspace.checkThirdParty": "自動偵測與適應第三方庫,目前支援的庫為:\n\n* OpenResty\n* Cocos4.0\n* LÖVE\n* LÖVR\n* skynet\n* Jass\n",
@@ -109,7 +126,7 @@
     "config.workspace.library": "除了目前工作區以外,還會從哪些目錄中載入檔案。這些目錄中的檔案將被視作外部提供的程式碼庫,部分操作(如重新命名欄位)不會修改這些檔案。",
     "config.workspace.maxPreload": "最大預載入檔案數。",
     "config.workspace.preloadFileSize": "預載入時跳過大小大於該值(KB)的檔案。",
-    "config.workspace.supportScheme": "為以下 `scheme` 的lua檔案提供語言服務。",
+    "config.workspace.supportScheme": "為以下 `scheme` 的lua檔案提供語言伺服。",
     "config.workspace.useGitIgnore": "忽略 `.gitignore` 中列舉的檔案。",
     "config.workspace.userThirdParty": "在這裡添加私有的第三方庫適應檔案路徑,請參考內建的[組態檔案路徑](https://github.com/sumneko/lua-language-server/tree/master/meta/3rd)"
 }
\ No newline at end of file
diff --git a/setting/schema-pt-br.json b/setting/schema-pt-br.json
index 98ca2e3d79804fb04a06b4d615519f5339746a60..a21a4013225025fafb9b3f4ca60e5146866086e6 100644
--- a/setting/schema-pt-br.json
+++ b/setting/schema-pt-br.json
@@ -139,6 +139,12 @@
                 "globals": {
                     "$ref": "#/properties/diagnostics.globals"
                 },
+                "groupFileStatus": {
+                    "$ref": "#/properties/diagnostics.groupFileStatus"
+                },
+                "groupSeverity": {
+                    "$ref": "#/properties/diagnostics.groupSeverity"
+                },
                 "ignoredFiles": {
                     "$ref": "#/properties/diagnostics.ignoredFiles"
                 },
@@ -194,6 +200,300 @@
             "scope": "resource",
             "type": "array"
         },
+        "diagnostics.groupFileStatus": {
+            "additionalProperties": false,
+            "markdownDescription": "Modify the diagnostic needed file status in a group.\n\n* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* None:    disable this diagnostic\n\n`Fallback` means that diagnostics in this group are controlled by `diagnostics.neededFileStatus` separately.\nOther settings will override individual settings without end of `!`.\n",
+            "properties": {
+                "ambiguity": {
+                    "default": "Fallback",
+                    "description": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "await": {
+                    "default": "Fallback",
+                    "description": "* await-in-sync\n* not-yieldable",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "codestyle": {
+                    "default": "Fallback",
+                    "description": "* codestyle-check\n* spell-check",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "duplicate": {
+                    "default": "Fallback",
+                    "description": "* duplicate-index\n* duplicate-set-field",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "global": {
+                    "default": "Fallback",
+                    "description": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "luadoc": {
+                    "default": "Fallback",
+                    "description": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "redefined": {
+                    "default": "Fallback",
+                    "description": "* redefined-local",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strict": {
+                    "default": "Fallback",
+                    "description": "* close-non-object\n* deprecated\n* discard-returns",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strong": {
+                    "default": "Fallback",
+                    "description": "* no-unknown",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "type-check": {
+                    "default": "Fallback",
+                    "description": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unbalanced": {
+                    "default": "Fallback",
+                    "description": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unused": {
+                    "default": "Fallback",
+                    "description": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                }
+            },
+            "scope": "resource",
+            "title": "groupFileStatus",
+            "type": "object"
+        },
+        "diagnostics.groupSeverity": {
+            "additionalProperties": false,
+            "markdownDescription": "Modify the diagnostic severity in a group.\n`Fallback` means that diagnostics in this group are controlled by `diagnostics.severity` separately.\nOther settings will override individual settings without end of `!`.\n",
+            "properties": {
+                "ambiguity": {
+                    "default": "Fallback",
+                    "description": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "await": {
+                    "default": "Fallback",
+                    "description": "* await-in-sync\n* not-yieldable",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "codestyle": {
+                    "default": "Fallback",
+                    "description": "* codestyle-check\n* spell-check",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "duplicate": {
+                    "default": "Fallback",
+                    "description": "* duplicate-index\n* duplicate-set-field",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "global": {
+                    "default": "Fallback",
+                    "description": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "luadoc": {
+                    "default": "Fallback",
+                    "description": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "redefined": {
+                    "default": "Fallback",
+                    "description": "* redefined-local",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strict": {
+                    "default": "Fallback",
+                    "description": "* close-non-object\n* deprecated\n* discard-returns",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strong": {
+                    "default": "Fallback",
+                    "description": "* no-unknown",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "type-check": {
+                    "default": "Fallback",
+                    "description": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unbalanced": {
+                    "default": "Fallback",
+                    "description": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unused": {
+                    "default": "Fallback",
+                    "description": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                }
+            },
+            "scope": "resource",
+            "title": "groupSeverity",
+            "type": "object"
+        },
         "diagnostics.ignoredFiles": {
             "default": "Opened",
             "enum": [
@@ -228,7 +528,7 @@
         },
         "diagnostics.neededFileStatus": {
             "additionalProperties": false,
-            "markdownDescription": "* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* Disable: disable this diagnostic\n",
+            "markdownDescription": "* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* None:    disable this diagnostic\n\nEnd with `!` means override the group setting `diagnostics.groupFileStatus`.\n",
             "properties": {
                 "ambiguity-1": {
                     "default": "Any",
@@ -236,7 +536,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "assign-type-mismatch": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.assign-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -246,7 +562,36 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "cast-local-type": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.cast-local-type%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "cast-type-mismatch": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.cast-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -256,7 +601,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -266,7 +614,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -276,7 +627,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -286,7 +640,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -296,17 +653,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "deprecated": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.deprecated%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -316,17 +679,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "discard-returns": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.discard-returns%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -336,7 +705,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -346,7 +718,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -356,7 +731,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -366,7 +744,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -376,7 +757,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -386,7 +770,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -396,7 +783,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -406,7 +796,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -416,17 +809,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "missing-parameter": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.missing-parameter%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -436,7 +835,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -446,7 +848,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -456,7 +861,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -466,7 +874,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -476,7 +887,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "param-type-mismatch": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.param-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -486,17 +913,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "redundant-parameter": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "函数调用时,传入了多余的参数",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -506,17 +939,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "redundant-value": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "赋值操作时,值的数量比被赋值的对象多",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -526,7 +965,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -536,17 +978,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
-                    ],
-                    "type": "string"
-                },
-                "type-check": {
-                    "default": "None",
-                    "description": "%config.diagnostics.type-check%",
-                    "enum": [
-                        "Any",
-                        "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -556,7 +991,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -566,7 +1004,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -576,7 +1017,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -586,7 +1030,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -596,7 +1043,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -606,7 +1056,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -616,7 +1069,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "unknown-cast-variable": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.unknown-cast-variable%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -626,7 +1095,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -636,7 +1108,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -646,7 +1121,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -656,7 +1134,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -666,7 +1147,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 }
@@ -677,7 +1161,7 @@
         },
         "diagnostics.severity": {
             "additionalProperties": false,
-            "markdownDescription": "Modified diagnostic severity.",
+            "markdownDescription": "Modify the diagnostic severity.\n\nEnd with `!` means override the group setting `diagnostics.groupSeverity`.\n",
             "properties": {
                 "ambiguity-1": {
                     "default": "Warning",
@@ -686,7 +1170,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "assign-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.assign-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -697,7 +1200,41 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "cast-local-type": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.cast-local-type%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "cast-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.cast-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -708,7 +1245,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -719,7 +1260,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -730,7 +1275,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -741,7 +1290,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -752,7 +1305,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -763,7 +1320,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -774,7 +1335,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -785,7 +1350,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -796,7 +1365,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -807,7 +1380,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -818,7 +1395,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -829,7 +1410,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -840,7 +1425,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -851,7 +1440,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -862,7 +1455,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -873,7 +1470,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -884,7 +1485,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -895,7 +1500,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -906,7 +1515,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -917,29 +1530,41 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "newline-call": {
-                    "default": "Information",
+                    "default": "Warning",
                     "description": "以 `(` 开始的新行,在语法上被解析为了上一行的函数调用",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "no-unknown": {
-                    "default": "Information",
+                    "default": "Warning",
                     "description": "%config.diagnostics.no-unknown%",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -950,7 +1575,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "param-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.param-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -961,7 +1605,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -972,18 +1620,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "redundant-return": {
-                    "default": "Warning",
+                    "default": "Hint",
                     "description": "%config.diagnostics.redundant-return%",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -994,7 +1650,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1005,7 +1665,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1016,18 +1680,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
-                    ],
-                    "type": "string"
-                },
-                "type-check": {
-                    "default": "Warning",
-                    "description": "%config.diagnostics.type-check%",
-                    "enum": [
-                        "Error",
-                        "Warning",
-                        "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1038,7 +1695,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1049,7 +1710,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1060,7 +1725,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1071,7 +1740,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1082,7 +1755,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1093,7 +1770,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1104,7 +1785,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "unknown-cast-variable": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.unknown-cast-variable%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1115,7 +1815,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1126,7 +1830,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1137,7 +1845,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1148,7 +1860,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1159,7 +1875,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 }
@@ -1193,7 +1913,7 @@
         "format.defaultConfig": {
             "additionalProperties": false,
             "default": [],
-            "markdownDescription": "%config.format.defaultConfig%",
+            "markdownDescription": "The default format configuration. Has a lower priority than `.editorconfig` file in the workspace.\nRead [formatter docs](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs) to learn usage.\n",
             "patternProperties": {
                 ".*": {
                     "default": "",
@@ -1332,7 +2052,7 @@
             "type": "boolean"
         },
         "hover.previewFields": {
-            "default": 20,
+            "default": 50,
             "markdownDescription": "When hovering to view a table, limits the maximum number of previews for fields.",
             "scope": "resource",
             "type": "integer"
@@ -1584,7 +2304,7 @@
         },
         "runtime.meta": {
             "default": "${version} ${language} ${encoding}",
-            "markdownDescription": "%config.runtime.meta%",
+            "markdownDescription": "Format of the directory name of the meta files.",
             "scope": "resource",
             "type": "string"
         },
@@ -1754,7 +2474,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "%config.spell.dict%",
+            "markdownDescription": "Custom words for spell checking.",
             "scope": "resource",
             "type": "array"
         },
diff --git a/setting/schema-zh-cn.json b/setting/schema-zh-cn.json
index 6de51b5721e41ea7a6553f8304f706d7fbca839d..66ebf0a7b5da744a0252ff87b8d818cc0a6889d3 100644
--- a/setting/schema-zh-cn.json
+++ b/setting/schema-zh-cn.json
@@ -139,6 +139,12 @@
                 "globals": {
                     "$ref": "#/properties/diagnostics.globals"
                 },
+                "groupFileStatus": {
+                    "$ref": "#/properties/diagnostics.groupFileStatus"
+                },
+                "groupSeverity": {
+                    "$ref": "#/properties/diagnostics.groupSeverity"
+                },
                 "ignoredFiles": {
                     "$ref": "#/properties/diagnostics.ignoredFiles"
                 },
@@ -194,6 +200,300 @@
             "scope": "resource",
             "type": "array"
         },
+        "diagnostics.groupFileStatus": {
+            "additionalProperties": false,
+            "markdownDescription": "批量修改一个组中的文件状态。\n\n* Opened:  只诊断打开的文件\n* Any:     诊断任何文件\n* None:    禁用此诊断\n\n设置为 `Fallback` 意味着组中的诊断由 `diagnostics.neededFileStatus` 单独设置。\n其他设置将覆盖单独设置,但是不会覆盖以 `!` 结尾的设置。\n",
+            "properties": {
+                "ambiguity": {
+                    "default": "Fallback",
+                    "description": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "await": {
+                    "default": "Fallback",
+                    "description": "* await-in-sync\n* not-yieldable",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "codestyle": {
+                    "default": "Fallback",
+                    "description": "* codestyle-check\n* spell-check",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "duplicate": {
+                    "default": "Fallback",
+                    "description": "* duplicate-index\n* duplicate-set-field",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "global": {
+                    "default": "Fallback",
+                    "description": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "luadoc": {
+                    "default": "Fallback",
+                    "description": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "redefined": {
+                    "default": "Fallback",
+                    "description": "* redefined-local",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strict": {
+                    "default": "Fallback",
+                    "description": "* close-non-object\n* deprecated\n* discard-returns",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strong": {
+                    "default": "Fallback",
+                    "description": "* no-unknown",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "type-check": {
+                    "default": "Fallback",
+                    "description": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unbalanced": {
+                    "default": "Fallback",
+                    "description": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unused": {
+                    "default": "Fallback",
+                    "description": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                }
+            },
+            "scope": "resource",
+            "title": "groupFileStatus",
+            "type": "object"
+        },
+        "diagnostics.groupSeverity": {
+            "additionalProperties": false,
+            "markdownDescription": "批量修改一个组中的诊断等级。\n设置为 `Fallback` 意味着组中的诊断由 `diagnostics.severity` 单独设置。\n其他设置将覆盖单独设置,但是不会覆盖以 `!` 结尾的设置。\n",
+            "properties": {
+                "ambiguity": {
+                    "default": "Fallback",
+                    "description": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "await": {
+                    "default": "Fallback",
+                    "description": "* await-in-sync\n* not-yieldable",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "codestyle": {
+                    "default": "Fallback",
+                    "description": "* codestyle-check\n* spell-check",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "duplicate": {
+                    "default": "Fallback",
+                    "description": "* duplicate-index\n* duplicate-set-field",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "global": {
+                    "default": "Fallback",
+                    "description": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "luadoc": {
+                    "default": "Fallback",
+                    "description": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "redefined": {
+                    "default": "Fallback",
+                    "description": "* redefined-local",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strict": {
+                    "default": "Fallback",
+                    "description": "* close-non-object\n* deprecated\n* discard-returns",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strong": {
+                    "default": "Fallback",
+                    "description": "* no-unknown",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "type-check": {
+                    "default": "Fallback",
+                    "description": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unbalanced": {
+                    "default": "Fallback",
+                    "description": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unused": {
+                    "default": "Fallback",
+                    "description": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                }
+            },
+            "scope": "resource",
+            "title": "groupSeverity",
+            "type": "object"
+        },
         "diagnostics.ignoredFiles": {
             "default": "Opened",
             "enum": [
@@ -228,7 +528,7 @@
         },
         "diagnostics.neededFileStatus": {
             "additionalProperties": false,
-            "markdownDescription": "* Opened:  只诊断打开的文件\n* Any:     诊断任何文件\n* Disable: 禁用此诊断\n",
+            "markdownDescription": "* Opened:  只诊断打开的文件\n* Any:     诊断任何文件\n* None:    禁用此诊断\n\n以 `!` 结尾的设置优先级高于组设置 `diagnostics.groupFileStatus`。\n",
             "properties": {
                 "ambiguity-1": {
                     "default": "Any",
@@ -236,7 +536,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "assign-type-mismatch": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.assign-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -246,7 +562,36 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "cast-local-type": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.cast-local-type%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "cast-type-mismatch": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.cast-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -256,7 +601,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -266,7 +614,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -276,7 +627,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -286,7 +640,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -296,17 +653,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "deprecated": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.deprecated%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -316,17 +679,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "discard-returns": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.discard-returns%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -336,7 +705,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -346,7 +718,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -356,7 +731,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -366,7 +744,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -376,7 +757,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -386,7 +770,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -396,7 +783,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -406,7 +796,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -416,17 +809,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "missing-parameter": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.missing-parameter%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -436,7 +835,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -446,7 +848,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -456,7 +861,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -466,7 +874,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -476,7 +887,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "param-type-mismatch": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.param-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -486,17 +913,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "redundant-parameter": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "函数调用时,传入了多余的参数",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -506,17 +939,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "redundant-value": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "赋值操作时,值的数量比被赋值的对象多",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -526,7 +965,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -536,17 +978,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
-                    ],
-                    "type": "string"
-                },
-                "type-check": {
-                    "default": "None",
-                    "description": "%config.diagnostics.type-check%",
-                    "enum": [
-                        "Any",
-                        "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -556,7 +991,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -566,7 +1004,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -576,7 +1017,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -586,7 +1030,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -596,7 +1043,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -606,7 +1056,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -616,7 +1069,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "unknown-cast-variable": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.unknown-cast-variable%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -626,7 +1095,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -636,7 +1108,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -646,7 +1121,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -656,7 +1134,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -666,7 +1147,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 }
@@ -677,7 +1161,7 @@
         },
         "diagnostics.severity": {
             "additionalProperties": false,
-            "markdownDescription": "修改诊断等级。",
+            "markdownDescription": "修改诊断等级。\n以 `!` 结尾的设置优先级高于组设置 `diagnostics.groupSeverity`。\n",
             "properties": {
                 "ambiguity-1": {
                     "default": "Warning",
@@ -686,7 +1170,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "assign-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.assign-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -697,7 +1200,41 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "cast-local-type": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.cast-local-type%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "cast-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.cast-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -708,7 +1245,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -719,7 +1260,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -730,7 +1275,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -741,7 +1290,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -752,7 +1305,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -763,7 +1320,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -774,7 +1335,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -785,7 +1350,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -796,7 +1365,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -807,7 +1380,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -818,7 +1395,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -829,7 +1410,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -840,7 +1425,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -851,7 +1440,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -862,7 +1455,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -873,7 +1470,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -884,7 +1485,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -895,7 +1500,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -906,7 +1515,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -917,29 +1530,41 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "newline-call": {
-                    "default": "Information",
+                    "default": "Warning",
                     "description": "以 `(` 开始的新行,在语法上被解析为了上一行的函数调用",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "no-unknown": {
-                    "default": "Information",
+                    "default": "Warning",
                     "description": "%config.diagnostics.no-unknown%",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -950,7 +1575,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "param-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.param-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -961,7 +1605,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -972,18 +1620,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "redundant-return": {
-                    "default": "Warning",
+                    "default": "Hint",
                     "description": "%config.diagnostics.redundant-return%",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -994,7 +1650,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1005,7 +1665,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1016,18 +1680,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
-                    ],
-                    "type": "string"
-                },
-                "type-check": {
-                    "default": "Warning",
-                    "description": "%config.diagnostics.type-check%",
-                    "enum": [
-                        "Error",
-                        "Warning",
-                        "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1038,7 +1695,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1049,7 +1710,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1060,7 +1725,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1071,7 +1740,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1082,7 +1755,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1093,7 +1770,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1104,7 +1785,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "unknown-cast-variable": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.unknown-cast-variable%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1115,7 +1815,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1126,7 +1830,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1137,7 +1845,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1148,7 +1860,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1159,7 +1875,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 }
@@ -1193,7 +1913,7 @@
         "format.defaultConfig": {
             "additionalProperties": false,
             "default": [],
-            "markdownDescription": "%config.format.defaultConfig%",
+            "markdownDescription": "默认的格式化配置,优先级低于工作区内的 `.editorconfig` 文件。\n请查阅[格式化文档](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs)了解用法。\n",
             "patternProperties": {
                 ".*": {
                     "default": "",
@@ -1332,7 +2052,7 @@
             "type": "boolean"
         },
         "hover.previewFields": {
-            "default": 20,
+            "default": 50,
             "markdownDescription": "悬停提示查看表时,限制表内字段的最大预览数量。",
             "scope": "resource",
             "type": "integer"
@@ -1584,7 +2304,7 @@
         },
         "runtime.meta": {
             "default": "${version} ${language} ${encoding}",
-            "markdownDescription": "%config.runtime.meta%",
+            "markdownDescription": "meta文件的目录名称格式。",
             "scope": "resource",
             "type": "string"
         },
@@ -1754,7 +2474,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "%config.spell.dict%",
+            "markdownDescription": "拼写检查的自定义单词。",
             "scope": "resource",
             "type": "array"
         },
diff --git a/setting/schema-zh-tw.json b/setting/schema-zh-tw.json
index 93c0ba76b95dcac2c87377b13efc82c02019bee6..72660d6c2199ac4deff7179f482530137018e34d 100644
--- a/setting/schema-zh-tw.json
+++ b/setting/schema-zh-tw.json
@@ -139,6 +139,12 @@
                 "globals": {
                     "$ref": "#/properties/diagnostics.globals"
                 },
+                "groupFileStatus": {
+                    "$ref": "#/properties/diagnostics.groupFileStatus"
+                },
+                "groupSeverity": {
+                    "$ref": "#/properties/diagnostics.groupSeverity"
+                },
                 "ignoredFiles": {
                     "$ref": "#/properties/diagnostics.ignoredFiles"
                 },
@@ -194,6 +200,300 @@
             "scope": "resource",
             "type": "array"
         },
+        "diagnostics.groupFileStatus": {
+            "additionalProperties": false,
+            "markdownDescription": "批量修改一個組中的檔案狀態。\n\n* Opened:  只診斷打開的檔案\n* Any:     診斷所有檔案\n* None:    停用此診斷\n\n設定為 `Fallback` 意味著組中的診斷由 `diagnostics.neededFileStatus` 單獨設定。\n其他設定將覆蓋單獨設定,但是不會覆蓋以 `!` 結尾的設定。\n",
+            "properties": {
+                "ambiguity": {
+                    "default": "Fallback",
+                    "description": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "await": {
+                    "default": "Fallback",
+                    "description": "* await-in-sync\n* not-yieldable",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "codestyle": {
+                    "default": "Fallback",
+                    "description": "* codestyle-check\n* spell-check",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "duplicate": {
+                    "default": "Fallback",
+                    "description": "* duplicate-index\n* duplicate-set-field",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "global": {
+                    "default": "Fallback",
+                    "description": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "luadoc": {
+                    "default": "Fallback",
+                    "description": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "redefined": {
+                    "default": "Fallback",
+                    "description": "* redefined-local",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strict": {
+                    "default": "Fallback",
+                    "description": "* close-non-object\n* deprecated\n* discard-returns",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strong": {
+                    "default": "Fallback",
+                    "description": "* no-unknown",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "type-check": {
+                    "default": "Fallback",
+                    "description": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unbalanced": {
+                    "default": "Fallback",
+                    "description": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unused": {
+                    "default": "Fallback",
+                    "description": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                }
+            },
+            "scope": "resource",
+            "title": "groupFileStatus",
+            "type": "object"
+        },
+        "diagnostics.groupSeverity": {
+            "additionalProperties": false,
+            "markdownDescription": "批量修改一個組中的診斷等級。\n設定為 `Fallback` 意味著組中的診斷由 `diagnostics.severity` 單獨設定。\n其他設定將覆蓋單獨設定,但是不會覆蓋以 `!` 結尾的設定。\n",
+            "properties": {
+                "ambiguity": {
+                    "default": "Fallback",
+                    "description": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "await": {
+                    "default": "Fallback",
+                    "description": "* await-in-sync\n* not-yieldable",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "codestyle": {
+                    "default": "Fallback",
+                    "description": "* codestyle-check\n* spell-check",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "duplicate": {
+                    "default": "Fallback",
+                    "description": "* duplicate-index\n* duplicate-set-field",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "global": {
+                    "default": "Fallback",
+                    "description": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "luadoc": {
+                    "default": "Fallback",
+                    "description": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "redefined": {
+                    "default": "Fallback",
+                    "description": "* redefined-local",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strict": {
+                    "default": "Fallback",
+                    "description": "* close-non-object\n* deprecated\n* discard-returns",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strong": {
+                    "default": "Fallback",
+                    "description": "* no-unknown",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "type-check": {
+                    "default": "Fallback",
+                    "description": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unbalanced": {
+                    "default": "Fallback",
+                    "description": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unused": {
+                    "default": "Fallback",
+                    "description": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                }
+            },
+            "scope": "resource",
+            "title": "groupSeverity",
+            "type": "object"
+        },
         "diagnostics.ignoredFiles": {
             "default": "Opened",
             "enum": [
@@ -228,15 +528,31 @@
         },
         "diagnostics.neededFileStatus": {
             "additionalProperties": false,
-            "markdownDescription": "* Opened:  只診斷打開的檔案\n* Any:     診斷任何檔案\n* Disable: 停用此診斷\n",
+            "markdownDescription": "* Opened:  只診斷打開的檔案\n* Any:     診斷所有檔案\n* None:    停用此診斷\n\n以 `!` 結尾的設定優先順序高於組設定 `diagnostics.groupFileStatus`。\n",
             "properties": {
                 "ambiguity-1": {
                     "default": "Any",
-                    "description": "優先級歧義,如: `num or 0 + 1` ,推測使用者的實際期望為 `(num or 0) + 1`",
+                    "description": "優先順序歧義,如: `num or 0 + 1` ,推測使用者的實際期望為 `(num or 0) + 1`",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "assign-type-mismatch": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.assign-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -246,7 +562,36 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "cast-local-type": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.cast-local-type%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "cast-type-mismatch": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.cast-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -256,7 +601,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -266,7 +614,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -276,7 +627,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -286,7 +640,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -296,17 +653,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "deprecated": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.deprecated%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -316,17 +679,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "discard-returns": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.discard-returns%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -336,7 +705,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -346,7 +718,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -356,7 +731,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -366,7 +744,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -376,7 +757,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -386,7 +770,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -396,17 +783,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "global-in-nil-env": {
                     "default": "Any",
-                    "description": "不能使用全域變數( `_ENV` 被設定為了 `nil`)",
+                    "description": "不能使用全域變數( `_ENV` 被設定為 `nil`)",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -416,17 +809,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "missing-parameter": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.missing-parameter%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -436,7 +835,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -446,7 +848,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -456,7 +861,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -466,7 +874,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -476,7 +887,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "param-type-mismatch": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.param-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -486,17 +913,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "redundant-parameter": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "函式呼叫時,傳入了多餘的引數",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -506,17 +939,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "redundant-value": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "賦值操作時,值的數量比被賦值的對象多",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -526,7 +965,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -536,17 +978,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
-                    ],
-                    "type": "string"
-                },
-                "type-check": {
-                    "default": "None",
-                    "description": "%config.diagnostics.type-check%",
-                    "enum": [
-                        "Any",
-                        "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -556,7 +991,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -566,7 +1004,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -576,7 +1017,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -586,7 +1030,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -596,7 +1043,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -606,7 +1056,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -616,7 +1069,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "unknown-cast-variable": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.unknown-cast-variable%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -626,7 +1095,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -636,7 +1108,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -646,7 +1121,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -656,7 +1134,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -666,7 +1147,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 }
@@ -677,16 +1161,35 @@
         },
         "diagnostics.severity": {
             "additionalProperties": false,
-            "markdownDescription": "修改診斷等級。",
+            "markdownDescription": "修改診斷等級。\n以 `!` 結尾的設定優先順序高於組設定 `diagnostics.groupSeverity`。\n",
             "properties": {
                 "ambiguity-1": {
                     "default": "Warning",
-                    "description": "優先級歧義,如: `num or 0 + 1` ,推測使用者的實際期望為 `(num or 0) + 1`",
+                    "description": "優先順序歧義,如: `num or 0 + 1` ,推測使用者的實際期望為 `(num or 0) + 1`",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "assign-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.assign-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -697,7 +1200,41 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "cast-local-type": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.cast-local-type%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "cast-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.cast-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -708,7 +1245,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -719,7 +1260,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -730,7 +1275,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -741,7 +1290,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -752,7 +1305,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -763,7 +1320,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -774,7 +1335,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -785,7 +1350,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -796,7 +1365,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -807,7 +1380,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -818,7 +1395,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -829,7 +1410,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -840,7 +1425,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -851,7 +1440,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -862,18 +1455,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "global-in-nil-env": {
                     "default": "Warning",
-                    "description": "不能使用全域變數( `_ENV` 被設定為了 `nil`)",
+                    "description": "不能使用全域變數( `_ENV` 被設定為 `nil`)",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -884,7 +1485,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -895,7 +1500,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -906,7 +1515,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -917,29 +1530,41 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "newline-call": {
-                    "default": "Information",
+                    "default": "Warning",
                     "description": "以 `(` 開始的新行,在語法上被解析為了上一行的函式呼叫",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "no-unknown": {
-                    "default": "Information",
+                    "default": "Warning",
                     "description": "%config.diagnostics.no-unknown%",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -950,7 +1575,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "param-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.param-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -961,7 +1605,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -972,18 +1620,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "redundant-return": {
-                    "default": "Warning",
+                    "default": "Hint",
                     "description": "%config.diagnostics.redundant-return%",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -994,7 +1650,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1005,7 +1665,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1016,18 +1680,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
-                    ],
-                    "type": "string"
-                },
-                "type-check": {
-                    "default": "Warning",
-                    "description": "%config.diagnostics.type-check%",
-                    "enum": [
-                        "Error",
-                        "Warning",
-                        "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1038,7 +1695,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1049,7 +1710,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1060,7 +1725,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1071,7 +1740,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1082,7 +1755,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1093,7 +1770,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1104,7 +1785,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "unknown-cast-variable": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.unknown-cast-variable%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1115,7 +1815,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1126,7 +1830,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1137,7 +1845,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1148,7 +1860,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1159,7 +1875,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 }
@@ -1170,13 +1890,13 @@
         },
         "diagnostics.workspaceDelay": {
             "default": 3000,
-            "markdownDescription": "進行工作區診斷的延遲(毫秒)。當你啟動工作區,或編輯了任意檔案後,將會在背景對整個工作區進行重新診斷。設定為負數可以停用工作區診斷。",
+            "markdownDescription": "進行工作區診斷的延遲(毫秒)。當你啟動工作區,或編輯了任何檔案後,將會在背景對整個工作區進行重新診斷。設定為負數可以停用工作區診斷。",
             "scope": "resource",
             "type": "integer"
         },
         "diagnostics.workspaceRate": {
             "default": 100,
-            "markdownDescription": "工作區診斷的執行速率(百分比)。降低該值會減少CPU佔用,但是也會降低工作區診斷的速度。你目前正在編輯的檔案的診斷總是全速完成,不受該選項影響。",
+            "markdownDescription": "工作區診斷的執行速率(百分比)。降低該值會減少CPU使用率,但是也會降低工作區診斷的速度。你目前正在編輯的檔案的診斷總是全速完成,不受該選項影響。",
             "scope": "resource",
             "type": "integer"
         },
@@ -1193,7 +1913,7 @@
         "format.defaultConfig": {
             "additionalProperties": false,
             "default": [],
-            "markdownDescription": "%config.format.defaultConfig%",
+            "markdownDescription": "預設的格式化組態,優先順序低於工作區內的 `.editorconfig` 檔案。\n請查閱[格式化文件](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs)了解用法。\n",
             "patternProperties": {
                 ".*": {
                     "default": "",
@@ -1242,7 +1962,7 @@
             "markdownDescription": "在建構表時提示陣列索引。",
             "markdownEnumDescriptions": [
                 "所有的表中都提示陣列索引。",
-                "只有表大於3項,或者表是混合型別時才進行提示。",
+                "只有表大於3項,或者表是混合類型時才進行提示。",
                 "停用陣列索引提示。"
             ],
             "scope": "resource",
@@ -1250,7 +1970,7 @@
         },
         "hint.await": {
             "default": true,
-            "markdownDescription": "If the called function is marked `---@async`, prompt `await` at the call.",
+            "markdownDescription": "如果呼叫的函數被標記為了 `---@async`,則在呼叫處提示 `await`。",
             "scope": "resource",
             "type": "boolean"
         },
@@ -1269,8 +1989,8 @@
             ],
             "markdownDescription": "在函式呼叫處提示參數名。",
             "markdownEnumDescriptions": [
-                "所有型別的參數均進行提示。",
-                "只有字面常數型別的參數進行提示。",
+                "所有類型的參數均進行提示。",
+                "只有字面常數類型的參數進行提示。",
                 "停用參數提示。"
             ],
             "scope": "resource",
@@ -1278,13 +1998,13 @@
         },
         "hint.paramType": {
             "default": true,
-            "markdownDescription": "在函式的參數位置提示型別。",
+            "markdownDescription": "在函式的參數位置提示類型。",
             "scope": "resource",
             "type": "boolean"
         },
         "hint.setType": {
             "default": false,
-            "markdownDescription": "在賦值操作位置提示型別。",
+            "markdownDescription": "在賦值操作位置提示類型。",
             "scope": "resource",
             "type": "boolean"
         },
@@ -1321,18 +2041,18 @@
         },
         "hover.enumsLimit": {
             "default": 5,
-            "markdownDescription": "當值對應多個型別時,限制型別的顯示數量。",
+            "markdownDescription": "當值對應多個類型時,限制類型的顯示數量。",
             "scope": "resource",
             "type": "integer"
         },
         "hover.expandAlias": {
             "default": true,
-            "markdownDescription": "Whether to expand the alias. For example, expands `---@alias myType boolean|number` appears as `boolean|number`, otherwise it appears as `myType'.\n",
+            "markdownDescription": "是否展開別名。例如 `---@alias myType boolean|number` 展開後顯示為 `boolean|number`,否則顯示為 `myType'。\n",
             "scope": "resource",
             "type": "boolean"
         },
         "hover.previewFields": {
-            "default": 20,
+            "default": 50,
             "markdownDescription": "懸浮提示檢視表時,限制表內欄位的最大預覽數量。",
             "scope": "resource",
             "type": "integer"
@@ -1367,7 +2087,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "VSCode中啟動語言服務時的[命令列參數](https://github.com/sumneko/lua-language-server/wiki/Command-line)。",
+            "markdownDescription": "VSCode中啟動語言伺服時的[命令列參數](https://github.com/sumneko/lua-language-server/wiki/Command-line)。",
             "scope": "resource",
             "type": "array"
         },
@@ -1407,7 +2127,7 @@
         },
         "runtime.builtin": {
             "additionalProperties": false,
-            "markdownDescription": "調整內建庫的啟用狀態,你可以根據實際執行環境停用不存在的庫(或重新定義)。\n\n* `default`: 表示庫會根據執行版本啟用或停用\n* `enable`: 總是啟用\n* `disable`: 總是停用\n",
+            "markdownDescription": "調整內建庫的啟用狀態,你可以根據實際執行環境停用(或重新定義)不存在的庫。\n\n* `default`: 表示庫會根據執行版本啟用或停用\n* `enable`: 總是啟用\n* `disable`: 總是停用\n",
             "properties": {
                 "basic": {
                     "default": "default",
@@ -1572,7 +2292,7 @@
                 "utf16le",
                 "utf16be"
             ],
-            "markdownDescription": "檔案編碼,`ansi` 選項只在 `Windows` 平台下有效。",
+            "markdownDescription": "檔案編碼,選項 `ansi` 只在 `Windows` 平台下有效。",
             "markdownEnumDescriptions": [
                 "%config.runtime.fileEncoding.utf8%",
                 "%config.runtime.fileEncoding.ansi%",
@@ -1584,7 +2304,7 @@
         },
         "runtime.meta": {
             "default": "${version} ${language} ${encoding}",
-            "markdownDescription": "%config.runtime.meta%",
+            "markdownDescription": "meta檔案的目錄名稱格式",
             "scope": "resource",
             "type": "string"
         },
@@ -1631,14 +2351,14 @@
         },
         "runtime.plugin": {
             "default": "",
-            "markdownDescription": "延伸模組路徑,請查閲[文件](https://github.com/sumneko/lua-language-server/wiki/Plugin)瞭解用法。",
+            "markdownDescription": "延伸模組路徑,請查閱[文件](https://github.com/sumneko/lua-language-server/wiki/Plugin)瞭解用法。",
             "scope": "resource",
             "type": "string"
         },
         "runtime.special": {
             "additionalProperties": false,
             "default": [],
-            "markdownDescription": "將自訂全域變數視為一些特殊的內建變數,語言服務將提供特殊的支援。\n下面這個例子表示將 `include` 視為 `require` 。\n```json\n\"Lua.runtime.special\" : {\n    \"include\" : \"require\"\n}\n```\n",
+            "markdownDescription": "將自訂全域變數視為一些特殊的內建變數,語言伺服將提供特殊的支援。\n下面這個例子表示將 `include` 視為 `require` 。\n```json\n\"Lua.runtime.special\" : {\n    \"include\" : \"require\"\n}\n```\n",
             "patternProperties": {
                 ".*": {
                     "default": "require",
@@ -1707,7 +2427,7 @@
         },
         "semantic.annotation": {
             "default": true,
-            "markdownDescription": "對型別註解進行語義著色。",
+            "markdownDescription": "對類型註解進行語義著色。",
             "scope": "resource",
             "type": "boolean"
         },
@@ -1754,7 +2474,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "%config.spell.dict%",
+            "markdownDescription": "拼寫檢查的自訂單詞。",
             "scope": "resource",
             "type": "array"
         },
@@ -1767,7 +2487,7 @@
         },
         "telemetry.enable": {
             "default": null,
-            "markdownDescription": "啟用遙測,透過網路發送你的編輯器資訊與錯誤日誌。在[此處](https://github.com/sumneko/lua-language-server/wiki/%E9%9A%B1%E7%A7%81%E8%81%B2%E6%98%8E)閲讀我們的隱私聲明。\n",
+            "markdownDescription": "啟用遙測,透過網路發送你的編輯器資訊與錯誤日誌。在[此處](https://github.com/sumneko/lua-language-server/wiki/%E9%9A%B1%E7%A7%81%E8%81%B2%E6%98%8E)閱讀我們的隱私聲明。\n",
             "scope": "resource",
             "tags": [
                 "telemetry"
@@ -1883,7 +2603,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "為以下 `scheme` 的lua檔案提供語言服務。",
+            "markdownDescription": "為以下 `scheme` 的lua檔案提供語言伺服。",
             "scope": "resource",
             "type": "array"
         },
diff --git a/setting/schema.json b/setting/schema.json
index cf4c67c676604f85bbcdc3cb8ff6f133acb83fca..963ba80201625e46824cfc05a85e5961d2995a85 100644
--- a/setting/schema.json
+++ b/setting/schema.json
@@ -139,6 +139,12 @@
                 "globals": {
                     "$ref": "#/properties/diagnostics.globals"
                 },
+                "groupFileStatus": {
+                    "$ref": "#/properties/diagnostics.groupFileStatus"
+                },
+                "groupSeverity": {
+                    "$ref": "#/properties/diagnostics.groupSeverity"
+                },
                 "ignoredFiles": {
                     "$ref": "#/properties/diagnostics.ignoredFiles"
                 },
@@ -194,6 +200,300 @@
             "scope": "resource",
             "type": "array"
         },
+        "diagnostics.groupFileStatus": {
+            "additionalProperties": false,
+            "markdownDescription": "Modify the diagnostic needed file status in a group.\n\n* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* None:    disable this diagnostic\n\n`Fallback` means that diagnostics in this group are controlled by `diagnostics.neededFileStatus` separately.\nOther settings will override individual settings without end of `!`.\n",
+            "properties": {
+                "ambiguity": {
+                    "default": "Fallback",
+                    "description": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "await": {
+                    "default": "Fallback",
+                    "description": "* await-in-sync\n* not-yieldable",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "codestyle": {
+                    "default": "Fallback",
+                    "description": "* codestyle-check\n* spell-check",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "duplicate": {
+                    "default": "Fallback",
+                    "description": "* duplicate-index\n* duplicate-set-field",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "global": {
+                    "default": "Fallback",
+                    "description": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "luadoc": {
+                    "default": "Fallback",
+                    "description": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "redefined": {
+                    "default": "Fallback",
+                    "description": "* redefined-local",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strict": {
+                    "default": "Fallback",
+                    "description": "* close-non-object\n* deprecated\n* discard-returns",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strong": {
+                    "default": "Fallback",
+                    "description": "* no-unknown",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "type-check": {
+                    "default": "Fallback",
+                    "description": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unbalanced": {
+                    "default": "Fallback",
+                    "description": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unused": {
+                    "default": "Fallback",
+                    "description": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                }
+            },
+            "scope": "resource",
+            "title": "groupFileStatus",
+            "type": "object"
+        },
+        "diagnostics.groupSeverity": {
+            "additionalProperties": false,
+            "markdownDescription": "Modify the diagnostic severity in a group.\n`Fallback` means that diagnostics in this group are controlled by `diagnostics.severity` separately.\nOther settings will override individual settings without end of `!`.\n",
+            "properties": {
+                "ambiguity": {
+                    "default": "Fallback",
+                    "description": "* ambiguity-1\n* count-down-loop\n* different-requires\n* newfield-call\n* newline-call",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "await": {
+                    "default": "Fallback",
+                    "description": "* await-in-sync\n* not-yieldable",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "codestyle": {
+                    "default": "Fallback",
+                    "description": "* codestyle-check\n* spell-check",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "duplicate": {
+                    "default": "Fallback",
+                    "description": "* duplicate-index\n* duplicate-set-field",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "global": {
+                    "default": "Fallback",
+                    "description": "* global-in-nil-env\n* lowercase-global\n* undefined-env-child\n* undefined-global",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "luadoc": {
+                    "default": "Fallback",
+                    "description": "* cast-type-mismatch\n* circle-doc-class\n* doc-field-no-class\n* duplicate-doc-alias\n* duplicate-doc-field\n* duplicate-doc-param\n* undefined-doc-class\n* undefined-doc-name\n* undefined-doc-param\n* unknown-cast-variable\n* unknown-diag-code",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "redefined": {
+                    "default": "Fallback",
+                    "description": "* redefined-local",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strict": {
+                    "default": "Fallback",
+                    "description": "* close-non-object\n* deprecated\n* discard-returns",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "strong": {
+                    "default": "Fallback",
+                    "description": "* no-unknown",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "type-check": {
+                    "default": "Fallback",
+                    "description": "* assign-type-mismatch\n* cast-local-type\n* cast-type-mismatch\n* need-check-nil\n* param-type-mismatch\n* undefined-field",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unbalanced": {
+                    "default": "Fallback",
+                    "description": "* missing-parameter\n* redundant-parameter\n* redundant-value\n* unbalanced-assignments",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                },
+                "unused": {
+                    "default": "Fallback",
+                    "description": "* code-after-break\n* empty-block\n* redundant-return\n* trailing-space\n* unused-function\n* unused-label\n* unused-local\n* unused-vararg",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Fallback"
+                    ],
+                    "type": "string"
+                }
+            },
+            "scope": "resource",
+            "title": "groupSeverity",
+            "type": "object"
+        },
         "diagnostics.ignoredFiles": {
             "default": "Opened",
             "enum": [
@@ -228,7 +528,7 @@
         },
         "diagnostics.neededFileStatus": {
             "additionalProperties": false,
-            "markdownDescription": "* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* Disable: disable this diagnostic\n",
+            "markdownDescription": "* Opened:  only diagnose opened files\n* Any:     diagnose all files\n* None:    disable this diagnostic\n\nEnd with `!` means override the group setting `diagnostics.groupFileStatus`.\n",
             "properties": {
                 "ambiguity-1": {
                     "default": "Any",
@@ -236,7 +536,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "assign-type-mismatch": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.assign-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -246,7 +562,36 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "cast-local-type": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.cast-local-type%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "cast-type-mismatch": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.cast-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -256,7 +601,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -266,7 +614,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -276,7 +627,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -286,7 +640,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -296,17 +653,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "deprecated": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.deprecated%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -316,17 +679,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "discard-returns": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.discard-returns%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -336,7 +705,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -346,7 +718,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -356,7 +731,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -366,7 +744,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -376,7 +757,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -386,7 +770,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -396,7 +783,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -406,7 +796,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -416,17 +809,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "missing-parameter": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "%config.diagnostics.missing-parameter%",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -436,7 +835,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -446,7 +848,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -456,7 +861,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -466,7 +874,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -476,7 +887,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "param-type-mismatch": {
+                    "default": "Opened",
+                    "description": "%config.diagnostics.param-type-mismatch%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -486,17 +913,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "redundant-parameter": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "Enable redundant function parameter diagnostics.",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -506,17 +939,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
                 "redundant-value": {
-                    "default": "Opened",
+                    "default": "Any",
                     "description": "Enable the redundant values assigned diagnostics. It's raised during assignment operation, when the number of values is higher than the number of objects being assigned.",
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -526,7 +965,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -536,17 +978,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
-                    ],
-                    "type": "string"
-                },
-                "type-check": {
-                    "default": "None",
-                    "description": "%config.diagnostics.type-check%",
-                    "enum": [
-                        "Any",
-                        "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -556,7 +991,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -566,7 +1004,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -576,7 +1017,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -586,7 +1030,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -596,7 +1043,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -606,7 +1056,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -616,7 +1069,23 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
+                    ],
+                    "type": "string"
+                },
+                "unknown-cast-variable": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.unknown-cast-variable%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -626,7 +1095,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -636,7 +1108,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -646,7 +1121,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -656,7 +1134,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 },
@@ -666,7 +1147,10 @@
                     "enum": [
                         "Any",
                         "Opened",
-                        "None"
+                        "None",
+                        "Any!",
+                        "Opened!",
+                        "None!"
                     ],
                     "type": "string"
                 }
@@ -677,7 +1161,7 @@
         },
         "diagnostics.severity": {
             "additionalProperties": false,
-            "markdownDescription": "Modified diagnostic severity.",
+            "markdownDescription": "Modify the diagnostic severity.\n\nEnd with `!` means override the group setting `diagnostics.groupSeverity`.\n",
             "properties": {
                 "ambiguity-1": {
                     "default": "Warning",
@@ -686,7 +1170,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "assign-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.assign-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -697,7 +1200,41 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "cast-local-type": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.cast-local-type%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "cast-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.cast-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -708,7 +1245,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -719,7 +1260,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -730,7 +1275,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -741,7 +1290,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -752,7 +1305,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -763,7 +1320,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -774,7 +1335,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -785,7 +1350,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -796,7 +1365,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -807,7 +1380,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -818,7 +1395,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -829,7 +1410,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -840,7 +1425,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -851,7 +1440,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -862,7 +1455,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -873,7 +1470,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -884,7 +1485,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -895,7 +1500,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -906,7 +1515,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -917,29 +1530,41 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "newline-call": {
-                    "default": "Information",
+                    "default": "Warning",
                     "description": "Enable newline call diagnostics. Is's raised when a line starting with `(` is encountered, which is syntactically parsed as a function call on the previous line.",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "no-unknown": {
-                    "default": "Information",
+                    "default": "Warning",
                     "description": "%config.diagnostics.no-unknown%",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -950,7 +1575,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "param-type-mismatch": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.param-type-mismatch%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -961,7 +1605,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -972,18 +1620,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
                 "redundant-return": {
-                    "default": "Warning",
+                    "default": "Hint",
                     "description": "%config.diagnostics.redundant-return%",
                     "enum": [
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -994,7 +1650,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1005,7 +1665,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1016,18 +1680,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
-                    ],
-                    "type": "string"
-                },
-                "type-check": {
-                    "default": "Warning",
-                    "description": "%config.diagnostics.type-check%",
-                    "enum": [
-                        "Error",
-                        "Warning",
-                        "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1038,7 +1695,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1049,7 +1710,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1060,7 +1725,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1071,7 +1740,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1082,7 +1755,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1093,7 +1770,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1104,7 +1785,26 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
+                    ],
+                    "type": "string"
+                },
+                "unknown-cast-variable": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.unknown-cast-variable%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1115,7 +1815,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1126,7 +1830,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1137,7 +1845,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1148,7 +1860,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 },
@@ -1159,7 +1875,11 @@
                         "Error",
                         "Warning",
                         "Information",
-                        "Hint"
+                        "Hint",
+                        "Error!",
+                        "Warning!",
+                        "Information!",
+                        "Hint!"
                     ],
                     "type": "string"
                 }
@@ -1193,7 +1913,7 @@
         "format.defaultConfig": {
             "additionalProperties": false,
             "default": [],
-            "markdownDescription": "%config.format.defaultConfig%",
+            "markdownDescription": "The default format configuration. Has a lower priority than `.editorconfig` file in the workspace.\nRead [formatter docs](https://github.com/CppCXY/EmmyLuaCodeStyle/tree/master/docs) to learn usage.\n",
             "patternProperties": {
                 ".*": {
                     "default": "",
@@ -1332,7 +2052,7 @@
             "type": "boolean"
         },
         "hover.previewFields": {
-            "default": 20,
+            "default": 50,
             "markdownDescription": "When hovering to view a table, limits the maximum number of previews for fields.",
             "scope": "resource",
             "type": "integer"
@@ -1584,7 +2304,7 @@
         },
         "runtime.meta": {
             "default": "${version} ${language} ${encoding}",
-            "markdownDescription": "%config.runtime.meta%",
+            "markdownDescription": "Format of the directory name of the meta files.",
             "scope": "resource",
             "type": "string"
         },
@@ -1754,7 +2474,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "%config.spell.dict%",
+            "markdownDescription": "Custom words for spell checking.",
             "scope": "resource",
             "type": "array"
         },