Created
May 21, 2020 14:39
-
-
Save ZacLN/973bed1747f8ecaca8901b7e0418fb89 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using LanguageServer, CSTParser, StaticLint, SymbolServer | |
| server = LanguageServerInstance(IOBuffer(), IOBuffer(), "/home/zac/.julia/environments/v1.5/", "") | |
| @async run(server) | |
| for n in names(LanguageServer, all = true) eval(:(import LanguageServer.$n)) end | |
| for n in names(StaticLint, all = true) eval(:(import StaticLint.$n)) end | |
| # paths to change on lines: 17, 18, 310 | |
| workingdir = "/home/zac/.julia/dev/StaticLint" | |
| initstr = """ | |
| {"jsonrpc":"2.0","id":0,"method":"initialize","params":{ | |
| "processId": 235349, | |
| "clientInfo": { | |
| "name": "vscode", | |
| "version": "1.42.0" | |
| }, | |
| "rootPath": "$workingdir", | |
| "rootUri": "file://$workingdir", | |
| "capabilities": { | |
| "workspace": { | |
| "applyEdit": true, | |
| "workspaceEdit": { | |
| "documentChanges": true, | |
| "resourceOperations": [ | |
| "create", | |
| "rename", | |
| "delete" | |
| ], | |
| "failureHandling": "textOnlyTransactional" | |
| }, | |
| "didChangeConfiguration": { | |
| "dynamicRegistration": true | |
| }, | |
| "didChangeWatchedFiles": { | |
| "dynamicRegistration": true | |
| }, | |
| "symbol": { | |
| "dynamicRegistration": 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 | |
| ] | |
| } | |
| }, | |
| "executeCommand": { | |
| "dynamicRegistration": true | |
| }, | |
| "configuration": true, | |
| "workspaceFolders": true | |
| }, | |
| "textDocument": { | |
| "publishDiagnostics": { | |
| "relatedInformation": true, | |
| "versionSupport": false, | |
| "tagSupport": { | |
| "valueSet": [ | |
| 1, | |
| 2 | |
| ] | |
| } | |
| }, | |
| "synchronization": { | |
| "dynamicRegistration": true, | |
| "willSave": true, | |
| "willSaveWaitUntil": true, | |
| "didSave": true | |
| }, | |
| "completion": { | |
| "dynamicRegistration": true, | |
| "contextSupport": true, | |
| "completionItem": { | |
| "snippetSupport": true, | |
| "commitCharactersSupport": true, | |
| "documentationFormat": [ | |
| "markdown", | |
| "plaintext" | |
| ], | |
| "deprecatedSupport": true, | |
| "preselectSupport": 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 | |
| ] | |
| } | |
| }, | |
| "hover": { | |
| "dynamicRegistration": true, | |
| "contentFormat": [ | |
| "markdown", | |
| "plaintext" | |
| ] | |
| }, | |
| "signatureHelp": { | |
| "dynamicRegistration": true, | |
| "signatureInformation": { | |
| "documentationFormat": [ | |
| "markdown", | |
| "plaintext" | |
| ], | |
| "parameterInformation": { | |
| "labelOffsetSupport": true | |
| } | |
| }, | |
| "contextSupport": true | |
| }, | |
| "definition": { | |
| "dynamicRegistration": true, | |
| "linkSupport": true | |
| }, | |
| "references": { | |
| "dynamicRegistration": true | |
| }, | |
| "documentHighlight": { | |
| "dynamicRegistration": true | |
| }, | |
| "documentSymbol": { | |
| "dynamicRegistration": 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 | |
| ] | |
| }, | |
| "hierarchicalDocumentSymbolSupport": true | |
| }, | |
| "codeAction": { | |
| "dynamicRegistration": true, | |
| "isPreferredSupport": true, | |
| "codeActionLiteralSupport": { | |
| "codeActionKind": { | |
| "valueSet": [ | |
| "", | |
| "quickfix", | |
| "refactor", | |
| "refactor.extract", | |
| "refactor.inline", | |
| "refactor.rewrite", | |
| "source", | |
| "source.organizeImports" | |
| ] | |
| } | |
| } | |
| }, | |
| "codeLens": { | |
| "dynamicRegistration": true | |
| }, | |
| "formatting": { | |
| "dynamicRegistration": true | |
| }, | |
| "rangeFormatting": { | |
| "dynamicRegistration": true | |
| }, | |
| "onTypeFormatting": { | |
| "dynamicRegistration": true | |
| }, | |
| "rename": { | |
| "dynamicRegistration": true, | |
| "prepareSupport": true | |
| }, | |
| "documentLink": { | |
| "dynamicRegistration": true, | |
| "tooltipSupport": true | |
| }, | |
| "typeDefinition": { | |
| "dynamicRegistration": true, | |
| "linkSupport": true | |
| }, | |
| "implementation": { | |
| "dynamicRegistration": true, | |
| "linkSupport": true | |
| }, | |
| "colorProvider": { | |
| "dynamicRegistration": true | |
| }, | |
| "foldingRange": { | |
| "dynamicRegistration": true, | |
| "rangeLimit": 5000, | |
| "lineFoldingOnly": true | |
| }, | |
| "declaration": { | |
| "dynamicRegistration": true, | |
| "linkSupport": true | |
| }, | |
| "selectionRange": { | |
| "dynamicRegistration": true | |
| }, | |
| "callHierarchy": { | |
| "dynamicRegistration": true | |
| }, | |
| "semanticTokens": { | |
| "dynamicRegistration": true, | |
| "tokenTypes": [ | |
| "comment", | |
| "keyword", | |
| "number", | |
| "regexp", | |
| "operator", | |
| "namespace", | |
| "type", | |
| "struct", | |
| "class", | |
| "interface", | |
| "enum", | |
| "typeParameter", | |
| "function", | |
| "member", | |
| "macro", | |
| "variable", | |
| "parameter", | |
| "property", | |
| "label" | |
| ], | |
| "tokenModifiers": [ | |
| "declaration", | |
| "documentation", | |
| "static", | |
| "abstract", | |
| "deprecated", | |
| "async", | |
| "readonly" | |
| ] | |
| } | |
| }, | |
| "window": { | |
| "workDoneProgress": true | |
| } | |
| }, | |
| "trace": "verbose", | |
| "workspaceFolders": [ | |
| { | |
| "uri": "file://$workingdir", | |
| "name": "StaticLint" | |
| } | |
| ] | |
| }} | |
| """ | |
| # Startup | |
| LanguageServer.process(parse(LanguageServer.JSONRPC.Request, LanguageServer.JSON.parse(initstr)), server) | |
| LanguageServer.process(LanguageServer.JSONRPC.Request{Val{Symbol("initialized")},Any}(0, nothing), server) | |
| ################################################################################ | |
| # Load an existing file | |
| doc = server._documents[LanguageServer.URI2(LanguageServer.filepath2uri("/home/zac/.julia/dev/StaticLint/src/utils.jl"))] | |
| ################################################################################ | |
| # Add a new working file | |
| text = """ | |
| function f(ex) | |
| ex.head | |
| ex | |
| end | |
| """ | |
| LanguageServer.process(LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/didOpen")},LanguageServer.DidOpenTextDocumentParams}(0, LanguageServer.DidOpenTextDocumentParams(LanguageServer.TextDocumentItem("none", "julia", 0, text))), server) | |
| doc = LanguageServer.getdocument(server, LanguageServer.URI2("none")) | |
| ################################################################################ | |
| ################################################################################ | |
| # Some requests | |
| LanguageServer.process(LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/didOpen")},LanguageServer.DidOpenTextDocumentParams}(0, LanguageServer.DidOpenTextDocumentParams(LanguageServer.TextDocumentItem(LanguageServer.filepath2uri("/home/zac/tmp/F2.jl"), "julia", 0, String(read("/home/zac/tmp/F2.jl"))))), server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("julia/getCurrentBlockRange")},LanguageServer.TextDocumentPositionParams}(0, LanguageServer.TextDocumentPositionParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(1, 0))) | |
| LanguageServer.process(r, server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/didChange")},LanguageServer.DidChangeTextDocumentParams}(0, LanguageServer.DidChangeTextDocumentParams(LanguageServer.VersionedTextDocumentIdentifier(doc._uri, 10000), [LanguageServer.TextDocumentContentChangeEvent(LanguageServer.Range(LanguageServer.Position(0, 6),LanguageServer.Position(0, 15)), 9, "")])) | |
| LanguageServer.process(r, server) | |
| ## | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/documentHighlight")},LanguageServer.DocumentHighlightParams}(0, LanguageServer.DocumentHighlightParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(0, 10))) | |
| LanguageServer.process(r, server) | |
| ## | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/rename")},LanguageServer.RenameParams}(0, LanguageServer.RenameParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(0, 3), "aaa")) | |
| LanguageServer.process(r, server) | |
| params = LanguageServer.CodeActionParams(LanguageServer.TextDocumentIdentifier("none"), LanguageServer.Range(3,8,3,8), LanguageServer.CodeActionContext([], missing)) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/codeAction")}, LanguageServer.CodeActionParams}(1, params) | |
| LanguageServer.process(r, server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/didChange")},LanguageServer.DidChangeTextDocumentParams}(0, LanguageServer.DidChangeTextDocumentParams(LanguageServer.VersionedTextDocumentIdentifier(doc._uri, 10000), [LanguageServer.TextDocumentContentChangeEvent(LanguageServer.Range(LanguageServer.Position(1, 1),LanguageServer.Position(1, 1)), 0, "d")])) | |
| LanguageServer.process(r, server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/completion")},LanguageServer.CompletionParams}(0, LanguageServer.CompletionParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(2,7), LanguageServer.CompletionContext(1, missing))) | |
| LanguageServer.process(r, server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/hover")},LanguageServer.TextDocumentPositionParams}(0, LanguageServer.TextDocumentPositionParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(4, 11))) | |
| LanguageServer.process(r, server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/definition")},LanguageServer.TextDocumentPositionParams}(0, LanguageServer.TextDocumentPositionParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(4, 11))) | |
| LanguageServer.process(r, server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/rename")},LanguageServer.RenameParams}(0, LanguageServer.RenameParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(0, 10), missing, "name1")) | |
| LanguageServer.process(r, server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/rename")},LanguageServer.RenameParams}(0, LanguageServer.ReferenceParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(0, 10), "GRAPH")) | |
| LanguageServer.process(r, server) | |
| r = LanguageServer.JSONRPC.Request{Val{Symbol("textDocument/signatureHelp")},LanguageServer.TextDocumentPositionParams}(0, LanguageServer.TextDocumentPositionParams(LanguageServer.TextDocumentIdentifier(doc._uri), LanguageServer.Position(0,5))) | |
| LanguageServer.process(r, server) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment