diff --git a/changelog.md b/changelog.md
index 70a103bc5ff92e29d580c9a94076f4761d1cccc6..f5f9eac01820dd4aeda98be12c5606a012873828 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,22 @@
 # changelog
 
+## 2.4.0
+* `NEW` settings:
+  + `Lua.diagnostics.libraryFiles`
+  + `Lua.diagnostics.ignoredFiles`
+  + `Lua.completion.showWord`
+  + `Lua.completion.requireSeparator`
+* `NEW` diagnostics:
+  + `different-requires`
+* `CHG` hover: improve showing multi defines
+* `CHG` hover: improve showing multi comments at enums
+* `CHG` hint: `Lua.hint.paramName` now supports `Disable`, `Literal` and `All`
+* `CHG` only search first file by `require`
+* `CHG` no longer ignore file names case in Windows
+* `CHG` watching library changes
+* `FIX` runtime errors
+* `FIX` hint: may show param-2 as `self`
+
 ## 2.3.7
 `2021-8-17`
 * `CHG` improve performance
diff --git a/package.json b/package.json
index fb8dfe4f9dc7cb7e78097e0cd5277e6a13f48bf8..a1c1512977c56276c5e627a82cf9d08966ec3135 100644
--- a/package.json
+++ b/package.json
@@ -93,12 +93,34 @@
                     "scope": "resource",
                     "type": "string"
                 },
