Closed quantum-booty closed 2 years ago
Thanks for reporting, I've repro'd in VSCode.
This error is caused by a classic off-by-one error in the textDocument/completions
handler here. This older code is doing manual string extraction and bounds-checks instead of using some of the more recent ISourceText-based APIs that we have made specifically to sidestep these kinds of problems. Should be a quick fix, then I'll release a hotfix.
@baronfel I did dotnet tool update --global fsautocomplete
, but I am still experiencing the same behaviour. No completion if there is something before cursor, and no completion inside function block.
This is the FSAC version that neovim sees
That version should be correct - with that same version in Ionide I cannot reproduce any issue you've reported here :-/
@baronfel I am getting this error in funcion
Can you get the raw LSP call for the textDocument/completion
call being sent for this file?
here I tried to type: set a = pr
[START][2022-03-12 20:24:18] LSP logging initiated
[INFO][2022-03-12 20:24:18] .../vim/lsp/rpc.lua:261 "Starting RPC client" { args = { "--background-service-enabled" }, cmd = "fsautocomplete", extra = { cwd = "/home/henryw/Documents/Projects/F#/quicksort", env = { DOTNET_ROLL_FORWARD = "LatestMajor" } }}
[DEBUG][2022-03-12 20:24:18] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 1, jsonrpc = "2.0", method = "initialize", params = { capabilities = { callHierarchy = { dynamicRegistration = false }, textDocument = { codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" } } }, dataSupport = true, dynamicRegistration = false, resolveSupport = { properties = { "edit" } } }, completion = { completionItem = { commitCharactersSupport = true, deprecatedSupport = true, documentationFormat = { "markdown", "plaintext" }, insertReplaceSupport = true, labelDetailsSupport = true, preselectSupport = true, resolveSupport = { properties = { "documentation", "detail", "additionalTextEdits" } }, snippetSupport = true, tagSupport = { valueSet = { 1 } } }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 } }, contextSupport = false, dynamicRegistration = false }, declaration = { linkSupport = true }, definition = { linkSupport = true }, documentHighlight = { dynamicRegistration = false }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 } } }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false }, implementation = { linkSupport = true }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 } } }, references = { dynamicRegistration = false }, rename = { dynamicRegistration = false, prepareSupport = true }, signatureHelp = { dynamicRegistration = false, signatureInformation = { activeParameterSupport = true, documentationFormat = { "markdown", "plaintext" }, parameterInformation = { labelOffsetSupport = true } } }, synchronization = { didSave = true, dynamicRegistration = false, willSave = false, willSaveWaitUntil = false }, typeDefinition = { linkSupport = true } }, window = { showDocument = { support = false }, showMessage = { messageActionItem = { additionalPropertiesSupport = false } }, workDoneProgress = true }, workspace = { applyEdit = true, configuration = true, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 } } }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" } }, workspaceFolders = true } }, clientInfo = { name = "Neovim", version = "0.7.0" }, initializationOptions = { AutomaticWorkspaceInit = true }, processId = 9840, rootPath = "/home/henryw/Documents/Projects/F#/quicksort", rootUri = "file:///home/henryw/Documents/Projects/F%23/quicksort", trace = "off", workspaceFolders = { { name = "/home/henryw/Documents/Projects/F#/quicksort", uri = "file:///home/henryw/Documents/Projects/F%23/quicksort" } } }}
[DEBUG][2022-03-12 20:24:19] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/notifyWorkspacePeek", params = { content = '{"Kind":"workspacePeek","Data":{"Found":[{"Type":"directory","Data":{"Directory":"/home/henryw/Documents/Projects/F#/quicksort","Fsprojs":["/home/henryw/Documents/Projects/F#/quicksort/quicksort.fsproj"]}}]}}' }}
[DEBUG][2022-03-12 20:24:19] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 1, jsonrpc = "2.0", result = { capabilities = { codeActionProvider = vim.empty_dict(), codeLensProvider = { resolveProvider = true }, completionProvider = { resolveProvider = true, triggerCharacters = { ".", "'" } }, definitionProvider = true, documentFormattingProvider = true, documentHighlightProvider = true, documentRangeFormattingProvider = false, documentSymbolProvider = true, foldingRangeProvider = true, hoverProvider = true, implementationProvider = true, referencesProvider = true, renameProvider = true, selectionRangeProvider = true, semanticTokensProvider = { full = true, legend = { tokenModifiers = { "declaration", "definition", "readonly", "static", "deprecated", "abstract", "async", "modification", "documentation", "defaultLibrary", "mutable", "disposable" }, tokenTypes = { "namespace", "type", "class", "enum", "interface", "struct", "typeParameter", "parameter", "variable", "property", "enumMember", "event", "function", "method", "macro", "keyword", "modifier", "comment", "string", "number", "regexp", "operator", "member", "cexpr", "text" } }, range = true }, signatureHelpProvider = { retriggerCharacters = { ",", ")", " " }, triggerCharacters = { "(", ",", " " } }, textDocumentSync = { change = 1, openClose = true, save = { includeText = true } }, typeDefinitionProvider = true, workspaceSymbolProvider = true } }}
[DEBUG][2022-03-12 20:24:19] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "initialized", params = vim.empty_dict()}
[DEBUG][2022-03-12 20:24:19] .../lua/vim/lsp.lua:982 "LSP[ionide]" "server_capabilities" { codeActionProvider = vim.empty_dict(), codeLensProvider = { resolveProvider = true }, completionProvider = { resolveProvider = true, triggerCharacters = { ".", "'" } }, definitionProvider = true, documentFormattingProvider = true, documentHighlightProvider = true, documentRangeFormattingProvider = false, documentSymbolProvider = true, foldingRangeProvider = true, hoverProvider = true, implementationProvider = true, referencesProvider = true, renameProvider = true, selectionRangeProvider = true, semanticTokensProvider = { full = true, legend = { tokenModifiers = { "declaration", "definition", "readonly", "static", "deprecated", "abstract", "async", "modification", "documentation", "defaultLibrary", "mutable", "disposable" }, tokenTypes = { "namespace", "type", "class", "enum", "interface", "struct", "typeParameter", "parameter", "variable", "property", "enumMember", "event", "function", "method", "macro", "keyword", "modifier", "comment", "string", "number", "regexp", "operator", "member", "cexpr", "text" } }, range = true }, signatureHelpProvider = { retriggerCharacters = { ",", ")", " " }, triggerCharacters = { "(", ",", " " } }, textDocumentSync = { change = 1, openClose = true, save = { includeText = true } }, typeDefinitionProvider = true, workspaceSymbolProvider = true}
[INFO][2022-03-12 20:24:19] .../lua/vim/lsp.lua:983 "LSP[ionide]" "initialized" { resolved_capabilities = { call_hierarchy = false, code_action = vim.empty_dict(), code_lens = true, code_lens_resolve = true, completion = true, declaration = false, document_formatting = true, document_highlight = true, document_range_formatting = false, document_symbol = true, execute_command = false, find_references = true, goto_definition = true, hover = true, implementation = true, rename = true, signature_help = true, signature_help_trigger_characters = { "(", ",", " " }, text_document_did_change = 1, text_document_open_close = true, text_document_save = { includeText = true }, text_document_save_include_text = true, text_document_will_save = false, text_document_will_save_wait_until = false, type_definition = true, workspace_folder_properties = { changeNotifications = false, supported = false }, workspace_symbol = true }}
[DEBUG][2022-03-12 20:24:19] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didOpen", params = { textDocument = { languageId = "fsharp", text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\n\r\n', uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 0 } }}
[DEBUG][2022-03-12 20:24:19] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/notifyWorkspace", params = { content = '{"Kind":"workspaceLoad","Data":{"Status":"started"}}' }}
[DEBUG][2022-03-12 20:24:19] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/notifyWorkspace", params = { content = '{"Kind":"projectLoading","Data":{"Project":"/home/henryw/Documents/Projects/F#/quicksort/quicksort.fsproj"}}' }}
[DEBUG][2022-03-12 20:24:19] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/notifyWorkspace", params = { content = '{"Kind":"project","Data":{"Project":"/home/henryw/Documents/Projects/F#/quicksort/quicksort.fsproj","Files":["/home/henryw/Documents/Projects/F#/quicksort/Program.fs"],"Output":"/home/henryw/Documents/Projects/F#/quicksort/bin/Debug/net6.0/quicksort.dll","ProjectReferences":[],"PackageReferences":[{"Name":"FSharp.Core","Version":"6.0.1","FullPath":"/home/henryw/.nuget/packages/fsharp.core/6.0.1/lib/netstandard2.1/FSharp.Core.dll"}],"References":["/home/henryw/.nuget/packages/fsharp.core/6.0.1/lib/netstandard2.1/FSharp.Core.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/Microsoft.CSharp.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/Microsoft.VisualBasic.Core.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/Microsoft.VisualBasic.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/Microsoft.Win32.Primitives.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/Microsoft.Win32.Registry.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.AppContext.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Buffers.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Collections.Concurrent.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Collections.Immutable.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Collections.NonGeneric.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Collections.Specialized.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Collections.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ComponentModel.Annotations.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ComponentModel.DataAnnotations.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ComponentModel.EventBasedAsync.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ComponentModel.Primitives.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ComponentModel.TypeConverter.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ComponentModel.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Configuration.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Console.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Core.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Data.Common.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Data.DataSetExtensions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Data.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.Contracts.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.Debug.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.DiagnosticSource.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.FileVersionInfo.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.Process.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.StackTrace.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.TextWriterTraceListener.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.Tools.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.TraceSource.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Diagnostics.Tracing.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Drawing.Primitives.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Drawing.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Dynamic.Runtime.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Formats.Asn1.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Globalization.Calendars.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Globalization.Extensions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Globalization.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.Compression.Brotli.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.Compression.FileSystem.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.Compression.ZipFile.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.Compression.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.FileSystem.AccessControl.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.FileSystem.DriveInfo.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.FileSystem.Primitives.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.FileSystem.Watcher.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.FileSystem.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.IsolatedStorage.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.MemoryMappedFiles.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.Pipes.AccessControl.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.Pipes.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.UnmanagedMemoryStream.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.IO.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Linq.Expressions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Linq.Parallel.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Linq.Queryable.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Linq.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Memory.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.Http.Json.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.Http.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.HttpListener.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.Mail.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.NameResolution.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.NetworkInformation.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.Ping.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.Primitives.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.Requests.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.Security.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.ServicePoint.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.Sockets.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.WebClient.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.WebHeaderCollection.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.WebProxy.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.WebSockets.Client.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.WebSockets.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Net.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Numerics.Vectors.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Numerics.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ObjectModel.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.DispatchProxy.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.Emit.ILGeneration.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.Emit.Lightweight.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.Emit.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.Extensions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.Metadata.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.Primitives.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.TypeExtensions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Reflection.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Resources.Reader.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Resources.ResourceManager.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Resources.Writer.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.CompilerServices.Unsafe.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.CompilerServices.VisualC.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Extensions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Handles.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.InteropServices.RuntimeInformation.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.InteropServices.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Intrinsics.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Loader.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Numerics.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Serialization.Formatters.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Serialization.Json.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Serialization.Primitives.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Serialization.Xml.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.Serialization.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Runtime.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.AccessControl.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Claims.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Cryptography.Algorithms.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Cryptography.Cng.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Cryptography.Csp.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Cryptography.Encoding.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Cryptography.OpenSsl.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Cryptography.Primitives.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Cryptography.X509Certificates.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Principal.Windows.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.Principal.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.SecureString.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Security.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ServiceModel.Web.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ServiceProcess.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Text.Encoding.CodePages.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Text.Encoding.Extensions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Text.Encoding.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Text.Encodings.Web.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Text.Json.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Text.RegularExpressions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.Channels.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.Overlapped.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.Tasks.Dataflow.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.Tasks.Extensions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.Tasks.Parallel.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.Tasks.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.Thread.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.ThreadPool.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.Timer.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Threading.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Transactions.Local.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Transactions.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.ValueTuple.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Web.HttpUtility.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Web.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Windows.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.Linq.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.ReaderWriter.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.Serialization.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.XDocument.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.XPath.XDocument.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.XPath.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.XmlDocument.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.XmlSerializer.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.Xml.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/System.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/WindowsBase.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/mscorlib.dll","/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.2/ref/net6.0/netstandard.dll"],"OutputType":"exe","Info":{"IsTestProject":false,"Configuration":"Debug","IsPackable":true,"TargetFramework":"net6.0","TargetFrameworkIdentifier":".NETCoreApp","TargetFrameworkVersion":"v6.0","RestoreSuccess":true,"TargetFrameworks":[],"RunCmd":{"Command":"/home/henryw/Documents/Projects/F#/quicksort/bin/Debug/net6.0/quicksort","Arguments":""},"IsPublishable":true},"Items":[{"Name":"Compile","FilePath":"/home/henryw/Documents/Projects/F#/quicksort/Program.fs","VirtualPath":"Program.fs","Metadata":{}}],"AdditionalInfo":{}}}' }}
[DEBUG][2022-03-12 20:24:19] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/notifyWorkspace", params = { content = '{"Kind":"workspaceLoad","Data":{"Status":"finished"}}' }}
[DEBUG][2022-03-12 20:24:24] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nl\r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 4 } }}
[DEBUG][2022-03-12 20:24:24] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/completion" { context = { triggerKind = 1 }, position = { character = 1, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:24] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 2, jsonrpc = "2.0", method = "textDocument/completion", params = { context = { triggerKind = 1 }, position = { character = 1, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:25] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nle\r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 5 } }}
[DEBUG][2022-03-12 20:24:25] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet\r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 6 } }}
[DEBUG][2022-03-12 20:24:25] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "$/cancelRequest", params = { id = 2 }}
[DEBUG][2022-03-12 20:24:25] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/completion" { context = { triggerKind = 1 }, position = { character = 3, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:25] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 3, jsonrpc = "2.0", method = "textDocument/completion", params = { context = { triggerKind = 1 }, position = { character = 3, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/fileParsed", params = { content = "/home/henryw/Documents/Projects/F#/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "textDocument/publishDiagnostics", params = { diagnostics = { { code = "10", codeDescription = { href = "https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0010" }, debuggerDisplay = "[Error] ((31,0)-(31,0)) Incomplete structured construct at or before this point in binding (10)", message = "Incomplete structured construct at or before this point in binding", range = { debuggerDisplay = "(31,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(31,0)", line = 31 } }, relatedInformation = {}, severity = 1, source = "F# Compiler" } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:26] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/documentSymbol" { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 4, jsonrpc = "2.0", method = "textDocument/documentSymbol", params = { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 3, jsonrpc = "2.0", result = { isIncomplete = false, items = {} }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 4, jsonrpc = "2.0", result = { { kind = 2, location = { range = { debuggerDisplay = "(0,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(0,0)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "Program" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(0,8)-(16,38)", end = { character = 38, debuggerDisplay = "(16,38)", line = 16 }, start = { character = 8, debuggerDisplay = "(0,8)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "quicksort" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(19,4)-(27,41)", end = { character = 41, debuggerDisplay = "(27,41)", line = 27 }, start = { character = 4, debuggerDisplay = "(19,4)", line = 19 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "ric" } }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 2, jsonrpc = "2.0", result = { isIncomplete = false, items = { { filterText = "async", insertText = "async", kind = 6, label = "async", sortText = "000000" }, { filterText = "backgroundTask", insertText = "backgroundTask", kind = 6, label = "backgroundTask", sortText = "000001" }, { filterText = "infinity", insertText = "infinity", kind = 6, label = "infinity", sortText = "000002" }, { filterText = "infinityf", insertText = "infinityf", kind = 6, label = "infinityf", sortText = "000003" }, { filterText = "nan", insertText = "nan", kind = 6, label = "nan", sortText = "000004" }, { filterText = "nanf", insertText = "nanf", kind = 6, label = "nanf", sortText = "000005" }, { filterText = "query", insertText = "query", kind = 6, label = "query", sortText = "000006" }, { filterText = "sizeof", insertText = "sizeof", kind = 6, label = "sizeof", sortText = "000007" }, { filterText = "stderr", insertText = "stderr", kind = 6, label = "stderr", sortText = "000008" }, { filterText = "stdin", insertText = "stdin", kind = 6, label = "stdin", sortText = "000009" }, { filterText = "stdout", insertText = "stdout", kind = 6, label = "stdout", sortText = "000010" }, { filterText = "task", insertText = "task", kind = 6, label = "task", sortText = "000011" }, { filterText = "typedefof", insertText = "typedefof", kind = 6, label = "typedefof", sortText = "000012" }, { filterText = "typeof", insertText = "typeof", kind = 6, label = "typeof", sortText = "000013" }, { filterText = "abs", insertText = "abs", kind = 2, label = "abs", sortText = "000014" }, { filterText = "acos", insertText = "acos", kind = 2, label = "acos", sortText = "000015" }, { filterText = "array2D", insertText = "array2D", kind = 2, label = "array2D", sortText = "000016" }, { filterText = "asin", insertText = "asin", kind = 2, label = "asin", sortText = "000017" }, { filterText = "atan", insertText = "atan", kind = 2, label = "atan", sortText = "000018" }, { filterText = "atan2", insertText = "atan2", kind = 2, label = "atan2", sortText = "000019" }, { filterText = "box", insertText = "box", kind = 2, label = "box", sortText = "000020" }, { filterText = "byte", insertText = "byte", kind = 2, label = "byte", sortText = "000021" }, { filterText = "ceil", insertText = "ceil", kind = 2, label = "ceil", sortText = "000022" }, { filterText = "char", insertText = "char", kind = 2, label = "char", sortText = "000023" }, { filterText = "compare", insertText = "compare", kind = 2, label = "compare", sortText = "000024" }, { filterText = "cos", insertText = "cos", kind = 2, label = "cos", sortText = "000025" }, { filterText = "cosh", insertText = "cosh", kind = 2, label = "cosh", sortText = "000026" }, { filterText = "decimal", insertText = "decimal", kind = 2, label = "decimal", sortText = "000027" }, { filterText = "decr", insertText = "decr", kind = 2, label = "decr", sortText = "000028" }, { filterText = "defaultArg", insertText = "defaultArg", kind = 2, label = "defaultArg", sortText = "000029" }, { filterText = "defaultValueArg", insertText = "defaultValueArg", kind = 2, label = "defaultValueArg", sortText = "000030" }, { filterText = "dict", insertText = "dict", kind = 2, label = "dict", sortText = "000031" }, { filterText = "double", insertText = "double", kind = 2, label = "double", sortText = "000032" }, { filterText = "enum", insertText = "enum", kind = 2, label = "enum", sortText = "000033" }, { filterText = "eprintf", insertText = "eprintf", kind = 2, label = "eprintf", sortText = "000034" }, { filterText = "eprintfn", insertText = "eprintfn", kind = 2, label = "eprintfn", sortText = "000035" }, { filterText = "exit", insertText = "exit", kind = 2, label = "exit", sortText = "000036" }, { filterText = "exp", insertText = "exp", kind = 2, label = "exp", sortText = "000037" }, { filterText = "Failure", insertText = "Failure", kind = 2, label = "Failure", sortText = "000038" }, { filterText = "failwith", insertText = "failwith", kind = 2, label = "failwith", sortText = "000039" }, { filterText = "failwithf", insertText = "failwithf", kind = 2, label = "failwithf", sortText = "000040" }, { filterText = "float", insertText = "float", kind = 2, label = "float", sortText = "000041" }, { filterText = "float32", insertText = "float32", kind = 2, label = "float32", sortText = "000042" }, { filterText = "floor", insertText = "floor", kind = 2, label = "floor", sortText = "000043" }, { filterText = "fprintf", insertText = "fprintf", kind = 2, label = "fprintf", sortText = "000044" }, { filterText = "fprintfn", insertText = "fprintfn", kind = 2, label = "fprintfn", sortText = "000045" }, { filterText = "fst", insertText = "fst", kind = 2, label = "fst", sortText = "000046" }, { filterText = "hash", insertText = "hash", kind = 2, label = "hash", sortText = "000047" }, { filterText = "id", insertText = "id", kind = 2, label = "id", sortText = "000048" }, { filterText = "ignore", insertText = "ignore", kind = 2, label = "ignore", sortText = "000049" }, { filterText = "incr", insertText = "incr", kind = 2, label = "incr", sortText = "000050" }, { filterText = "int", insertText = "int", kind = 2, label = "int", sortText = "000051" }, { filterText = "int16", insertText = "int16", kind = 2, label = "int16", sortText = "000052" }, { filterText = "int32", insertText = "int32", kind = 2, label = "int32", sortText = "000053" }, { filterText = "int64", insertText = "int64", kind = 2, label = "int64", sortText = "000054" }, { filterText = "int8", insertText = "int8", kind = 2, label = "int8", sortText = "000055" }, { filterText = "invalidArg", insertText = "invalidArg", kind = 2, label = "invalidArg", sortText = "000056" }, { filterText = "invalidOp", insertText = "invalidOp", kind = 2, label = "invalidOp", sortText = "000057" }, { filterText = "isNull", insertText = "isNull", kind = 2, label = "isNull", sortText = "000058" }, { filterText = "limitedHash", insertText = "limitedHash", kind = 2, label = "limitedHash", sortText = "000059" }, { filterText = "lock", insertText = "lock", kind = 2, label = "lock", sortText = "000060" }, { filterText = "log", insertText = "log", kind = 2, label = "log", sortText = "000061" }, { filterText = "log10", insertText = "log10", kind = 2, label = "log10", sortText = "000062" }, { filterText = "max", insertText = "max", kind = 2, label = "max", sortText = "000063" }, { filterText = "min", insertText = "min", kind = 2, label = "min", sortText = "000064" }, { filterText = "nameof", insertText = "nameof", kind = 2, label = "nameof", sortText = "000065" }, { filterText = "nativeint", insertText = "nativeint", kind = 2, label = "nativeint", sortText = "000066" }, { filterText = "not", insertText = "not", kind = 2, label = "not", sortText = "000067" }, { filterText = "nullArg", insertText = "nullArg", kind = 2, label = "nullArg", sortText = "000068" }, { filterText = "pown", insertText = "pown", kind = 2, label = "pown", sortText = "000069" }, { filterText = "printf", insertText = "printf", kind = 2, label = "printf", sortText = "000070" }, { filterText = "printfn", insertText = "printfn", kind = 2, label = "printfn", sortText = "000071" }, { filterText = "quicksort", insertText = "quicksort", kind = 2, label = "quicksort", sortText = "000072" }, { filterText = "raise", insertText = "raise", kind = 2, label = "raise", sortText = "000073" }, { filterText = "readOnlyDict", insertText = "readOnlyDict", kind = 2, label = "readOnlyDict", sortText = "000074" }, { filterText = "ref", insertText = "ref", kind = 2, label = "ref", sortText = "000075" }, { filterText = "reraise", insertText = "reraise", kind = 2, label = "reraise", sortText = "000076" }, { filterText = "ric", insertText = "ric", kind = 2, label = "ric", sortText = "000077" }, { filterText = "round", insertText = "round", kind = 2, label = "round", sortText = "000078" }, { filterText = "sbyte", insertText = "sbyte", kind = 2, label = "sbyte", sortText = "000079" }, { filterText = "seq", insertText = "seq", kind = 2, label = "seq", sortText = "000080" }, { filterText = "set", insertText = "set", kind = 2, label = "set", sortText = "000081" }, { filterText = "sign", insertText = "sign", kind = 2, label = "sign", sortText = "000082" }, { filterText = "sin", insertText = "sin", kind = 2, label = "sin", sortText = "000083" }, { filterText = "single", insertText = "single", kind = 2, label = "single", sortText = "000084" }, { filterText = "sinh", insertText = "sinh", kind = 2, label = "sinh", sortText = "000085" }, { filterText = "snd", insertText = "snd", kind = 2, label = "snd", sortText = "000086" }, { filterText = "sprintf", insertText = "sprintf", kind = 2, label = "sprintf", sortText = "000087" }, { filterText = "sqrt", insertText = "sqrt", kind = 2, label = "sqrt", sortText = "000088" }, { filterText = "string", insertText = "string", kind = 2, label = "string", sortText = "000089" }, { filterText = "tan", insertText = "tan", kind = 2, label = "tan", sortText = "000090" }, { filterText = "tanh", insertText = "tanh", kind = 2, label = "tanh", sortText = "000091" }, { filterText = "truncate", insertText = "truncate", kind = 2, label = "truncate", sortText = "000092" }, { filterText = "tryUnbox", insertText = "tryUnbox", kind = 2, label = "tryUnbox", sortText = "000093" }, { filterText = "uint", insertText = "uint", kind = 2, label = "uint", sortText = "000094" }, { filterText = "uint16", insertText = "uint16", kind = 2, label = "uint16", sortText = "000095" }, { filterText = "uint32", insertText = "uint32", kind = 2, label = "uint32", sortText = "000096" }, { filterText = "uint64", insertText = "uint64", kind = 2, label = "uint64", sortText = "000097" }, { filterText = "uint8", insertText = "uint8", kind = 2, label = "uint8", sortText = "000098" }, { filterText = "unativeint", insertText = "unativeint", kind = 2, label = "unativeint", sortText = "000099" }, { filterText = "unbox", insertText = "unbox", kind = 2, label = "unbox", sortText = "000100" }, { filterText = "using", insertText = "using", kind = 2, label = "using", sortText = "000101" }, { filterText = "AbstractClassAttribute", insertText = "AbstractClassAttribute", kind = 7, label = "AbstractClassAttribute", sortText = "000102" }, { filterText = "AllowNullLiteralAttribute", insertText = "AllowNullLiteralAttribute", kind = 7, label = "AllowNullLiteralAttribute", sortText = "000103" }, { filterText = "Array", insertText = "Array", kind = 9, label = "Array", sortText = "000104" }, { filterText = "array", insertText = "array", kind = 7, label = "array", sortText = "000105" }, { filterText = "Array2D", insertText = "Array2D", kind = 9, label = "Array2D", sortText = "000106" }, { filterText = "Array3D", insertText = "Array3D", kind = 9, label = "Array3D", sortText = "000107" }, { filterText = "Array4D", insertText = "Array4D", kind = 9, label = "Array4D", sortText = "000108" }, { filterText = "ArrayExtensions", insertText = "ArrayExtensions", kind = 9, label = "ArrayExtensions", sortText = "000109" }, { filterText = "Async", insertText = "Async", kind = 7, label = "Async", sortText = "000110" }, { filterText = "AsyncActivation", insertText = "AsyncActivation", kind = 22, label = "AsyncActivation", sortText = "000111" }, { filterText = "AsyncBuilder", insertText = "AsyncBuilder", kind = 7, label = "AsyncBuilder", sortText = "000112" }, { filterText = "AsyncPrimitives", insertText = "AsyncPrimitives", kind = 9, label = "AsyncPrimitives", sortText = "000113" }, { filterText = "AsyncReplyChannel", insertText = "AsyncReplyChannel", kind = 7, label = "AsyncReplyChannel", sortText = "000114" }, { filterText = "AsyncReturn", insertText = "AsyncReturn", kind = 7, label = "AsyncReturn", sortText = "000115" }, { filterText = "AutoOpenAttribute", insertText = "AutoOpenAttribute", kind = 7, label = "AutoOpenAttribute", sortText = "000116" }, { filterText = "AutoSerializableAttribute", insertText = "AutoSerializableAttribute", kind = 7, label = "AutoSerializableAttribute", sortText = "000117" }, { filterText = "BackgroundTaskBuilder", insertText = "BackgroundTaskBuilder", kind = 7, label = "BackgroundTaskBuilder", sortText = "000118" }, { filterText = "bigint", insertText = "bigint", kind = 22, label = "bigint", sortText = "000119" }, { filterText = "bool", insertText = "bool", kind = 22, label = "bool", sortText = "000120" }, { filterText = "byref", insertText = "byref", kind = 7, label = "byref", sortText = "000121" }, { filterText = "Checked", insertText = "Checked", kind = 9, label = "Checked", sortText = "000122" }, { filterText = "Choice", insertText = "Choice", kind = 7, label = "Choice", sortText = "000123" }, { filterText = "Choice1Of2", insertText = "Choice1Of2", kind = 20, label = "Choice1Of2", sortText = "000124" }, { filterText = "Choice1Of3", insertText = "Choice1Of3", kind = 20, label = "Choice1Of3", sortText = "000125" }, { filterText = "Choice1Of4", insertText = "Choice1Of4", kind = 20, label = "Choice1Of4", sortText = "000126" }, { filterText = "Choice1Of5", insertText = "Choice1Of5", kind = 20, label = "Choice1Of5", sortText = "000127" }, { filterText = "Choice1Of6", insertText = "Choice1Of6", kind = 20, label = "Choice1Of6", sortText = "000128" }, { filterText = "Choice1Of7", insertText = "Choice1Of7", kind = 20, label = "Choice1Of7", sortText = "000129" }, { filterText = "Choice2Of2", insertText = "Choice2Of2", kind = 20, label = "Choice2Of2", sortText = "000130" }, { filterText = "Choice2Of3", insertText = "Choice2Of3", kind = 20, label = "Choice2Of3", sortText = "000131" }, { filterText = "Choice2Of4", insertText = "Choice2Of4", kind = 20, label = "Choice2Of4", sortText = "000132" }, { filterText = "Choice2Of5", insertText = "Choice2Of5", kind = 20, label = "Choice2Of5", sortText = "000133" }, { filterText = "Choice2Of6", insertText = "Choice2Of6", kind = 20, label = "Choice2Of6", sortText = "000134" }, { filterText = "Choice2Of7", insertText = "Choice2Of7", kind = 20, label = "Choice2Of7", sortText = "000135" }, { filterText = "Choice3Of3", insertText = "Choice3Of3", kind = 20, label = "Choice3Of3", sortText = "000136" }, { filterText = "Choice3Of4", insertText = "Choice3Of4", kind = 20, label = "Choice3Of4", sortText = "000137" }, { filterText = "Choice3Of5", insertText = "Choice3Of5", kind = 20, label = "Choice3Of5", sortText = "000138" }, { filterText = "Choice3Of6", insertText = "Choice3Of6", kind = 20, label = "Choice3Of6", sortText = "000139" }, { filterText = "Choice3Of7", insertText = "Choice3Of7", kind = 20, label = "Choice3Of7", sortText = "000140" }, { filterText = "Choice4Of4", insertText = "Choice4Of4", kind = 20, label = "Choice4Of4", sortText = "000141" }, { filterText = "Choice4Of5", insertText = "Choice4Of5", kind = 20, label = "Choice4Of5", sortText = "000142" }, { filterText = "Choice4Of6", insertText = "Choice4Of6", kind = 20, label = "Choice4Of6", sortText = "000143" }, { filterText = "Choice4Of7", insertText = "Choice4Of7", kind = 20, label = "Choice4Of7", sortText = "000144" }, { filterText = "Choice5Of5", insertText = "Choice5Of5", kind = 20, label = "Choice5Of5", sortText = "000145" }, { filterText = "Choice5Of6", insertText = "Choice5Of6", kind = 20, label = "Choice5Of6", sortText = "000146" }, { filterText = "Choice5Of7", insertText = "Choice5Of7", kind = 20, label = "Choice5Of7", sortText = "000147" }, { filterText = "Choice6Of6", insertText = "Choice6Of6", kind = 20, label = "Choice6Of6", sortText = "000148" }, { filterText = "Choice6Of7", insertText = "Choice6Of7", kind = 20, label = "Choice6Of7", sortText = "000149" }, { filterText = "Choice7Of7", insertText = "Choice7Of7", kind = 20, label = "Choice7Of7", sortText = "000150" }, { filterText = "ClassAttribute", insertText = "ClassAttribute", kind = 7, label = "ClassAttribute", sortText = "000151" }, { filterText = "CLIEventAttribute", insertText = "CLIEventAttribute", kind = 7, label = "CLIEventAttribute", sortText = "000152" }, { filterText = "CLIMutableAttribute", insertText = "CLIMutableAttribute", kind = 7, label = "CLIMutableAttribute", sortText = "000153" }, { filterText = "Collections", insertText = "Collections", kind = 9, label = "Collections", sortText = "000154" }, { filterText = "CommonExtensions", insertText = "CommonExtensions", kind = 9, label = "CommonExtensions", sortText = "000155" }, { filterText = "ComparisonConditionalOnAttribute", insertText = "ComparisonConditionalOnAttribute", kind = 7, label = "ComparisonConditionalOnAttribute", sortText = "000156" }, { filterText = "ComparisonIdentity", insertText = "ComparisonIdentity", kind = 9, label = "ComparisonIdentity", sortText = "000157" }, { filterText = "CompilationArgumentCountsAttribute", insertText = "CompilationArgumentCountsAttribute", kind = 7, label = "CompilationArgumentCountsAttribute", sortText = "000158" }, { filterText = "CompilationMappingAttribute", insertText = "CompilationMappingAttribute", kind = 7, label = "CompilationMappingAttribute", sortText = "000159" }, { filterText = "CompilationRepresentationAttribute", insertText = "CompilationRepresentationAttribute", kind = 7, label = "CompilationRepresentationAttribute", sortText = "000160" }, { filterText = "CompilationRepresentationFlags", insertText = "CompilationRepresentationFlags", kind = 13, label = "CompilationRepresentationFlags", sortText = "000161" }, { filterText = "CompilationSourceNameAttribute", insertText = "CompilationSourceNameAttribute", kind = 7, label = "CompilationSourceNameAttribute", sortText = "000162" }, { filterText = "CompiledNameAttribute", insertText = "CompiledNameAttribute", kind = 7, label = "CompiledNameAttribute", sortText = "000163" }, { filterText = "CompilerMessageAttribute", insertText = "CompilerMessageAttribute", kind = 7, label = "CompilerMessageAttribute", sortText = "000164" }, { filterText = "CompilerServices", insertText = "CompilerServices", kind = 9, label = "CompilerServices", sortText = "000165" }, { filterText = "Control", insertText = "Control", kind = 9, label = "Control", sortText = "000166" }, { filterText = "Core", insertText = "Core", kind = 9, label = "Core", sortText = "000167" }, { filterText = "CustomComparisonAttribute", insertText = "CustomComparisonAttribute", kind = 7, label = "CustomComparisonAttribute", sortText = "000168" }, { filterText = "CustomEqualityAttribute", insertText = "CustomEqualityAttribute", kind = 7, label = "CustomEqualityAttribute", sortText = "000169" }, { filterText = "CustomOperationAttribute", insertText = "CustomOperationAttribute", kind = 7, label = "CustomOperationAttribute", sortText = "000170" }, { filterText = "Data", insertText = "Data", kind = 9, label = "Data", sortText = "000171" }, { filterText = "DefaultAugmentationAttribute", insertText = "DefaultAugmentationAttribute", kind = 7, label = "DefaultAugmentationAttribute", sortText = "000172" }, { filterText = "DefaultValueAttribute", insertText = "DefaultValueAttribute", kind = 7, label = "DefaultValueAttribute", sortText = "000173" }, { filterText = "DelegateEvent", insertText = "DelegateEvent", kind = 7, label = "DelegateEvent", sortText = "000174" }, { filterText = "EntryPointAttribute", insertText = "EntryPointAttribute", kind = 7, label = "EntryPointAttribute", sortText = "000175" }, { filterText = "EqualityConditionalOnAttribute", insertText = "EqualityConditionalOnAttribute", kind = 7, label = "EqualityConditionalOnAttribute", sortText = "000176" }, { filterText = "Error", insertText = "Error", kind = 20, label = "Error", sortText = "000177" }, { filterText = "Event", insertText = "Event", kind = 9, label = "Event", sortText = "000178" }, { filterText = "exn", insertText = "exn", kind = 7, label = "exn", sortText = "000179" }, { filterText = "ExperimentalAttribute", insertText = "ExperimentalAttribute", kind = 7, label = "ExperimentalAttribute", sortText = "000180" }, { filterText = "ExtraTopLevelOperators", insertText = "ExtraTopLevelOperators", kind = 9, label = "ExtraTopLevelOperators", sortText = "000181" }, { filterText = "Format", insertText = "Format", kind = 7, label = "Format", sortText = "000182" }, { filterText = "FSharp", insertText = "FSharp", kind = 9, label = "FSharp", sortText = "000183" }, { filterText = "FSharpFunc", insertText = "FSharpFunc", kind = 3, label = "FSharpFunc", sortText = "000184" }, { filterText = "FSharpInterfaceDataVersionAttribute", insertText = "FSharpInterfaceDataVersionAttribute", kind = 7, label = "FSharpInterfaceDataVersionAttribute", sortText = "000185" }, { filterText = "FSharpTypeFunc", insertText = "FSharpTypeFunc", kind = 2, label = "FSharpTypeFunc", sortText = "000186" }, { filterText = "FuncConvert", insertText = "FuncConvert", kind = 7, label = "FuncConvert", sortText = "000187" }, { filterText = "GeneralizableValueAttribute", insertText = "GeneralizableValueAttribute", kind = 7, label = "GeneralizableValueAttribute", sortText = "000188" }, { filterText = "Handler", insertText = "Handler", kind = 3, label = "Handler", sortText = "000189" }, { filterText = "HashIdentity", insertText = "HashIdentity", kind = 9, label = "HashIdentity", sortText = "000190" }, { filterText = "IDelegateEvent", insertText = "IDelegateEvent", kind = 8, label = "IDelegateEvent", sortText = "000191" }, { filterText = "IEvent", insertText = "IEvent", kind = 8, label = "IEvent", sortText = "000192" }, { filterText = "ilsigptr", insertText = "ilsigptr", kind = 7, label = "ilsigptr", sortText = "000193" }, { filterText = "InlineIfLambdaAttribute", insertText = "InlineIfLambdaAttribute", kind = 7, label = "InlineIfLambdaAttribute", sortText = "000194" }, { filterText = "inref", insertText = "inref", kind = 7, label = "inref", sortText = "000195" }, { filterText = "InterfaceAttribute", insertText = "InterfaceAttribute", kind = 7, label = "InterfaceAttribute", sortText = "000196" }, { filterText = "KeyValue", insertText = "KeyValue", kind = 20, label = "KeyValue", sortText = "000197" }, { filterText = "LanguagePrimitives", insertText = "LanguagePrimitives", kind = 9, label = "LanguagePrimitives", sortText = "000198" }, { filterText = "Lazy", insertText = "Lazy", kind = 20, label = "Lazy", sortText = "000199" }, { filterText = "LazyExtensions", insertText = "LazyExtensions", kind = 9, label = "LazyExtensions", sortText = "000200" }, { filterText = "Linq", insertText = "Linq", kind = 9, label = "Linq", sortText = "000201" }, { filterText = "List", insertText = "List", kind = 9, label = "List", sortText = "000202" }, { filterText = "list", insertText = "list", kind = 7, label = "list", sortText = "000203" }, { filterText = "LiteralAttribute", insertText = "LiteralAttribute", kind = 7, label = "LiteralAttribute", sortText = "000204" }, { filterText = "MailboxProcessor", insertText = "MailboxProcessor", kind = 7, label = "MailboxProcessor", sortText = "000205" }, { filterText = "Map", insertText = "Map", kind = 9, label = "Map", sortText = "000206" }, { filterText = "MatchFailureException", insertText = "MatchFailureException", kind = 7, label = "MatchFailureException", sortText = "000207" }, { filterText = "MeasureAnnotatedAbbreviationAttribute", insertText = "MeasureAnnotatedAbbreviationAttribute", kind = 7, label = "MeasureAnnotatedAbbreviationAttribute", sortText = "000208" }, { filterText = "MeasureAttribute", insertText = "MeasureAttribute", kind = 7, label = "MeasureAttribute", sortText = "000209" }, { filterText = "Microsoft", insertText = "Microsoft", kind = 9, label = "Microsoft", sortText = "000210" }, { filterText = "NativeInterop", insertText = "NativeInterop", kind = 9, label = "NativeInterop", sortText = "000211" }, { filterText = "nativeptr", insertText = "nativeptr", kind = 7, label = "nativeptr", sortText = "000212" }, { filterText = "NoComparisonAttribute", insertText = "NoComparisonAttribute", kind = 7, label = "NoComparisonAttribute", sortText = "000213" }, { filterText = "NoDynamicInvocationAttribute", insertText = "NoDynamicInvocationAttribute", kind = 7, label = "NoDynamicInvocationAttribute", sortText = "000214" }, { filterText = "NoEqualityAttribute", insertText = "NoEqualityAttribute", kind = 7, label = "NoEqualityAttribute", sortText = "000215" }, { filterText = "None", insertText = "None", kind = 20, label = "None", sortText = "000216" }, { filterText = "NonStructuralComparison", insertText = "NonStructuralComparison", kind = 9, label = "NonStructuralComparison", sortText = "000217" }, { filterText = "NumericLiteralI", insertText = "NumericLiteralI", kind = 9, label = "NumericLiteralI", sortText = "000218" }, { filterText = "NumericLiterals", insertText = "NumericLiterals", kind = 9, label = "NumericLiterals", sortText = "000219" }, { filterText = "obj", insertText = "obj", kind = 7, label = "obj", sortText = "000220" }, { filterText = "Observable", insertText = "Observable", kind = 9, label = "Observable", sortText = "000221" }, { filterText = "Ok", insertText = "Ok", kind = 20, label = "Ok", sortText = "000222" }, { filterText = "OperatorIntrinsics", insertText = "OperatorIntrinsics", kind = 9, label = "OperatorIntrinsics", sortText = "000223" }, { filterText = "Operators", insertText = "Operators", kind = 9, label = "Operators", sortText = "000224" }, { filterText = "OptimizedClosures", insertText = "OptimizedClosures", kind = 9, label = "OptimizedClosures", sortText = "000225" }, { filterText = "Option", insertText = "Option", kind = 9, label = "Option", sortText = "000226" }, { filterText = "option", insertText = "option", kind = 7, label = "option", sortText = "000227" }, { filterText = "OptionalArgumentAttribute", insertText = "OptionalArgumentAttribute", kind = 7, label = "OptionalArgumentAttribute", sortText = "000228" }, { filterText = "outref", insertText = "outref", kind = 7, label = "outref", sortText = "000229" }, { filterText = "Printf", insertText = "Printf", kind = 9, label = "Printf", sortText = "000230" }, { filterText = "PrintfFormat", insertText = "PrintfFormat", kind = 7, label = "PrintfFormat", sortText = "000231" }, { filterText = "ProjectionParameterAttribute", insertText = "ProjectionParameterAttribute", kind = 7, label = "ProjectionParameterAttribute", sortText = "000232" }, { filterText = "Quotations", insertText = "Quotations", kind = 9, label = "Quotations", sortText = "000233" }, { filterText = "ReferenceEqualityAttribute", insertText = "ReferenceEqualityAttribute", kind = 7, label = "ReferenceEqualityAttribute", sortText = "000234" }, { filterText = "ReflectedDefinitionAttribute", insertText = "ReflectedDefinitionAttribute", kind = 7, label = "ReflectedDefinitionAttribute", sortText = "000235" }, { filterText = "Reflection", insertText = "Reflection", kind = 9, label = "Reflection", sortText = "000236" }, { filterText = "RequireQualifiedAccessAttribute", insertText = "RequireQualifiedAccessAttribute", kind = 7, label = "RequireQualifiedAccessAttribute", sortText = "000237" }, { filterText = "RequiresExplicitTypeArgumentsAttribute", insertText = "RequiresExplicitTypeArgumentsAttribute", kind = 7, label = "RequiresExplicitTypeArgumentsAttribute", sortText = "000238" }, { filterText = "ResizeArray", insertText = "ResizeArray", kind = 7, label = "ResizeArray", sortText = "000239" }, { filterText = "Result", insertText = "Result", kind = 9, label = "Result", sortText = "000240" }, { filterText = "SealedAttribute", insertText = "SealedAttribute", kind = 7, label = "SealedAttribute", sortText = "000241" }, { filterText = "Seq", insertText = "Seq", kind = 9, label = "Seq", sortText = "000242" }, { filterText = "Set", insertText = "Set", kind = 9, label = "Set", sortText = "000243" }, { filterText = "Some", insertText = "Some", kind = 20, label = "Some", sortText = "000244" }, { filterText = "SourceConstructFlags", insertText = "SourceConstructFlags", kind = 13, label = "SourceConstructFlags", sortText = "000245" }, { filterText = "String", insertText = "String", kind = 9, label = "String", sortText = "000246" }, { filterText = "StructAttribute", insertText = "StructAttribute", kind = 7, label = "StructAttribute", sortText = "000247" }, { filterText = "StructuralComparisonAttribute", insertText = "StructuralComparisonAttribute", kind = 7, label = "StructuralComparisonAttribute", sortText = "000248" }, { filterText = "StructuralEqualityAttribute", insertText = "StructuralEqualityAttribute", kind = 7, label = "StructuralEqualityAttribute", sortText = "000249" }, { filterText = "StructuredFormatDisplayAttribute", insertText = "StructuredFormatDisplayAttribute", kind = 7, label = "StructuredFormatDisplayAttribute", sortText = "000250" }, { filterText = "System", insertText = "System", kind = 9, label = "System", sortText = "000251" }, { filterText = "TaskBuilder", insertText = "TaskBuilder", kind = 9, label = "TaskBuilder", sortText = "000252" }, { filterText = "TaskBuilderBase", insertText = "TaskBuilderBase", kind = 7, label = "TaskBuilderBase", sortText = "000253" }, { filterText = "TaskBuilderExtensions", insertText = "TaskBuilderExtensions", kind = 9, label = "TaskBuilderExtensions", sortText = "000254" }, { filterText = "Unchecked", insertText = "Unchecked", kind = 9, label = "Unchecked", sortText = "000255" }, { filterText = "unit", insertText = "unit", kind = 7, label = "unit", sortText = "000256" }, { filterText = "UnverifiableAttribute", insertText = "UnverifiableAttribute", kind = 7, label = "UnverifiableAttribute", sortText = "000257" }, { filterText = "ValueNone", insertText = "ValueNone", kind = 20, label = "ValueNone", sortText = "000258" }, { filterText = "ValueOption", insertText = "ValueOption", kind = 9, label = "ValueOption", sortText = "000259" }, { filterText = "ValueSome", insertText = "ValueSome", kind = 20, label = "ValueSome", sortText = "000260" }, { filterText = "voidptr", insertText = "voidptr", kind = 7, label = "voidptr", sortText = "000261" }, { filterText = "VolatileFieldAttribute", insertText = "VolatileFieldAttribute", kind = 7, label = "VolatileFieldAttribute", sortText = "000262" }, { filterText = "voption", insertText = "voption", kind = 7, label = "voption", sortText = "000263" }, { filterText = "WebExtensions", insertText = "WebExtensions", kind = 9, label = "WebExtensions", sortText = "000264" }, { filterText = "[]", insertText = "``[]``", kind = 7, label = "[]", sortText = "000265" } } }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet \r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 7 } }}
[DEBUG][2022-03-12 20:24:26] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/signatureHelp" { position = { character = 4, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 5, jsonrpc = "2.0", method = "textDocument/signatureHelp", params = { position = { character = 4, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 5, jsonrpc = "2.0"}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/fileParsed", params = { content = "/home/henryw/Documents/Projects/F#/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "textDocument/publishDiagnostics", params = { diagnostics = { { code = "10", codeDescription = { href = "https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0010" }, debuggerDisplay = "[Error] ((31,0)-(31,0)) Incomplete structured construct at or before this point in binding (10)", message = "Incomplete structured construct at or before this point in binding", range = { debuggerDisplay = "(31,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(31,0)", line = 31 } }, relatedInformation = {}, severity = 1, source = "F# Compiler" } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:26] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/documentSymbol" { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 6, jsonrpc = "2.0", method = "textDocument/documentSymbol", params = { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:26] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 6, jsonrpc = "2.0", result = { { kind = 2, location = { range = { debuggerDisplay = "(0,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(0,0)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "Program" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(0,8)-(16,38)", end = { character = 38, debuggerDisplay = "(16,38)", line = 16 }, start = { character = 8, debuggerDisplay = "(0,8)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "quicksort" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(19,4)-(27,41)", end = { character = 41, debuggerDisplay = "(27,41)", line = 27 }, start = { character = 4, debuggerDisplay = "(19,4)", line = 19 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "ric" } }}
[DEBUG][2022-03-12 20:24:31] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet a\r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 8 } }}
[DEBUG][2022-03-12 20:24:31] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/completion" { context = { triggerKind = 1 }, position = { character = 5, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:31] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 7, jsonrpc = "2.0", method = "textDocument/completion", params = { context = { triggerKind = 1 }, position = { character = 5, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:31] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 7, jsonrpc = "2.0", result = { isIncomplete = false, items = {} }}
[DEBUG][2022-03-12 20:24:31] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/signatureHelp" { position = { character = 4, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:31] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 8, jsonrpc = "2.0", method = "textDocument/signatureHelp", params = { position = { character = 4, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:31] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 8, jsonrpc = "2.0"}
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/fileParsed", params = { content = "/home/henryw/Documents/Projects/F#/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "textDocument/publishDiagnostics", params = { diagnostics = { { code = "10", codeDescription = { href = "https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0010" }, debuggerDisplay = "[Error] ((31,0)-(31,0)) Incomplete structured construct at or before this point in binding. Expected '=' or other token. (10)", message = "Incomplete structured construct at or before this point in binding. Expected '=' or other token.", range = { debuggerDisplay = "(31,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(31,0)", line = 31 } }, relatedInformation = {}, severity = 1, source = "F# Compiler" } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:32] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/documentSymbol" { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 9, jsonrpc = "2.0", method = "textDocument/documentSymbol", params = { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 9, jsonrpc = "2.0", result = { { kind = 2, location = { range = { debuggerDisplay = "(0,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(0,0)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "Program" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(30,4)-(30,5)", end = { character = 5, debuggerDisplay = "(30,5)", line = 30 }, start = { character = 4, debuggerDisplay = "(30,4)", line = 30 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "a" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(0,8)-(16,38)", end = { character = 38, debuggerDisplay = "(16,38)", line = 16 }, start = { character = 8, debuggerDisplay = "(0,8)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "quicksort" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(19,4)-(27,41)", end = { character = 41, debuggerDisplay = "(27,41)", line = 27 }, start = { character = 4, debuggerDisplay = "(19,4)", line = 19 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "ric" } }}
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet a \r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 9 } }}
[DEBUG][2022-03-12 20:24:32] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/signatureHelp" { position = { character = 6, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 10, jsonrpc = "2.0", method = "textDocument/signatureHelp", params = { position = { character = 6, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 10, jsonrpc = "2.0"}
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet a =\r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 10 } }}
[DEBUG][2022-03-12 20:24:32] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/signatureHelp" { position = { character = 6, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 11, jsonrpc = "2.0", method = "textDocument/signatureHelp", params = { position = { character = 6, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:32] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 11, jsonrpc = "2.0"}
[DEBUG][2022-03-12 20:24:33] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet a = \r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 11 } }}
[DEBUG][2022-03-12 20:24:33] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/signatureHelp" { position = { character = 8, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:33] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 12, jsonrpc = "2.0", method = "textDocument/signatureHelp", params = { position = { character = 8, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:33] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 12, jsonrpc = "2.0"}
[DEBUG][2022-03-12 20:24:33] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/fileParsed", params = { content = "/home/henryw/Documents/Projects/F#/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:33] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "textDocument/publishDiagnostics", params = { diagnostics = { { code = "58", codeDescription = { href = "https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0058" }, debuggerDisplay = "[Warning] ((31,0)-(31,0)) Possible incorrect indentation: this token is offside of context started at position (31:1). Try indenting this token further or using standard formatting conventions. (58)", message = "Possible incorrect indentation: this token is offside of context started at position (31:1). Try indenting this token further or using standard formatting conventions.", range = { debuggerDisplay = "(31,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(31,0)", line = 31 } }, relatedInformation = {}, severity = 2, source = "F# Compiler" }, { code = "10", codeDescription = { href = "https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0010" }, debuggerDisplay = "[Error] ((31,0)-(31,0)) Incomplete structured construct at or before this point in binding (10)", message = "Incomplete structured construct at or before this point in binding", range = { debuggerDisplay = "(31,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(31,0)", line = 31 } }, relatedInformation = {}, severity = 1, source = "F# Compiler" } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:33] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/documentSymbol" { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:33] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 13, jsonrpc = "2.0", method = "textDocument/documentSymbol", params = { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:33] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 13, jsonrpc = "2.0", result = { { kind = 2, location = { range = { debuggerDisplay = "(0,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(0,0)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "Program" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(30,4)-(30,7)", end = { character = 7, debuggerDisplay = "(30,7)", line = 30 }, start = { character = 4, debuggerDisplay = "(30,4)", line = 30 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "a" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(0,8)-(16,38)", end = { character = 38, debuggerDisplay = "(16,38)", line = 16 }, start = { character = 8, debuggerDisplay = "(0,8)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "quicksort" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(19,4)-(27,41)", end = { character = 41, debuggerDisplay = "(27,41)", line = 27 }, start = { character = 4, debuggerDisplay = "(19,4)", line = 19 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "ric" } }}
[DEBUG][2022-03-12 20:24:38] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet a = p\r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 12 } }}
[DEBUG][2022-03-12 20:24:38] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/completion" { context = { triggerKind = 1 }, position = { character = 9, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:38] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 14, jsonrpc = "2.0", method = "textDocument/completion", params = { context = { triggerKind = 1 }, position = { character = 9, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:38] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 14, jsonrpc = "2.0", result = { isIncomplete = false, items = {} }}
[DEBUG][2022-03-12 20:24:38] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/signatureHelp" { position = { character = 8, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:38] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 15, jsonrpc = "2.0", method = "textDocument/signatureHelp", params = { position = { character = 8, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:38] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 15, jsonrpc = "2.0"}
[DEBUG][2022-03-12 20:24:39] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/fileParsed", params = { content = "/home/henryw/Documents/Projects/F#/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:39] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "textDocument/publishDiagnostics", params = { diagnostics = { { code = "39", codeDescription = { href = "https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0039" }, debuggerDisplay = "[Error] ((30,8)-(30,9)) The value or constructor 'p' is not defined. (39)", message = "The value or constructor 'p' is not defined.", range = { debuggerDisplay = "(30,8)-(30,9)", end = { character = 9, debuggerDisplay = "(30,9)", line = 30 }, start = { character = 8, debuggerDisplay = "(30,8)", line = 30 } }, relatedInformation = {}, severity = 1, source = "F# Compiler" } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:39] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/documentSymbol" { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:39] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 16, jsonrpc = "2.0", method = "textDocument/documentSymbol", params = { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:39] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 16, jsonrpc = "2.0", result = { { kind = 2, location = { range = { debuggerDisplay = "(0,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(0,0)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "Program" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(30,4)-(30,9)", end = { character = 9, debuggerDisplay = "(30,9)", line = 30 }, start = { character = 4, debuggerDisplay = "(30,4)", line = 30 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "a" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(0,8)-(16,38)", end = { character = 38, debuggerDisplay = "(16,38)", line = 16 }, start = { character = 8, debuggerDisplay = "(0,8)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "quicksort" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(19,4)-(27,41)", end = { character = 41, debuggerDisplay = "(27,41)", line = 27 }, start = { character = 4, debuggerDisplay = "(19,4)", line = 19 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "ric" } }}
[DEBUG][2022-03-12 20:24:40] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet a = pr\r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 13 } }}
[DEBUG][2022-03-12 20:24:40] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/signatureHelp" { position = { character = 8, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:40] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 17, jsonrpc = "2.0", method = "textDocument/signatureHelp", params = { position = { character = 8, line = 30 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:40] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 17, jsonrpc = "2.0"}
[DEBUG][2022-03-12 20:24:41] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/fileParsed", params = { content = "/home/henryw/Documents/Projects/F#/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:41] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "textDocument/publishDiagnostics", params = { diagnostics = { { code = "39", codeDescription = { href = "https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0039" }, debuggerDisplay = "[Error] ((30,8)-(30,10)) The value or constructor 'pr' is not defined. (39)", message = "The value or constructor 'pr' is not defined.", range = { debuggerDisplay = "(30,8)-(30,10)", end = { character = 10, debuggerDisplay = "(30,10)", line = 30 }, start = { character = 8, debuggerDisplay = "(30,8)", line = 30 } }, relatedInformation = {}, severity = 1, source = "F# Compiler" } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:24:41] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/documentSymbol" { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:24:41] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 18, jsonrpc = "2.0", method = "textDocument/documentSymbol", params = { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:24:41] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 18, jsonrpc = "2.0", result = { { kind = 2, location = { range = { debuggerDisplay = "(0,0)-(31,0)", end = { character = 0, debuggerDisplay = "(31,0)", line = 31 }, start = { character = 0, debuggerDisplay = "(0,0)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "Program" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(30,4)-(30,10)", end = { character = 10, debuggerDisplay = "(30,10)", line = 30 }, start = { character = 4, debuggerDisplay = "(30,4)", line = 30 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "a" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(0,8)-(16,38)", end = { character = 38, debuggerDisplay = "(16,38)", line = 16 }, start = { character = 8, debuggerDisplay = "(0,8)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "quicksort" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(19,4)-(27,41)", end = { character = 41, debuggerDisplay = "(27,41)", line = 27 }, start = { character = 4, debuggerDisplay = "(19,4)", line = 19 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "ric" } }}
@baronfel here I tried to type
let x =
l
[DEBUG][2022-03-12 20:37:14] .../vim/lsp/rpc.lua:347 "rpc.send" { jsonrpc = "2.0", method = "textDocument/didChange", params = { contentChanges = { { text = 'let rec quicksort l =\r\n match l with\r\n | [] -> [] // if the list is empty\r\n | firstElem :: otherElements -> // if the list is not empty,\r\n let smallerElements =\r\n otherElements\r\n |> List.filter (fun e -> e < firstElem)\r\n |> quicksort\r\n\r\n let largerElements =\r\n otherElements\r\n |> List.filter (fun e -> e >= firstElem)\r\n |> quicksort\r\n\r\n List.concat [ smallerElements\r\n [ firstElem ]\r\n largerElements ]\r\n\r\n\r\nlet ric quicksort2 =\r\n function\r\n | [] -> []\r\n | first :: rest ->\r\n let smaller, larger = List.partition ((>=) first) rest\r\n\r\n List.concat [ quicksort2 smaller\r\n [ first ]\r\n quicksort2 larger ]\r\n\r\nprintfn "%A" (quicksort [ 1; 5; 23; 18; 9; 1; 3 ])\r\nlet x =\r\n\r\n l\r\n' } }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs", version = 6 } }}
[DEBUG][2022-03-12 20:37:14] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/completion" { context = { triggerKind = 1 }, position = { character = 5, line = 32 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:37:14] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 5, jsonrpc = "2.0", method = "textDocument/completion", params = { context = { triggerKind = 1 }, position = { character = 5, line = 32 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:37:14] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/signatureHelp" { position = { character = 4, line = 32 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:37:14] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 6, jsonrpc = "2.0", method = "textDocument/signatureHelp", params = { position = { character = 4, line = 32 }, textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:37:14] .../vim/lsp/rpc.lua:454 "rpc.receive" { error = { code = -32603, message = "Index was outside the bounds of the array." }, id = 6, jsonrpc = "2.0"}
[ERROR][2022-03-12 20:37:14] .../vim/lsp/rpc.lua:420 "rpc" "fsautocomplete" "stderr" "[20:37:14.858 ERR] [LSP] PositionHandler - Failed during child operation on file /home/henryw/Documents/Projects/F#/quicksort/Program.fs\nSystem.IndexOutOfRangeException: Index was outside the bounds of the array.\n at FsAutoComplete.SignatureHelp.loop@203-17(ISourceText lines, Char ch, Position pos) in /home/runner/work/FsAutoComplete/FsAutoComplete/src/FsAutoComplete.Core/SignatureHelp.fs:line 204\n at FsAutoComplete.SignatureHelp.getSignatureHelpFor@202.Invoke(Unit unitVar) in /home/runner/work/FsAutoComplete/FsAutoComplete/src/FsAutoComplete.Core/SignatureHelp.fs:line 210\n at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\\a\\_work\\1\\s\\src\\fsharp\\FSharp.Core\\async.fs:line 446\n at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\\a\\_work\\1\\s\\src\\fsharp\\FSharp.Core\\async.fs:line 104\n"
[DEBUG][2022-03-12 20:37:14] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 5, jsonrpc = "2.0", result = { isIncomplete = false, items = {} }}
[DEBUG][2022-03-12 20:37:15] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "fsharp/fileParsed", params = { content = "/home/henryw/Documents/Projects/F#/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:37:15] .../vim/lsp/rpc.lua:454 "rpc.receive" { jsonrpc = "2.0", method = "textDocument/publishDiagnostics", params = { diagnostics = { { code = "39", codeDescription = { href = "https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-messages/fs0039" }, debuggerDisplay = "[Error] ((32,4)-(32,5)) The value or constructor 'l' is not defined. (39)", message = "The value or constructor 'l' is not defined.", range = { debuggerDisplay = "(32,4)-(32,5)", end = { character = 5, debuggerDisplay = "(32,5)", line = 32 }, start = { character = 4, debuggerDisplay = "(32,4)", line = 32 } }, relatedInformation = {}, severity = 1, source = "F# Compiler" } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }}
[DEBUG][2022-03-12 20:37:15] .../lua/vim/lsp.lua:1023 "LSP[ionide]" "client.request" 1 "textDocument/documentSymbol" { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }} <function 1> 1
[DEBUG][2022-03-12 20:37:15] .../vim/lsp/rpc.lua:347 "rpc.send" { id = 7, jsonrpc = "2.0", method = "textDocument/documentSymbol", params = { textDocument = { uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" } }}
[DEBUG][2022-03-12 20:37:15] .../vim/lsp/rpc.lua:454 "rpc.receive" { id = 7, jsonrpc = "2.0", result = { { kind = 2, location = { range = { debuggerDisplay = "(0,0)-(33,0)", end = { character = 0, debuggerDisplay = "(33,0)", line = 33 }, start = { character = 0, debuggerDisplay = "(0,0)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "Program" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(0,8)-(16,38)", end = { character = 38, debuggerDisplay = "(16,38)", line = 16 }, start = { character = 8, debuggerDisplay = "(0,8)", line = 0 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "quicksort" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(19,4)-(27,41)", end = { character = 41, debuggerDisplay = "(27,41)", line = 27 }, start = { character = 4, debuggerDisplay = "(19,4)", line = 19 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "ric" }, { containerName = "Program", kind = 8, location = { range = { debuggerDisplay = "(30,4)-(32,5)", end = { character = 5, debuggerDisplay = "(32,5)", line = 32 }, start = { character = 4, debuggerDisplay = "(30,4)", line = 30 } }, uri = "file:///home/henryw/Documents/Projects/F%23/quicksort/Program.fs" }, name = "x" } }}
The error in your second message is for SignatureHelp, not completions, so I'll set that to the side for now. More interestingly - the completion request returns without error in this case, just with an empty array of suggestions. I repro this response in Ionide for VSCode, however it seems that VSCode implements some sort-of last-chance completion list with items that start with l
, but aren't provided by the LSP.
So I think you're consistent here, and if anything we could look into enhancements in the completion functionality.
The error in your second message is for SignatureHelp, not completions, so I'll set that to the side for now. More interestingly - the completion request returns without error in this case, just with an empty array of suggestions. I repro this response in Ionide for VSCode, however it seems that VSCode implements some sort-of last-chance completion list with items that start with
l
, but aren't provided by the LSP.So I think you're consistent here, and if anything we could look into enhancements in the completion functionality.
Yeah enhancement to completion would definitely be super helpful for text editors that aren't VSCode.
I'd love it if you opened a discussion or issue about what kind of experience you'd like to have in different completion scenarios! Even if some are hard to do, at least we'd have a list to work towards.
I'd love it if you opened a discussion or issue about what kind of experience you'd like to have in different completion scenarios! Even if some are hard to do, at least we'd have a list to work towards.
I'm still at the early stage of learning the language, so not sure what would be the best, but I'll try to open an issue.
I repro this response in Ionide for VSCode, however it seems that VSCode implements some sort-of last-chance completion list with items that start with l, but aren't provided by the LSP.
@baronfel, turn off editor.wordBasedSuggestions
in the VSCode settings to not mess with your experiments.
This issue was originally submitted in the ionide plugin for vim, but I think the problem is with FsAutoComplete. see here
Completion works if I type from the beginning of the line.
But if there is anything before my cursor, autocompletion does not work.
I also see error when starting a new line in a function block:
** Environmen: OS: Archlinux Vim / Neovim version: NVIM v0.7.0-dev+1241-g08d9d74fd dotnet SDK version: 6.0.102 mono / .Net Framework version: 6.0.102
Here is my Neovim configuration to setup the lsp: