Server sending duplicates Completion Items
I have discovered that the server is sending back two copies of Items. Am not yet acquainted with internals of LSP (If you can document somewhere so that we can help identifying and fixing issues like this) I will only post what response I get
{
"jsonrpc": "2.0",
"id": 7,
"result": {
"isIncomplete": true,
"items": [
{
"filterText": "request",
"kind": 10,
"insertText": "request",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "request"
},
"label": "request",
"documentation": "The request component. This property is read-only.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "Request \u2014 public \u2014 Application"
},
{
"filterText": "request",
"kind": 10,
"insertText": "request",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "request"
},
"label": "request",
"documentation": "The request component. This property is read-only.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "Request \u2014 public \u2014 Application"
},
{
"filterText": "requestedRoute",
"kind": 10,
"insertText": "requestedRoute",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "requestedRoute"
},
"label": "requestedRoute",
"documentation": "the requested route",
"additionalTextEdits": [],
"deprecated": false,
"detail": "string \u2014 public \u2014 Application"
},
{
"filterText": "requestedRoute",
"kind": 10,
"insertText": "requestedRoute",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "requestedRoute"
},
"label": "requestedRoute",
"documentation": "the requested route",
"additionalTextEdits": [],
"deprecated": false,
"detail": "string \u2014 public \u2014 Application"
},
{
"filterText": "requestedAction",
"kind": 10,
"insertText": "requestedAction",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "requestedAction"
},
"label": "requestedAction",
"documentation": "the requested Action. If null, it means the request cannot be resolved into an action.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "Action \u2014 public \u2014 Application"
},
{
"filterText": "requestedParams",
"kind": 10,
"insertText": "requestedParams",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "requestedParams"
},
"label": "requestedParams",
"documentation": "the parameters supplied to the requested action.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "array \u2014 public \u2014 Application"
},
{
"filterText": "requestedAction",
"kind": 10,
"insertText": "requestedAction",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "requestedAction"
},
"label": "requestedAction",
"documentation": "the requested Action. If null, it means the request cannot be resolved into an action.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "Action \u2014 public \u2014 Application"
},
{
"filterText": "requestedParams",
"kind": 10,
"insertText": "requestedParams",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "requestedParams"
},
"label": "requestedParams",
"documentation": "the parameters supplied to the requested action.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "array \u2014 public \u2014 Application"
},
{
"filterText": "getRequest",
"kind": 2,
"insertText": "getRequest()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "getRequest()$0"
},
"label": "getRequest()",
"documentation": "Returns the request component.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "Request \u2014 public \u2014 Application"
},
{
"filterText": "getRequest",
"kind": 2,
"insertText": "getRequest()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "getRequest()$0"
},
"label": "getRequest()",
"documentation": "Returns the request component.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "Request \u2014 public \u2014 Application"
},
{
"filterText": "handleRequest",
"kind": 2,
"insertText": "handleRequest($0)",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "handleRequest($0)"
},
"label": "handleRequest($request)",
"documentation": "Handles the specified request.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "Response \u2014 public \u2014 Application"
},
{
"filterText": "handleRequest",
"kind": 2,
"insertText": "handleRequest($0)",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "handleRequest($0)"
},
"label": "handleRequest($request)",
"documentation": "Handles the specified request.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "Response \u2014 public \u2014 Application"
},
{
"filterText": "setModules",
"kind": 2,
"insertText": "setModules($0)",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "setModules($0)"
},
"label": "setModules($modules)",
"documentation": "Registers sub-modules in the current module.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "void \u2014 public \u2014 Module"
},
{
"filterText": "setModules",
"kind": 2,
"insertText": "setModules($0)",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "setModules($0)"
},
"label": "setModules($modules)",
"documentation": "Registers sub-modules in the current module.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "void \u2014 public \u2014 Module"
},
{
"filterText": "getModules",
"kind": 2,
"insertText": "getModules()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "getModules()$0"
},
"label": "getModules([$loadedOnly = false])",
"documentation": "Returns the sub-modules in this module.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "array \u2014 public \u2014 Module"
},
{
"filterText": "getModules",
"kind": 2,
"insertText": "getModules()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "getModules()$0"
},
"label": "getModules([$loadedOnly = false])",
"documentation": "Returns the sub-modules in this module.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "array \u2014 public \u2014 Module"
},
{
"filterText": "getUniqueId",
"kind": 2,
"insertText": "getUniqueId()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "getUniqueId()$0"
},
"label": "getUniqueId()",
"documentation": "Returns an ID that uniquely identifies this module among all modules within the current application.\nSince this is an application instance, it will always return an empty string.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "string \u2014 public \u2014 Application"
},
{
"filterText": "getUniqueId",
"kind": 2,
"insertText": "getUniqueId()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "getUniqueId()$0"
},
"label": "getUniqueId()",
"documentation": "Returns an ID that uniquely identifies this module among all modules within the current application.\nSince this is an application instance, it will always return an empty string.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "string \u2014 public \u2014 Application"
},
{
"filterText": "loadedModules",
"kind": 10,
"insertText": "loadedModules",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "loadedModules"
},
"label": "loadedModules",
"documentation": "list of loaded modules indexed by their class names.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "array \u2014 public \u2014 Application"
},
{
"filterText": "loadedModules",
"kind": 10,
"insertText": "loadedModules",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "loadedModules"
},
"label": "loadedModules",
"documentation": "list of loaded modules indexed by their class names.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "array \u2014 public \u2014 Application"
},
{
"filterText": "coreComponents",
"kind": 2,
"insertText": "coreComponents()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "coreComponents()$0"
},
"label": "coreComponents()",
"documentation": "Returns the configuration of core application components.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "void \u2014 public \u2014 Application"
},
{
"filterText": "defaultVersion",
"kind": 2,
"insertText": "defaultVersion()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "defaultVersion()$0"
},
"label": "defaultVersion()",
"documentation": "Returns default module version.\nChild class may override this method to provide more specific version detection.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "string \u2014 protected \u2014 Module"
},
{
"filterText": "coreComponents",
"kind": 2,
"insertText": "coreComponents()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "coreComponents()$0"
},
"label": "coreComponents()",
"documentation": "Returns the configuration of core application components.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "void \u2014 public \u2014 Application"
},
{
"filterText": "defaultVersion",
"kind": 2,
"insertText": "defaultVersion()$0",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "defaultVersion()$0"
},
"label": "defaultVersion()",
"documentation": "Returns default module version.\nChild class may override this method to provide more specific version detection.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "string \u2014 protected \u2014 Module"
},
{
"filterText": "controllerNamespace",
"kind": 10,
"insertText": "controllerNamespace",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "controllerNamespace"
},
"label": "controllerNamespace",
"documentation": "the namespace that controller classes are located in.\nThis namespace will be used to load controller classes by prepending it to the controller class name.\nThe default namespace is `app\\controllers`.\n\nPlease refer to the [guide about class autoloading](guide:concept-autoloading.md) for more details.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "string \u2014 public \u2014 Application"
},
{
"filterText": "controllerNamespace",
"kind": 10,
"insertText": "controllerNamespace",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": { "line": 153, "character": 31 },
"end": { "line": 153, "character": 37 }
},
"newText": "controllerNamespace"
},
"label": "controllerNamespace",
"documentation": "the namespace that controller classes are located in.\nThis namespace will be used to load controller classes by prepending it to the controller class name.\nThe default namespace is `app\\controllers`.\n\nPlease refer to the [guide about class autoloading](guide:concept-autoloading.md) for more details.",
"additionalTextEdits": [],
"deprecated": false,
"detail": "string \u2014 public \u2014 Application"
}
]
}
}