+                "Lua.completion.requireSeparator": {
+                    "default": ".",
+                    "markdownDescription": "%config.completion.requireSeparator%",
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "Lua.completion.showParams": {
                     "default": true,
                     "markdownDescription": "%config.completion.showParams%",
                     "scope": "resource",
                     "type": "boolean"
                 },
+                "Lua.completion.showWord": {
+                    "default": "Enable",
+                    "enum": [
+                        "Enable",
+                        "Fallback",
+                        "Disable"
+                    ],
+                    "markdownDescription": "%config.completion.showWord%",
+                    "markdownEnumDescriptions": [
+                        "%config.completion.showWord.Enable%",
+                        "%config.completion.showWord.Fallback%",
+                        "%config.completion.showWord.Disable%"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "Lua.completion.workspaceWord": {
                     "default": true,
                     "markdownDescription": "%config.completion.workspaceWord%",
@@ -127,6 +149,38 @@
                     "scope": "resource",
                     "type": "array"
                 },
+                "Lua.diagnostics.ignoredFiles": {
+                    "default": "Disable",
+                    "enum": [
+                        "Enable",
+                        "Opened",
+                        "Disable"
+                    ],
+                    "markdownDescription": "%config.diagnostics.ignoredFiles%",
+                    "markdownEnumDescriptions": [
+                        "%config.diagnostics.files.Enable%",
+                        "%config.diagnostics.files.Opened%",
+                        "%config.diagnostics.files.Disable%"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
+                "Lua.diagnostics.libraryFiles": {
+                    "default": "Disable",
+                    "enum": [
+                        "Enable",
+                        "Opened",
+                        "Disable"
+                    ],
+                    "markdownDescription": "%config.diagnostics.libraryFiles%",
+                    "markdownEnumDescriptions": [
+                        "%config.diagnostics.files.Enable%",
+                        "%config.diagnostics.files.Opened%",
+                        "%config.diagnostics.files.Disable%"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "Lua.diagnostics.neededFileStatus": {
                     "markdownDescription": "%config.diagnostics.neededFileStatus%",
                     "properties": {
@@ -196,6 +250,17 @@
                             "scope": "resource",
                             "type": "string"
                         },
+                        "different-requires": {
+                            "default": "Any",
+                            "description": "%config.diagnostics.different-requires%",
+                            "enum": [
+                                "Any",
+                                "Opened",
+                                "None"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
                         "doc-field-no-class": {
                             "default": "Any",
                             "description": "%config.diagnostics.doc-field-no-class%",
@@ -584,6 +649,18 @@
                             "scope": "resource",
                             "type": "string"
                         },
+                        "different-requires": {
+                            "default": "Warning",
+                            "description": "%config.diagnostics.different-requires%",
+                            "enum": [
+                                "Error",
+                                "Warning",
+                                "Information",
+                                "Hint"
+                            ],
+                            "scope": "resource",
+                            "type": "string"
+                        },
                         "doc-field-no-class": {
                             "default": "Warning",
                             "description": "%config.diagnostics.doc-field-no-class%",
@@ -944,10 +1021,20 @@
                     "type": "boolean"
                 },
                 "Lua.hint.paramName": {
-                    "default": true,
+                    "default": "All",
+                    "enum": [
+                        "All",
+                        "Literal",
+                        "Disable"
+                    ],
                     "markdownDescription": "%config.hint.paramName%",
+                    "markdownEnumDescriptions": [
+                        "%config.hint.paramName.All%",
+                        "%config.hint.paramName.Literal%",
+                        "%config.hint.paramName.Disable%"
+                    ],
                     "scope": "resource",
-                    "type": "boolean"
+                    "type": "string"
                 },
                 "Lua.hint.paramType": {
                     "default": true,
@@ -1402,6 +1489,7 @@
     },
     "description": "Lua Language Server coded by Lua",
     "displayName": "Lua",
+    "enableProposedApi": true,
     "engines": {
         "vscode": "^1.23.0"
     },
@@ -1419,5 +1507,5 @@
         "type": "git",
         "url": "https://github.com/sumneko/lua-language-server"
     },
-    "version": "2.13.7"
+    "version": "2.3.7"
 }
diff --git a/package.nls.json b/package.nls.json
index 30852f5bf5a9940e5640d9001df1e07a77f41d89..5150feb0bf51a105c5d72f00b64d1dae679cb663 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -14,22 +14,35 @@
     "config.completion.keywordSnippet.Both": "Shows `keyword` and `syntax snippet`.",
     "config.completion.keywordSnippet.Disable": "Only shows `keyword`.",
     "config.completion.keywordSnippet.Replace": "Only shows `syntax snippet`.",
+    "config.completion.requireSeparator": "The separator used when `require`.",
     "config.completion.showParams": "Display parameters in completion list. When the function has multiple definitions, they will be displayed separately.",
-    "config.completion.workspaceWord": "Shows words within the workspace.",
+    "config.completion.showWord": "Show contextual words in suggestions.",
+    "config.completion.showWord.Disable": "Do not display context words.",
+    "config.completion.showWord.Enable": "Always show context words in suggestions.",
+    "config.completion.showWord.Fallback": "Contextual words are only displayed when suggestions based on semantics cannot be provided.",
+    "config.completion.workspaceWord": "Whether the displayed context word contains the content of other files in the workspace.",
     "config.develop.debuggerPort": "Listen port of debugger.",
     "config.develop.debuggerWait": "Suspend before debugger connects.",
     "config.develop.enable": "Developer mode. Do not enable, performance will be affected.",
     "config.diagnostics.disable": "Disabled diagnostic (Use code in hover brackets).\n",
     "config.diagnostics.enable": "Enable diagnostics.",
+    "config.diagnostics.files.Disable": "These files are not diagnosed.",
+    "config.diagnostics.files.Enable": "Always diagnose these files.",
+    "config.diagnostics.files.Opened": "Only when these files are opened will it be diagnosed.",
     "config.diagnostics.globals": "Defined global variables.\n",
+    "config.diagnostics.ignoredFiles": "How to diagnose ignored files.",
+    "config.diagnostics.libraryFiles": "How to diagnose files loaded via `Lua.workspace.library`.",
     "config.diagnostics.neededFileStatus": "If you want to check only opened files, choice Opened; else choice Any.\n",
     "config.diagnostics.severity": "Modified diagnostic severity.\n",
     "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.hint.enable": "Enabel hint.",
-    "config.hint.paramName": "Hint parameter name when the parameter called is literal.",
+    "config.hint.paramName": "Show hints of parameter name at the function call.",
+    "config.hint.paramName.All": "All types of parameters are shown.",
+    "config.hint.paramName.Disable": "Disable parameter hints.",
+    "config.hint.paramName.Literal": "Only literal type parameters are shown.",
     "config.hint.paramType": "Show type hints at the parameter of the function.",
-    "config.hint.setType": "Hint type at assignment operation.",
+    "config.hint.setType": "Show hints of type at assignment operation.",
     "config.hover.enable": "Enable hover.",
     "config.hover.enumsLimit": "When the value corresponds to multiple types, limit the number of types displaying.",
     "config.hover.fieldInfer": "When hovering to view a table, type infer will be performed for each field. When the accumulated time of type infer reaches the set value (MS), the type infer of subsequent fields will be skipped.",
@@ -43,7 +56,7 @@
     "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.nonstandardSymbol": "Supports non-standard symbols. Make sure that your runtime environment supports these symbols.",
-    "config.runtime.path": "`package.path`",
+    "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'`, all `**/myfile/init.lua` will be searched from the loaded files.\nIf you want to load files outside the workspace, you need to set `Lua.workspace.library` first.\n",
     "config.runtime.plugin": "Plugin path. Please read [wiki](https://github.com/sumneko/lua-language-server/wiki/Plugin) to learn more.",
     "config.runtime.special": "The custom global variables are regarded as some special built-in variables, and the language server will provide special support\nThe following example shows that 'include' is treated as' require '.\n```json\n\"Lua.runtime.special\" : {\n    \"include\" : \"require\"\n}\n```\n",
     "config.runtime.unicodeName": "Allows Unicode characters in name.",
@@ -55,7 +68,7 @@
     "config.workspace.checkThirdParty": "Automatic detection and adaptation of third-party libraries, currently supported libraries are:\n\n* OpenResty\n* Cocos4.0\n* LÖVE\n* Jass\n",
     "config.workspace.ignoreDir": "Ignored files and directories (Use `.gitignore` grammar).\n",
     "config.workspace.ignoreSubmodules": "Ignore submodules.",
-    "config.workspace.library": "The directory path of the external function library.\nThe language service will additionally load the lua files in these directories, even if they are not in the current workspace, for definition, completion and other features.\n",
+    "config.workspace.library": "In addition to the current workspace, which directories will load files from.",
     "config.workspace.maxPreload": "Max preloaded files.",
     "config.workspace.preloadFileSize": "Skip files larger than this value (KB) when preloading.",
     "config.workspace.useGitIgnore": "Ignore files list in `.gitignore` .",
diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json
index e95996fd3a5362e16795da7bded2dd2fd853c2f3..e484b35908463f2b53d884251df2f1a55f979cab 100644
--- a/package.nls.zh-cn.json
+++ b/package.nls.zh-cn.json
@@ -15,14 +15,24 @@
     "config.completion.keywordSnippet.Both": "显示 `关键字` 与 `语法片段`。",
     "config.completion.keywordSnippet.Disable": "只显示 `关键字`。",
     "config.completion.keywordSnippet.Replace": "只显示 `语法片段`。",
+    "config.completion.requireSeparator": "`require` 时使用的分隔符。",
     "config.completion.showParams": "在自动完成列表中显示函数的参数信息,函数拥有多个定义时会分开显示。",
-    "config.completion.workspaceWord": "显示工作区范围内的单词。",
+    "config.completion.showWord": "在建议中显示上下文单词。",
+    "config.completion.showWord.Disable": "不显示上下文单词。",
+    "config.completion.showWord.Enable": "总是在建议中显示上下文单词。",
+    "config.completion.showWord.Fallback": "无法根据语义提供建议时才显示上下文单词。",
+    "config.completion.workspaceWord": "显示的上下文单词是否包含工作区中其他文件的内容。",
     "config.develop.debuggerPort": "调试器监听端口。",
     "config.develop.debuggerWait": "调试器连接之前挂起。",
     "config.develop.enable": "开发者模式。请勿开启,会影响性能。",
     "config.diagnostics.disable": "禁用的诊断(使用浮框括号内的代码)。\n",
     "config.diagnostics.enable": "启用诊断。",
+    "config.diagnostics.files.Disable": "不诊断这些文件。",
+    "config.diagnostics.files.Enable": "总是诊断这些文件。",
+    "config.diagnostics.files.Opened": "只有打开这些文件时才会诊断。",
     "config.diagnostics.globals": "已定义的全局变量。\n",
+    "config.diagnostics.ignoredFiles": "如何诊断被忽略的文件。",
+    "config.diagnostics.libraryFiles": "如何诊断通过 `Lua.workspace.library` 加载的文件。",
     "config.diagnostics.neededFileStatus": "如果你只想诊断打开的文件,选Opened;否则,选Any。\n",
     "config.diagnostics.severity": "修改诊断等级。\n",
     "config.diagnostics.unused-function": "未使用的函数",
@@ -30,7 +40,10 @@
     "config.diagnostics.workspaceDelay": "进行工作区诊断的延迟(毫秒)。当你启动工作区,或编辑了任意文件后,将会在后台对整个工作区进行重新诊断。设置为负数可以禁用工作区诊断。",
     "config.diagnostics.workspaceRate": "工作区诊断的运行速率(百分比)。降低该值会减少CPU占用,但是也会降低工作区诊断的速度。你当前正在编辑的文件的诊断总是全速完成,不受该选项影响。",
     "config.hint.enable": "启用内联提示。",
-    "config.hint.paramName": "调用的参数为字面量时提示参数名。",
+    "config.hint.paramName": "在函数调用处提示参数名。",
+    "config.hint.paramName.All": "所有类型的参数均进行提示。",
+    "config.hint.paramName.Disable": "禁用参数提示。",
+    "config.hint.paramName.Literal": "只有字面量类型的参数进行提示。",
     "config.hint.paramType": "在函数的参数位置提示类型。",
     "config.hint.setType": "在赋值操作位置提示类型。",
     "config.hover.enable": "启用悬停提示。",
@@ -46,7 +59,7 @@
     "config.runtime.builtin": "调整内置库的启用状态,你可以根据实际运行环境禁用掉不存在的库(或重新定义)。\n\n* `default`: 表示库会根据运行版本启用或禁用\n* `enable`: 总是启用\n* `disable`: 总是禁用\n",
     "config.runtime.fileEncoding": "文件编码,`ansi` 选项只在 `Windows` 平台下有效。",
     "config.runtime.nonstandardSymbol": "支持非标准的符号。请务必确认你的运行环境支持这些符号。",
-    "config.runtime.path": "`package.path`",
+    "config.runtime.path": "当使用 `require` 时,如何根据输入的名字来查找文件。\n此选项设置为 `?/init.lua` 意味着当你输入 `require 'myfile'` 时,会从已加载的文件中搜索所有的 `**/myfile/init.lua`。\n如果你想要加载工作区以外的文件,你需要先设置 `Lua.workspace.library`。\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 字符。",
@@ -58,7 +71,7 @@
     "config.workspace.checkThirdParty": "自动检测与适配第三方库,目前支持的库为:\n\n* OpenResty\n* Cocos4.0\n* LÖVE\n* Jass\n",
     "config.workspace.ignoreDir": "忽略的文件与目录(使用 `.gitignore` 语法)。\n",
     "config.workspace.ignoreSubmodules": "忽略子模块。",
-    "config.workspace.library": "外部函数库的目录路径。\n语言服务会额外加载这些目录中的lua文件,即使他们不在当前的工作目录中,用于函数定义、自动完成等功能。\n",
+    "config.workspace.library": "除了当前工作区以外,还会从哪些目录中加载文件。",
     "config.workspace.maxPreload": "最大预加载文件数。",
     "config.workspace.preloadFileSize": "预加载时跳过大小大于该值(KB)的文件。",
     "config.workspace.useGitIgnore": "忽略 `.gitignore` 中列举的文件。",
diff --git a/package/package.lua b/package/package.lua
index f3dc14db7eda6357fccbd1e9711cb95d1e75d645..d9ba4ab8163fb6202fe92c5bb946d16889f5dc2c 100644
--- a/package/package.lua
+++ b/package/package.lua
@@ -5,6 +5,7 @@ return {
     author = "sumneko",
     icon = "images/logo.png",
     license = "MIT",
+    enableProposedApi = true,
     repository = {
         type = "git",
         url = "https://github.com/sumneko/lua-language-server"
diff --git a/setting/schema-zh-cn.json b/setting/schema-zh-cn.json
index 847b0a3d063afc368a83c9561a2f52ced7238b43..84f17b6e77c5c37b66ba659cd6e40aa67c19c1db 100644
--- a/setting/schema-zh-cn.json
+++ b/setting/schema-zh-cn.json
@@ -66,15 +66,37 @@
             "scope": "resource",
             "type": "string"
         },
+        "Lua.completion.requireSeparator": {
+            "default": ".",
+            "markdownDescription": "`require` 时使用的分隔符。",
+            "scope": "resource",
+            "type": "string"
+        },
         "Lua.completion.showParams": {
             "default": true,
             "markdownDescription": "在自动完成列表中显示函数的参数信息,函数拥有多个定义时会分开显示。",
             "scope": "resource",
             "type": "boolean"
         },
+        "Lua.completion.showWord": {
+            "default": "Enable",
+            "enum": [
+                "Enable",
+                "Fallback",
+                "Disable"
+            ],
+            "markdownDescription": "在建议中显示上下文单词。",
+            "markdownEnumDescriptions": [
+                "总是在建议中显示上下文单词。",
+                "无法根据语义提供建议时才显示上下文单词。",
+                "不显示上下文单词。"
+            ],
+            "scope": "resource",
+            "type": "string"
+        },
         "Lua.completion.workspaceWord": {
             "default": true,
-            "markdownDescription": "显示工作区范围内的单词。",
+            "markdownDescription": "显示的上下文单词是否包含工作区中其他文件的内容。",
             "scope": "resource",
             "type": "boolean"
         },
@@ -100,6 +122,38 @@
             "scope": "resource",
             "type": "array"
         },
+        "Lua.diagnostics.ignoredFiles": {
+            "default": "Disable",
+            "enum": [
+                "Enable",
+                "Opened",
+                "Disable"
+            ],
+            "markdownDescription": "如何诊断被忽略的文件。",
+            "markdownEnumDescriptions": [
+                "总是诊断这些文件。",
+                "只有打开这些文件时才会诊断。",
+                "不诊断这些文件。"
+            ],
+            "scope": "resource",
+            "type": "string"
+        },
+        "Lua.diagnostics.libraryFiles": {
+            "default": "Disable",
+            "enum": [
+                "Enable",
+                "Opened",
+                "Disable"
+            ],
+            "markdownDescription": "如何诊断通过 `Lua.workspace.library` 加载的文件。",
+            "markdownEnumDescriptions": [
+                "总是诊断这些文件。",
+                "只有打开这些文件时才会诊断。",
+                "不诊断这些文件。"
+            ],
+            "scope": "resource",
+            "type": "string"
+        },
         "Lua.diagnostics.neededFileStatus": {
             "markdownDescription": "如果你只想诊断打开的文件,选Opened;否则,选Any。\n",
             "properties": {
@@ -169,6 +223,17 @@
                     "scope": "resource",
                     "type": "string"
                 },
+                "different-requires": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.different-requires%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "doc-field-no-class": {
                     "default": "Any",
                     "description": "%config.diagnostics.doc-field-no-class%",
@@ -557,6 +622,18 @@
                     "scope": "resource",
                     "type": "string"
                 },
+                "different-requires": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.different-requires%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "doc-field-no-class": {
                     "default": "Warning",
                     "description": "%config.diagnostics.doc-field-no-class%",
@@ -917,10 +994,20 @@
             "type": "boolean"
         },
         "Lua.hint.paramName": {
-            "default": true,
-            "markdownDescription": "调用的参数为字面量时提示参数名。",
+            "default": "All",
+            "enum": [
+                "All",
+                "Literal",
+                "Disable"
+            ],
+            "markdownDescription": "在函数调用处提示参数名。",
+            "markdownEnumDescriptions": [
+                "所有类型的参数均进行提示。",
+                "只有字面量类型的参数进行提示。",
+                "禁用参数提示。"
+            ],
             "scope": "resource",
-            "type": "boolean"
+            "type": "string"
         },
         "Lua.hint.paramType": {
             "default": true,
@@ -1191,7 +1278,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "`package.path`",
+            "markdownDescription": "当使用 `require` 时,如何根据输入的名字来查找文件。\n此选项设置为 `?/init.lua` 意味着当你输入 `require 'myfile'` 时,会从已加载的文件中搜索所有的 `**/myfile/init.lua`。\n如果你想要加载工作区以外的文件,你需要先设置 `Lua.workspace.library`。\n",
             "scope": "resource",
             "type": "array"
         },
@@ -1297,7 +1384,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "外部函数库的目录路径。\n语言服务会额外加载这些目录中的lua文件,即使他们不在当前的工作目录中,用于函数定义、自动完成等功能。\n",
+            "markdownDescription": "除了当前工作区以外,还会从哪些目录中加载文件。",
             "scope": "resource",
             "type": "array"
         },
diff --git a/setting/schema.json b/setting/schema.json
index eff55051652cd69ee6046b8e69eff1f5ba7f2c7c..73fbf76138293a8a8ba5ce9dc7c26fcf042954ac 100644
--- a/setting/schema.json
+++ b/setting/schema.json
@@ -66,15 +66,37 @@
             "scope": "resource",
             "type": "string"
         },
+        "Lua.completion.requireSeparator": {
+            "default": ".",
+            "markdownDescription": "The separator used when `require`.",
+            "scope": "resource",
+            "type": "string"
+        },
         "Lua.completion.showParams": {
             "default": true,
             "markdownDescription": "Display parameters in completion list. When the function has multiple definitions, they will be displayed separately.",
             "scope": "resource",
             "type": "boolean"
         },
+        "Lua.completion.showWord": {
+            "default": "Enable",
+            "enum": [
+                "Enable",
+                "Fallback",
+                "Disable"
+            ],
+            "markdownDescription": "Show contextual words in suggestions.",
+            "markdownEnumDescriptions": [
+                "Always show context words in suggestions.",
+                "Contextual words are only displayed when suggestions based on semantics cannot be provided.",
+                "Do not display context words."
+            ],
+            "scope": "resource",
+            "type": "string"
+        },
         "Lua.completion.workspaceWord": {
             "default": true,
-            "markdownDescription": "Shows words within the workspace.",
+            "markdownDescription": "Whether the displayed context word contains the content of other files in the workspace.",
             "scope": "resource",
             "type": "boolean"
         },
@@ -100,6 +122,38 @@
             "scope": "resource",
             "type": "array"
         },
+        "Lua.diagnostics.ignoredFiles": {
+            "default": "Disable",
+            "enum": [
+                "Enable",
+                "Opened",
+                "Disable"
+            ],
+            "markdownDescription": "How to diagnose ignored files.",
+            "markdownEnumDescriptions": [
+                "Always diagnose these files.",
+                "Only when these files are opened will it be diagnosed.",
+                "These files are not diagnosed."
+            ],
+            "scope": "resource",
+            "type": "string"
+        },
+        "Lua.diagnostics.libraryFiles": {
+            "default": "Disable",
+            "enum": [
+                "Enable",
+                "Opened",
+                "Disable"
+            ],
+            "markdownDescription": "How to diagnose files loaded via `Lua.workspace.library`.",
+            "markdownEnumDescriptions": [
+                "Always diagnose these files.",
+                "Only when these files are opened will it be diagnosed.",
+                "These files are not diagnosed."
+            ],
+            "scope": "resource",
+            "type": "string"
+        },
         "Lua.diagnostics.neededFileStatus": {
             "markdownDescription": "If you want to check only opened files, choice Opened; else choice Any.\n",
             "properties": {
@@ -169,6 +223,17 @@
                     "scope": "resource",
                     "type": "string"
                 },
+                "different-requires": {
+                    "default": "Any",
+                    "description": "%config.diagnostics.different-requires%",
+                    "enum": [
+                        "Any",
+                        "Opened",
+                        "None"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "doc-field-no-class": {
                     "default": "Any",
                     "description": "%config.diagnostics.doc-field-no-class%",
@@ -557,6 +622,18 @@
                     "scope": "resource",
                     "type": "string"
                 },
+                "different-requires": {
+                    "default": "Warning",
+                    "description": "%config.diagnostics.different-requires%",
+                    "enum": [
+                        "Error",
+                        "Warning",
+                        "Information",
+                        "Hint"
+                    ],
+                    "scope": "resource",
+                    "type": "string"
+                },
                 "doc-field-no-class": {
                     "default": "Warning",
                     "description": "%config.diagnostics.doc-field-no-class%",
@@ -917,10 +994,20 @@
             "type": "boolean"
         },
         "Lua.hint.paramName": {
-            "default": true,
-            "markdownDescription": "Hint parameter name when the parameter called is literal.",
+            "default": "All",
+            "enum": [
+                "All",
+                "Literal",
+                "Disable"
+            ],
+            "markdownDescription": "Show hints of parameter name at the function call.",
+            "markdownEnumDescriptions": [
+                "All types of parameters are shown.",
+                "Only literal type parameters are shown.",
+                "Disable parameter hints."
+            ],
             "scope": "resource",
-            "type": "boolean"
+            "type": "string"
         },
         "Lua.hint.paramType": {
             "default": true,
@@ -930,7 +1017,7 @@
         },
         "Lua.hint.setType": {
             "default": false,
-            "markdownDescription": "Hint type at assignment operation.",
+            "markdownDescription": "Show hints of type at assignment operation.",
             "scope": "resource",
             "type": "boolean"
         },
@@ -1191,7 +1278,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "`package.path`",
+            "markdownDescription": "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'`, all `**/myfile/init.lua` will be searched from the loaded files.\nIf you want to load files outside the workspace, you need to set `Lua.workspace.library` first.\n",
             "scope": "resource",
             "type": "array"
         },
@@ -1297,7 +1384,7 @@
             "items": {
                 "type": "string"
             },
-            "markdownDescription": "The directory path of the external function library.\nThe language service will additionally load the lua files in these directories, even if they are not in the current workspace, for definition, completion and other features.\n",
+            "markdownDescription": "In addition to the current workspace, which directories will load files from.",
             "scope": "resource",
             "type": "array"
         },