Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support C# via Omnisharp #815

Closed
tom-bowles opened this issue May 3, 2019 · 47 comments · Fixed by #1024
Closed

Support C# via Omnisharp #815

tom-bowles opened this issue May 3, 2019 · 47 comments · Fixed by #1024

Comments

@tom-bowles
Copy link

Omnisharp has supported LSP for ages, and it would really lovely if lsp-mode were to work with it.

I managed to get it sort-of running with

(push (cons 'csharp-mode "csharp") lsp-language-id-configuration)

(make-lsp-client :new-connection (lsp-stdio-connection '("omniSharp" "-lsp"))
                 :major-modes '(csharp-mode)
                 :server-id 'tom-omnisharp)

I had to build a copy of csharp-language-server-protocol (a nuget
dependency of omnisharp-roslyn) with this commit:
OmniSharp/csharp-language-server-protocol@21907ad. That
solved this problem: joaotavora/eglot#241.

However, I still get various other problems, including Error running timer: (wrong-type-argument hash-table-p nil) errors and a null reference exception on startup:

LSP :: Internal Error - System.NullReferenceException: Object reference not set to an instance of an object.
   at OmniSharp.Cake.Extensions.ResponseExtensions.<TranslateAsync>d__7.MoveNext() in D:\dev\omnisharp-roslyn\src\OmniSharp.Cake\Extensions\ResponseExtensions.cs:line 168
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at OmniSharp.Cake.Services.RequestHandlers.CakeRequestHandler`2.<Handle>d__14.MoveNext() in D:\dev\omnisharp-roslyn\src\OmniSharp.Cake\Services\RequestHandlers\CakeRequestHandler.cs:line 61
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at OmniSharp.LanguageServerProtocol.Handlers.DocumentSymbolHandler.<Handle>d__6.MoveNext() in D:\dev\omnisharp-roslyn\src\OmniSharp.LanguageServerProtocol\Handlers\DocumentSymbolHandler.cs:line 62
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at OmniSharp.Extensions.LanguageServer.Server.LspRequestRouter.<RouteRequest>d__11.MoveNext() in D:\dev\csharp-language-server-protocol\src\Server\LspRequestRouter.cs:line 163
@tom-bowles
Copy link
Author

Specifically, that NullReferenceException was while handing a textDocument/documentSymbol request.

@yyoncho
Copy link
Member

yyoncho commented May 3, 2019

I am having some troubles installing the server, here it is my initial analysis:

  1. The null pointer exception is probably omnisharp bug or lsp-mode is not sending settings that are expected by omnisharp. We should compare with what vscode is sending (e. g. in intitialialize request). Also, the issue might be caused by lsp-mode calling onHover on unexpected places(e. g. over =).
  2. Error running timer: (wrong-type-argument hash-table-p nil) - I need callstack for that. Can you toggle-debug-on-entry and post it to the issue.

@tom-bowles
Copy link
Author

Looks like the Error running timer: (wrong-type-argument hash-table-p nil) errors are due to Omnisharp returning textDocument/hover responses with nulls in, eg.

[Trace - 05:37:08 PM]
Received response 'textDocument/hover - (1126)' in 618ms.

Result: 
{
  "contents": [
    null,
    null
  ]
}

@tom-bowles
Copy link
Author

tom-bowles commented May 3, 2019

Just saw your comment. The call stack is below, but tracking it back led me to the above.

Yeah, comparing it to vscode is a good idea. I'll see if I can get an I/O trace from there to compare. Omnisharp seems to send a vast number of window/logMessage messages, which is making it awkward to inspect the messages. Is there a way to log the i/o to a file instead of a buffer, and/or to ask a server to send fewer window/logMessage notifications? I didn't see anything about the latter in the spec, and passing the -loglevel parameter to omnisharp seemed to have no effect on it.

Debugger entered--Lisp error: (wrong-type-argument hash-table-p nil)
  gethash("value" nil)
  lsp-ui-doc--extract-marked-string(nil)
  mapconcat(lsp-ui-doc--extract-marked-string (nil nil) "\n\n")
  lsp-ui-doc--extract([nil nil])
  #f(compiled-function () #<bytecode 0x94b731d>)()
  apply(#f(compiled-function () #<bytecode 0x94b731d>) nil)
  timer-event-handler([t 0 0 200000 nil #f(compiled-function () #<bytecode 0x94b731d>) nil idle 0])

@vibhavp
Copy link
Member

vibhavp commented May 3, 2019

If you're using the MELPA unstable version, setting lsp-print-io creates a lsp-io buffer for each corresponding project root, which you can then save to a file with C-x-s.

@yyoncho
Copy link
Member

yyoncho commented May 3, 2019

@tom-bowles I still get

LSP :: Internal Error - System.InvalidOperationException: Sequence contains more than one matching element
  at System.Linq.Enumerable.Single[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] predicate) [0x0004a] in <e32d3889c5e24db788c761b532f9d8a8>:0 
  at OmniSharp.Extensions.LanguageServer.Server.ClientCapabilityProvider.HasStaticHandler[T] (OmniSharp.Extensions.LanguageServer.Protocol.Supports`1[T] capability) [0x00044] in <c33e73e38fa14bf293bda2f62d3759c4>:0 
  at OmniSharp.Extensions.LanguageServer.Server.ClientCapabilityProvider.GetStaticOptions[T] (OmniSharp.Extensions.LanguageServer.Protocol.Supports`1[T] capability) [0x00000] in <c33e73e38fa14bf293bda2f62d3759c4>:0 

using the latest version from https://github.com/OmniSharp/omnisharp-roslyn/releases .

@tom-bowles
Copy link
Author

Yeah, the fix commit hasn't made it into a release yet. I had to build csharp-language-server-protocol and omnisharp and then copy the binaries from the former (containing the fix) into the publish folder of the latter (containing the omnisharp exe). I think the existing omnisharp release will start working once a new csharp-language-server-protocol release is published to nuget.org.

@yyoncho
Copy link
Member

yyoncho commented May 9, 2019

For some reason, I am unable to build the libraries on my machine so I will wait to be released before doing more investigations unless there is some other way to get the proper build. Btw it seems like vscode is not using lsp protocol.

@tom-bowles
Copy link
Author

I've asked on Slack if there's any widely-used client that uses LSP, but no response. It's not clear how mature the LSP implementation is.

@sebasmonia
Copy link

Hi @tom-bowles, all I had to do to get this running in another LSP server was patch the case of null responses you mentioned in #815 (comment), using the latest release of Omnisharp. So if you could find a way to workaround that issue in lsp-mode then things should work.

If I get a chance I will test the configuration you listed above later today. The more support, the better!

@sebasmonia
Copy link

sebasmonia commented Aug 5, 2019

@tom-bowles if you compile the branch feature/lsp-0.13 from https://github.com/OmniSharp/omnisharp-roslyn you should get completion for C# in LSP mode. It's not working for me though. Let me know how it goes!

@yyoncho I tried using the following init code:

  :commands lsp
  :config
  (add-to-list 'lsp-language-id-configuration '(csharp-mode . "csharp"))
  (lsp-register-client
   (make-lsp-client :new-connection (lsp-stdio-connection '("C:/Home/omnisharp_64/OmniSharp.exe" "-lsp"))
                    :major-modes '(csharp-mode)
                    :server-id 'csharp))
  )

And it got the error below after hitting C-M-i. This branch does work for Eglot (getting completion), although it also logs exceptions from the server. Also I still have in place that patch were if the response from the server is null I replaced with "" so Eglot doesn't break.
Hope we can get this server working in lsp-mode too :) the ominsharp server is very mature but the LSP implementation has quite a few bugs so maybe we can help get them get up to speed to.

Unhandled Exception: Newtonsoft.Json.JsonSerializationException: Error converting value {null} to type 'System.Boolean'. Path 'params.capabilities.textDocument.foldingRange.lineFoldingOnly', line 1, position 1569. ---> System.InvalidCastException: Null object cannot be converted to a value type.
   at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
   --- End of inner exception stack trace ---
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters.SupportsConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
   at OmniSharp.Extensions.LanguageServer.Server.LspRequestRouter.FindDescriptor(String method, JToken params)
   at OmniSharp.Extensions.JsonRpc.InputHandler.HandleRequest(String request)
   at OmniSharp.Extensions.JsonRpc.InputHandler.ProcessInputStream()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Process csharp stderr finished

@yyoncho
Copy link
Member

yyoncho commented Aug 5, 2019

@sebasmonia should be fixed with 31ebd7e

@sebasmonia
Copy link

Added the line manually to my lsp-mode.
It works now! However it seems I get only properties, not methods, and when I add a new object completion can be triggered but doesn't reflect the context:

image

Not sure if that's on lsp-mode or Omnisharp Rosly...

Guessing that once Omnisharp merges the branch lsp-mode can support C# out of the box? It would be awesome :)

@yyoncho
Copy link
Member

yyoncho commented Aug 5, 2019

We have to check the server response and then eventually debug the C# completion handling. The issue might be caused by the project being not imported properly. It will be a bit harder to find the root cause because vscode does not use lsp protocol and we won't have reference lsp implementation.

Guessing that once Omnisharp merges the branch lsp-mode can support C# out of the box?

We try to support as much stuff as possible out of the box.

@sebasmonia
Copy link

The same thing in Eglot does work:

image

I would love for C# devs to have a default LSP to rely on.
Also, thanks for the quick turnaround. This project is lucky to have you as mantainer :)

PS: There's omnisharp-emacs that is also non-LSP =/

@yyoncho
Copy link
Member

yyoncho commented Aug 5, 2019

@sebasmonia if it works then we could capture and compare the wire data. I am still failing to build it locally on my ubuntu, I even tried in a docker container and it still fails with the following error:

Error: One or more errors occurred. (Expecting state 'Element'.. Encountered 'Text'  with name '', namespace ''.)
	Expecting state 'Element'.. Encountered 'Text'  with name '', namespace ''.
The command '/bin/sh -c cd /omnisharp-roslyn && ./build.sh' returned a non-zero code: 1

My guess is that the issue is caused by the mono version. I hope that this version will be merged soon so we could do the corresponding fix in lsp-mode.

@sebasmonia
Copy link

I started a new session, killed the "Events" buffer after adding var a = "123"; so what follows is the output of typing a. and calling completion with C-M-i:

internal (id:4) Mon Aug  5 14:37:18 2019:
(:timed-out :textDocument/signatureHelp :id 4 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 16)))

internal (id:5) Mon Aug  5 14:37:18 2019:
(:timed-out :textDocument/hover :id 5 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 16)))

internal (id:4) Mon Aug  5 14:37:18 2019:
(:timed-out :textDocument/signatureHelp :id 4 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 16)))

internal (id:6) Mon Aug  5 14:37:19 2019:
(:deferring :textDocument/signatureHelp :id 6 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 17)))

internal (id:7) Mon Aug  5 14:37:19 2019:
(:deferring :textDocument/hover :id 7 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 17)))

client-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs" :version 19)
           :contentChanges
           [(:range
             (:start
              (:line 26 :character 16)
              :end
              (:line 26 :character 16))
             :rangeLength 0 :text "a")]))

internal Mon Aug  5 14:37:19 2019:
(:maybe-run-deferred
 (7 6))

client-request (id:7) Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :id 7 :method "textDocument/hover" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
           :position
           (:line 26 :character 17)))

client-request (id:6) Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :id 6 :method "textDocument/signatureHelp" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
           :position
           (:line 26 :character 17)))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/didChange"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/didChange"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Notification textDocument/didChange"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Notification textDocument/didChange to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/hover"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/hover"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/hover:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentRegistrationOptions"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/hover:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentRegistrationOptions"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.HoverParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/signatureHelp:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpRegistrationOptions"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/signatureHelp:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpRegistrationOptions"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelp, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Notification textDocument/didChange in 20ms"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Request (7) textDocument/hover"))

server-notification Mon Aug  5 14:37:19 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Request (7) textDocument/hover to OmniSharp.Extensions.LanguageServer.Protocol.Models.HoverParams"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Result was System.Threading.Tasks.Task`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Request (7) textDocument/hover in 783ms"))

server-reply (id:7) Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :id 7 :result
          (:contents
           ["string a" ""]))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Request (6) textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Request (6) textDocument/signatureHelp to OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpParams"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 1 :message "Failed to handle notification textDocument/signatureHelp - System.NullReferenceException: Object reference not set to an instance of an object.
\n   at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler.<Handle>d__3.MoveNext() in C:\\Home\\github\\omnisharp-roslyn\\src\\OmniSharp.LanguageServerProtocol\\Handlers\\OmniSharpSignatureHelpHandler.cs:line 47
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.<RouteRequest>d__6.MoveNext()"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Request (6) textDocument/signatureHelp in 0ms"))

server-reply (id:6) ERROR Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :id "6" :error
          (:code -32602 :message "Internal Error - System.NullReferenceException: Object reference not set to an instance of an object.
\n   at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler.<Handle>d__3.MoveNext() in C:\\Home\\github\\omnisharp-roslyn\\src\\OmniSharp.LanguageServerProtocol\\Handlers\\OmniSharpSignatureHelpHandler.cs:line 47
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.<RouteRequest>d__6.MoveNext()"))

internal (id:8) Mon Aug  5 14:37:20 2019:
(:deferring :textDocument/signatureHelp :id 8 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 18)))

internal (id:9) Mon Aug  5 14:37:20 2019:
(:deferring :textDocument/hover :id 9 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 18)))

client-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs" :version 20)
           :contentChanges
           [(:range
             (:start
              (:line 26 :character 17)
              :end
              (:line 26 :character 17))
             :rangeLength 0 :text ".")]))

internal Mon Aug  5 14:37:20 2019:
(:maybe-run-deferred
 (9 8))

client-request (id:9) Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :id 9 :method "textDocument/hover" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
           :position
           (:line 26 :character 18)))

client-request (id:8) Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :id 8 :method "textDocument/signatureHelp" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
           :position
           (:line 26 :character 18)))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/didChange"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/didChange"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Notification textDocument/didChange"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Notification textDocument/didChange to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/hover"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/hover"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/hover:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentRegistrationOptions"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/hover:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentRegistrationOptions"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.HoverParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/signatureHelp:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpRegistrationOptions"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/signatureHelp:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpRegistrationOptions"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelp, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Notification textDocument/didChange in 2ms"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Request (9) textDocument/hover"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Request (9) textDocument/hover to OmniSharp.Extensions.LanguageServer.Protocol.Models.HoverParams"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Result was System.Threading.Tasks.Task`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Request (9) textDocument/hover in 0ms"))

server-reply (id:9) Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :id 9 :result
          (:contents
           [nil nil]))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Request (8) textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Request (8) textDocument/signatureHelp to OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpParams"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 1 :message "Failed to handle notification textDocument/signatureHelp - System.NullReferenceException: Object reference not set to an instance of an object.
\n   at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler.<Handle>d__3.MoveNext() in C:\\Home\\github\\omnisharp-roslyn\\src\\OmniSharp.LanguageServerProtocol\\Handlers\\OmniSharpSignatureHelpHandler.cs:line 47
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.<RouteRequest>d__6.MoveNext()"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Request (8) textDocument/signatureHelp in 0ms"))

server-reply (id:8) ERROR Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :id "8" :error
          (:code -32602 :message "Internal Error - System.NullReferenceException: Object reference not set to an instance of an object.
\n   at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler.<Handle>d__3.MoveNext() in C:\\Home\\github\\omnisharp-roslyn\\src\\OmniSharp.LanguageServerProtocol\\Handlers\\OmniSharpSignatureHelpHandler.cs:line 47
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.<RouteRequest>d__6.MoveNext()"))

client-request (id:10) Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :id 10 :method "textDocument/completion" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
           :position
           (:line 26 :character 18)
           :context
           (:triggerKind 1)))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/completion"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/completion"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/completion:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.CompletionRegistrationOptions"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/completion:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.CompletionRegistrationOptions"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.CompletionParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.CompletionList, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Request (10) textDocument/completion"))

server-notification Mon Aug  5 14:37:20 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Request (10) textDocument/completion to OmniSharp.Extensions.LanguageServer.Protocol.Models.CompletionParams"))

server-notification Mon Aug  5 14:37:21 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Updating Resolve items with wrapped data for textDocument/completion:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler"))

server-notification Mon Aug  5 14:37:21 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Result was System.Threading.Tasks.Task`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.CompletionList, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]"))

server-notification Mon Aug  5 14:37:21 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.CompletionList"))

server-notification Mon Aug  5 14:37:21 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Request (10) textDocument/completion in 1044ms"))

server-reply (id:10) Mon Aug  5 14:37:22 2019:
(:jsonrpc "2.0" :id 10 :result
          [(:label "AsMemory" :kind 2 :detail "AsMemory() (+ 2 overload(s))" :documentation "" :deprecated :json-false :preselect :json-false :insertText "AsMemory" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "AsSpan" :kind 2 :detail "AsSpan() (+ 2 overload(s))" :documentation "" :deprecated :json-false :preselect :json-false :insertText "AsSpan" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Clone" :kind 2 :detail "Clone()" :documentation "Returns a reference to this instance of System.String .\nReturns: This instance of System.String ." :deprecated :json-false :preselect :json-false :insertText "Clone" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "CompareTo" :kind 2 :detail "CompareTo(object value) (+ 1 overload(s))" :documentation "Compares this instance with a specified System.Object and indicates whether this instance precedes, follows, or appears in the same position in the sort order as the specified System.Object .\nvalue: An object that evaluates to a System.String .\nReturns: A 32-bit signed integer that indicates whether this instance precedes, follows, or appears in the same position in the sort order as the value valueparameter.  \nValue  \nCondition  \nLess than zero  \nThis instance precedes value value.  \nZero  \nThis instance has the same position in the sort order as value value.  \nGreater than zero  \nThis instance follows value value.  \n-or-  \nvalue valueis null.  \n\nSystem.ArgumentException: value valueis not a System.String ." :deprecated :json-false :preselect :json-false :insertText "CompareTo" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Contains" :kind 2 :detail "Contains(char value) (+ 3 overload(s))" :documentation "" :deprecated :json-false :preselect :json-false :insertText "Contains" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "CopyTo" :kind 2 :detail "CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count)" :documentation "Copies a specified number of characters from a specified position in this instance to a specified position in an array of Unicode characters.\nsourceIndex: The index of the first character in this instance to copy.\ndestination: An array of Unicode characters to which characters in this instance are copied.\ndestinationIndex: The index in destination at which the copy operation begins.\ncount: The number of characters in this instance to copy to destination.\nSystem.ArgumentNullException: destination destinationis null.\nSystem.ArgumentOutOfRangeException: sourceIndex sourceIndex, destinationIndex destinationIndex, or count countis negative  \n-or-  \nsourceIndex sourceIndexdoes not identify a position in the current instance.  \n-or-  \ndestinationIndex destinationIndexdoes not identify a valid index in the destination destinationarray.  \n-or-  \ncount countis greater than the length of the substring from sourceIndex sourceIndexto the end of this instance  \n-or-  \ncount countis greater than the length of the subarray from destinationIndex destinationIndexto the end of the destination destinationarray." :deprecated :json-false :preselect :json-false :insertText "CopyTo" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "EndsWith" :kind 2 :detail "EndsWith(char value) (+ 3 overload(s))" :documentation "\nvalue: \nReturns: " :deprecated :json-false :preselect :json-false :insertText "EndsWith" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Equals" :kind 2 :detail "Equals(object obj) (+ 2 overload(s))" :documentation "Determines whether this instance and a specified object, which must also be a System.String object, have the same value.\nobj: The string to compare to this instance.\nReturns: true if obj objis a System.String and its value is the same as this instance; otherwise, false.  If obj objis null, the method returns false." :deprecated :json-false :preselect :json-false :insertText "Equals" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "GetEnumerator" :kind 2 :detail "GetEnumerator()" :documentation "Retrieves an object that can iterate through the individual characters in this string.\nReturns: An enumerator object." :deprecated :json-false :preselect :json-false :insertText "GetEnumerator" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "GetHashCode" :kind 2 :detail "GetHashCode() (+ 1 overload(s))" :documentation "Returns the hash code for this string.\nReturns: A 32-bit signed integer hash code." :deprecated :json-false :preselect :json-false :insertText "GetHashCode" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "GetType" :kind 2 :detail "GetType()" :documentation "Gets the System.Type of the current instance.\nReturns: The exact runtime type of the current instance." :deprecated :json-false :preselect :json-false :insertText "GetType" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "GetTypeCode" :kind 2 :detail "GetTypeCode()" :documentation "Returns the System.TypeCode for class System.String .\nReturns: The enumerated constant, System.TypeCode.String ." :deprecated :json-false :preselect :json-false :insertText "GetTypeCode" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "IndexOf" :kind 2 :detail "IndexOf(char value) (+ 9 overload(s))" :documentation "Reports the zero-based index of the first occurrence of the specified Unicode character in this string.\nvalue: A Unicode character to seek.\nReturns: The zero-based index position of value valueif that character is found, or -1 if it is not." :deprecated :json-false :preselect :json-false :insertText "IndexOf" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "IndexOfAny" :kind 2 :detail "IndexOfAny(char[] anyOf) (+ 2 overload(s))" :documentation "Reports the zero-based index of the first occurrence in this instance of any character in a specified array of Unicode characters.\nanyOf: A Unicode character array containing one or more characters to seek.\nReturns: The zero-based index position of the first occurrence in this instance where any character in anyOf anyOfwas found; -1 if no character in anyOf anyOfwas found.\nSystem.ArgumentNullException: anyOf anyOfis null." :deprecated :json-false :preselect :json-false :insertText "IndexOfAny" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Insert" :kind 2 :detail "Insert(int startIndex, string value)" :documentation "Returns a new string in which a specified string is inserted at a specified index position in this instance.\nstartIndex: The zero-based index position of the insertion.\nvalue: The string to insert.\nReturns: A new string that is equivalent to this instance, but with value valueinserted at position startIndex startIndex.\nSystem.ArgumentNullException: value valueis null.\nSystem.ArgumentOutOfRangeException: startIndex startIndexis negative or greater than the length of this instance." :deprecated :json-false :preselect :json-false :insertText "Insert" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "IsNormalized" :kind 2 :detail "IsNormalized() (+ 1 overload(s))" :documentation "Indicates whether this string is in Unicode normalization form C.\nReturns: true if this string is in normalization form C; otherwise, false.\nSystem.ArgumentException: The current instance contains invalid Unicode characters." :deprecated :json-false :preselect :json-false :insertText "IsNormalized" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "LastIndexOf" :kind 2 :detail "LastIndexOf(char value) (+ 8 overload(s))" :documentation "Reports the zero-based index position of the last occurrence of a specified Unicode character within this instance.\nvalue: The Unicode character to seek.\nReturns: The zero-based index position of value valueif that character is found, or -1 if it is not." :deprecated :json-false :preselect :json-false :insertText "LastIndexOf" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "LastIndexOfAny" :kind 2 :detail "LastIndexOfAny(char[] anyOf) (+ 2 overload(s))" :documentation "Reports the zero-based index position of the last occurrence in this instance of one or more characters specified in a Unicode array.\nanyOf: A Unicode character array containing one or more characters to seek.\nReturns: The index position of the last occurrence in this instance where any character in anyOf anyOfwas found; -1 if no character in anyOf anyOfwas found.\nSystem.ArgumentNullException: anyOf anyOfis null." :deprecated :json-false :preselect :json-false :insertText "LastIndexOfAny" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Length" :kind 10 :detail "Length" :documentation "Gets the number of characters in the current System.String object.\nReturns: The number of characters in the current string." :deprecated :json-false :preselect :json-false :insertText "Length" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Normalize" :kind 2 :detail "Normalize() (+ 1 overload(s))" :documentation "Returns a new string whose textual value is the same as this string, but whose binary representation is in Unicode normalization form C.\nReturns: A new, normalized string whose textual value is the same as this string, but whose binary representation is in normalization form C.\nSystem.ArgumentException: The current instance contains invalid Unicode characters." :deprecated :json-false :preselect :json-false :insertText "Normalize" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "PadLeft" :kind 2 :detail "PadLeft(int totalWidth) (+ 1 overload(s))" :documentation "Returns a new string that right-aligns the characters in this instance by padding them with spaces on the left, for a specified total length.\ntotalWidth: The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters.\nReturns: A new string that is equivalent to this instance, but right-aligned and padded on the left with as many spaces as needed to create a length of totalWidth totalWidth. However, if totalWidth totalWidthis less than the length of this instance, the method returns a reference to the existing instance. If totalWidth totalWidthis equal to the length of this instance, the method returns a new string that is identical to this instance.\nSystem.ArgumentOutOfRangeException: totalWidth totalWidthis less than zero." :deprecated :json-false :preselect :json-false :insertText "PadLeft" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "PadRight" :kind 2 :detail "PadRight(int totalWidth) (+ 1 overload(s))" :documentation "Returns a new string that left-aligns the characters in this string by padding them with spaces on the right, for a specified total length.\ntotalWidth: The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters.\nReturns: A new string that is equivalent to this instance, but left-aligned and padded on the right with as many spaces as needed to create a length of totalWidth totalWidth. However, if totalWidth totalWidthis less than the length of this instance, the method returns a reference to the existing instance. If totalWidth totalWidthis equal to the length of this instance, the method returns a new string that is identical to this instance.\nSystem.ArgumentOutOfRangeException: totalWidth totalWidthis less than zero." :deprecated :json-false :preselect :json-false :insertText "PadRight" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Remove" :kind 2 :detail "Remove(int startIndex) (+ 1 overload(s))" :documentation "Returns a new string in which all the characters in the current instance, beginning at a specified position and continuing through the last position, have been deleted.\nstartIndex: The zero-based position to begin deleting characters.\nReturns: A new string that is equivalent to this string except for the removed characters.\nSystem.ArgumentOutOfRangeException: startIndex startIndexis less than zero.  \n-or-  \nstartIndex startIndexspecifies a position that is not within this string." :deprecated :json-false :preselect :json-false :insertText "Remove" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Replace" :kind 2 :detail "Replace(char oldChar, char newChar) (+ 3 overload(s))" :documentation "Returns a new string in which all occurrences of a specified Unicode character in this instance are replaced with another specified Unicode character.\noldChar: The Unicode character to be replaced.\nnewChar: The Unicode character to replace all occurrences of oldChar.\nReturns: A string that is equivalent to this instance except that all instances of oldChar oldCharare replaced with newChar newChar. If oldChar oldCharis not found in the current instance, the method returns the current instance unchanged." :deprecated :json-false :preselect :json-false :insertText "Replace" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Split" :kind 2 :detail "Split(char separator, int count, StringSplitOptions options = None) (+ 9 overload(s))" :documentation "\nseparator: \ncount: \noptions: \nReturns: " :deprecated :json-false :preselect :json-false :insertText "Split" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "StartsWith" :kind 2 :detail "StartsWith(char value) (+ 3 overload(s))" :documentation "\nvalue: \nReturns: " :deprecated :json-false :preselect :json-false :insertText "StartsWith" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Substring" :kind 2 :detail "Substring(int startIndex) (+ 1 overload(s))" :documentation "Retrieves a substring from this instance. The substring starts at a specified character position and continues to the end of the string.\nstartIndex: The zero-based starting character position of a substring in this instance.\nReturns: A string that is equivalent to the substring that begins at startIndex startIndexin this instance, or System.String.Empty if startIndex startIndexis equal to the length of this instance.\nSystem.ArgumentOutOfRangeException: startIndex startIndexis less than zero or greater than the length of this instance." :deprecated :json-false :preselect :json-false :insertText "Substring" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "ToCharArray" :kind 2 :detail "ToCharArray() (+ 1 overload(s))" :documentation "Copies the characters in this instance to a Unicode character array.\nReturns: A Unicode character array whose elements are the individual characters of this instance. If this instance is an empty string, the returned array is empty and has a zero length." :deprecated :json-false :preselect :json-false :insertText "ToCharArray" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "ToLower" :kind 2 :detail "ToLower() (+ 1 overload(s))" :documentation "Returns a copy of this string converted to lowercase.\nReturns: A string in lowercase." :deprecated :json-false :preselect :json-false :insertText "ToLower" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "ToLowerInvariant" :kind 2 :detail "ToLowerInvariant()" :documentation "Returns a copy of this System.String object converted to lowercase using the casing rules of the invariant culture.\nReturns: The lowercase equivalent of the current string." :deprecated :json-false :preselect :json-false :insertText "ToLowerInvariant" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "ToString" :kind 2 :detail "ToString() (+ 1 overload(s))" :documentation "Returns this instance of System.String ; no actual conversion is performed.\nReturns: The current string." :deprecated :json-false :preselect :json-false :insertText "ToString" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "ToUpper" :kind 2 :detail "ToUpper() (+ 1 overload(s))" :documentation "Returns a copy of this string converted to uppercase.\nReturns: The uppercase equivalent of the current string." :deprecated :json-false :preselect :json-false :insertText "ToUpper" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "ToUpperInvariant" :kind 2 :detail "ToUpperInvariant()" :documentation "Returns a copy of this System.String object converted to uppercase using the casing rules of the invariant culture.\nReturns: The uppercase equivalent of the current string." :deprecated :json-false :preselect :json-false :insertText "ToUpperInvariant" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "Trim" :kind 2 :detail "Trim() (+ 2 overload(s))" :documentation "Removes all leading and trailing white-space characters from the current System.String object.\nReturns: The string that remains after all white-space characters are removed from the start and end of the current string. If no characters can be trimmed from the current instance, the method returns the current instance unchanged." :deprecated :json-false :preselect :json-false :insertText "Trim" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "TrimEnd" :kind 2 :detail "TrimEnd() (+ 2 overload(s))" :documentation "\nReturns: " :deprecated :json-false :preselect :json-false :insertText "TrimEnd" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))
           (:label "TrimStart" :kind 2 :detail "TrimStart() (+ 2 overload(s))" :documentation "\nReturns: " :deprecated :json-false :preselect :json-false :insertText "TrimStart" :insertTextFormat 1 :data
                   (:data nil :$$___handlerType___$$ "OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler" :$$___handlerKey___$$ "[**/*.cs], [**/*.csx]"))])

client-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs" :version 21)
           :contentChanges
           [(:range
             (:start
              (:line 26 :character 18)
              :end
              (:line 26 :character 18))
             :rangeLength 0 :text "Clone")]))

client-request (id:11) Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :id 11 :method "textDocument/signatureHelp" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
           :position
           (:line 26 :character 23)))

client-request (id:12) Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :id 12 :method "textDocument/hover" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
           :position
           (:line 26 :character 23)))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/didChange"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/didChange"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Notification textDocument/didChange"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Notification textDocument/didChange to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Notification textDocument/didChange in 0ms"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/signatureHelp:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpRegistrationOptions"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/signatureHelp:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpRegistrationOptions"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelp, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Request (11) textDocument/signatureHelp"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Request (11) textDocument/signatureHelp to OmniSharp.Extensions.LanguageServer.Protocol.Models.SignatureHelpParams"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/hover"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/hover"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/hover:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentRegistrationOptions"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/hover:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentRegistrationOptions"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.HoverParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 1 :message "Failed to handle notification textDocument/signatureHelp - System.NullReferenceException: Object reference not set to an instance of an object.
\n   at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler.<Handle>d__3.MoveNext() in C:\\Home\\github\\omnisharp-roslyn\\src\\OmniSharp.LanguageServerProtocol\\Handlers\\OmniSharpSignatureHelpHandler.cs:line 47
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.<RouteRequest>d__6.MoveNext()"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Request (11) textDocument/signatureHelp in 1ms"))

server-reply (id:11) ERROR Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :id "11" :error
          (:code -32602 :message "Internal Error - System.NullReferenceException: Object reference not set to an instance of an object.
\n   at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler.<Handle>d__3.MoveNext() in C:\\Home\\github\\omnisharp-roslyn\\src\\OmniSharp.LanguageServerProtocol\\Handlers\\OmniSharpSignatureHelpHandler.cs:line 47
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()
\n--- End of stack trace from previous location where exception was thrown ---
\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
\n   at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.<RouteRequest>d__6.MoveNext()"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Request (12) textDocument/hover"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Request (12) textDocument/hover to OmniSharp.Extensions.LanguageServer.Protocol.Models.HoverParams"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Result was System.Threading.Tasks.Task`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.Hover"))

server-notification Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Request (12) textDocument/hover in 25ms"))

server-reply (id:12) Mon Aug  5 14:37:24 2019:
(:jsonrpc "2.0" :id 12 :result
          (:contents
           ["object string\\.Clone\\(\\)" "Returns a reference to this instance of System\\.String \\.\nReturns: This instance of System\\.String \\."]))

client-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
          (:textDocument
           (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs" :version 24)
           :contentChanges
           [(:range
             (:start
              (:line 26 :character 23)
              :end
              (:line 26 :character 23))
             :rangeLength 0 :text "(")
            (:range
             (:start
              (:line 26 :character 24)
              :end
              (:line 26 :character 24))
             :rangeLength 0 :text ")")
            (:range
             (:start
              (:line 26 :character 25)
              :end
              (:line 26 :character 25))
             :rangeLength 0 :text ";")]))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/didChange"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/didChange"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Notification textDocument/didChange"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Notification textDocument/didChange to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams"))

server-notification Mon Aug  5 14:37:27 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Notification textDocument/didChange in 0ms"))

client-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "textDocument/willSave" :params
          (:reason 1 :textDocument
                   (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")))

client-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "textDocument/didSave" :params
          (:text "using System;\nusing System.IO;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Aws4RequestSigner;\nusing Newtonsoft.Json;\n\nnamespace MEURLPing\n{\n    public class MERequest\n    {\n        private readonly HttpClient _httpClient = new HttpClient();\n\n        public async Task Run()\n        {\n            var settingsString = File.ReadAllText(\"settings.json\");\n            var settings = JsonConvert.DeserializeObject<Settings>(settingsString);\n\n            var uri = new Uri(settings.Url);\n\n            var signer = new AWS4RequestSigner(settings.AwsAccessKey, settings.AwsSecretKey);\n            while (true)\n            {\n                var a = \"123\";\n                a.Clone();\n                using (var message = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = uri })\n                {\n                    var signedRequest = await signer.Sign(message, \"execute-api\", settings.Region);\n                    using (var response = await ProcessRequest(signedRequest, 10000))\n                    {\n                        Console.WriteLine($\"RequestMessage={response.RequestMessage}, StatusCode={response.StatusCode}\");\n                    }\n\n                    Thread.Sleep(settings.TimeoutSeconds * 1000);\n                }\n            }\n        }\n\n        private async Task<HttpResponseMessage> ProcessRequest(HttpRequestMessage request, int timeout)\n        {\n            try\n            {\n                var cancellation = new CancellationTokenSource();\n                cancellation.CancelAfter(timeout);\n\n                var response = await _httpClient.SendAsync(request, cancellation.Token).ConfigureAwait(false);\n\n                return response ?? new HttpResponseMessage(HttpStatusCode.InternalServerError);\n            }\n            catch (Exception ex)\n            {\n                Console.WriteLine($\"Exception={ex.Message}\");\n                return new HttpResponseMessage(HttpStatusCode.InternalServerError);\n            }\n        }\n    }\n}\n" :textDocument
                 (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/willSave"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Unable to find textDocument/willSave, methods found include initialize:OmniSharp.Extensions.LanguageServer.Server.LanguageServer, initialized:OmniSharp.Extensions.LanguageServer.Server.LanguageServer, shutdown:OmniSharp.Extensions.LanguageServer.Server.Handlers.ServerShutdownHandler, exit:OmniSharp.Extensions.LanguageServer.Server.Handlers.ServerExitHandler, $/cancelRequest:OmniSharp.Extensions.JsonRpc.CancelRequestHandler`1[[OmniSharp.Extensions.LanguageServer.Server.Abstractions.ILspHandlerDescriptor, OmniSharp.Extensions.LanguageServer, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]], textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler, textDocument/didOpen:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler, textDocument/didClose:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler, textDocument/didSave:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler, textDocument/didChange:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler, textDocument/didOpen:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler, textDocument/didClose:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler, textDocument/didSave:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler, textDocument/definition:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpDefinitionHandler, textDocument/definition:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpDefinitionHandler, textDocument/hover:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler, textDocument/hover:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpHoverHandler, textDocument/completion:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler, completionItem/resolve:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler, textDocument/completion:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler, completionItem/resolve:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCompletionHandler, textDocument/signatureHelp:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler, textDocument/signatureHelp:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler, textDocument/rename:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpRenameHandler, textDocument/rename:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpRenameHandler, textDocument/documentSymbol:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpDocumentSymbolHandler, textDocument/documentSymbol:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpDocumentSymbolHandler, textDocument/references:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpReferencesHandler, textDocument/references:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpReferencesHandler, textDocument/codeLens:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCodeLensHandler, codeLens/resolve:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCodeLensHandler, textDocument/codeLens:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCodeLensHandler, codeLens/resolve:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpCodeLensHandler, textDocument/formatting:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpDocumentFormattingHandler, textDocument/rangeFormatting:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpDocumentFormatRangeHandler, textDocument/onTypeFormatting:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpDocumentOnTypeFormatHandler"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finding descriptor for textDocument/didSave"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Found attributes 1, ::file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Looking for handler for descriptors textDocument/didSave"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didSave:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentSaveRegistrationOptions"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cake]"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Checking handler textDocument/didSave:OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentSaveRegistrationOptions"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Document Selector [**/*.cs], [**/*.csx]"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Handler Selected: OmniSharp.LanguageServerProtocol.Handlers.OmniSharpTextDocumentSyncHandler via [**/*.cs], [**/*.csx] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidSaveTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.13.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]])"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Starting: Routing Notification textDocument/didSave"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Converting params for Notification textDocument/didSave to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidSaveTextDocumentParams"))

server-notification Mon Aug  5 14:37:28 2019:
(:jsonrpc "2.0" :method "window/logMessage" :params
          (:type 3 :message "Finished: Routing Notification textDocument/didSave in 2ms"))

internal (id:6) Mon Aug  5 14:37:29 2019:
(:timed-out :textDocument/signatureHelp :id 6 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 17)))

internal (id:7) Mon Aug  5 14:37:29 2019:
(:timed-out :textDocument/hover :id 7 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 17)))

internal (id:6) Mon Aug  5 14:37:29 2019:
(:timed-out :textDocument/signatureHelp :id 6 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 17)))

internal (id:8) Mon Aug  5 14:37:30 2019:
(:timed-out :textDocument/signatureHelp :id 8 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 18)))

internal (id:9) Mon Aug  5 14:37:30 2019:
(:timed-out :textDocument/hover :id 9 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 18)))

internal (id:8) Mon Aug  5 14:37:30 2019:
(:timed-out :textDocument/signatureHelp :id 8 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 18)))

internal (id:11) Mon Aug  5 14:37:34 2019:
(:timed-out :textDocument/signatureHelp :id 11 :params
            (:textDocument
             (:uri "file:///c:/repos/MEURLPing/MEURLPing/MERequest.cs")
             :position
             (:line 26 :character 23)))

Hope this helps!

@yyoncho
Copy link
Member

yyoncho commented Aug 5, 2019

Thank you! Sorry for bothering you but in order to guess what is happening in the lsp-mode I will the corresponding lsp-mode logs.

BTW do you know when the feature branch will be merged and an omnisharp Linux binary will be published?

@sebasmonia
Copy link

Not a bother at all, happy to help.
I have no clue on the Omnisharp release, but I can let you know, I get a notification.

Attached the two logs. This time with a fresh LSP install I got the methods for string! which is great.
So I tested both servers by changing the type to int. In lsp-mode it didn't pick up the type change. I created another variable "b" and triggered completion and it didn't work.

If I try with an "int" from the beginning, lsp-mode will repro the screenshot from before (instead of showing the methods for the instance it gives me all the keywords).

lsp-log.txt
eglot-log.txt

@tom-bowles
Copy link
Author

Hi @sebasmonia and @yyoncho, thanks for for looking at this!

I've built the latest feature/lsp-0.13 of omnisharp-roslyn and am using latest melpa unstable lsp-mode with the 31ebd7e fix but still getting some null reference exceptions:

[Trace - 10:21:18 AM] Received notification 'window/logMessage'.
Params: {
  "message": "Failed to handle notification textDocument/signatureHelp - System.NullReferenceException: Object reference not set to an instance of an object.\r\n   at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler.<Handle>d__3.MoveNext() in D:\\dev\\omnisharp-roslyn\\src\\OmniSharp.LanguageServerProtocol\\Handlers\\OmniSharpSignatureHelpHandler.cs:line 47\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.<RouteRequest>d__6.MoveNext()",
  "type": 1
}

I haven't managed to get any completions yet, but maybe I haven't configured lsp-mode right.

@tom-bowles
Copy link
Author

Actually, I am getting completions back but it's an empty list. The logging looks healthy as far as I can tell. I do get completions with omnisharp-emacs.

@tom-bowles
Copy link
Author

tom-bowles commented Aug 6, 2019

Oh, if I close the file and reopen it I get completions.

Edit - D'Oh, no I don't. I was getting default company completions. So the communication between lsp-mode and Omnisharp seems to be working, but everything returned by Omnisharp is nulls, empty lists, etc.

Edit - OK, was being an idiot. The csproj file wasn't in the .sln. Getting completions of a sort through company-lsp now. Still getting various errors and haven't got anything besides completion yet, but definitely progress.

@tom-bowles
Copy link
Author

I think the reason for the lack of context is that no information is being sent about edits. If I type a letter into my buffer, I see a bunch of textDocument/hover and textDocument/signatureHelp messages, but nothing that would inform omnisharp that an edit has occurred.

Presumably for the same reason, if I move the cursor beyond what was the end of the buffer when omnisharp was started I get ArgumentOutOfRangeExceptions in omnisharp:

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: index
   at Microsoft.CodeAnalysis.Text.SourceText.LineInfo.get_Item(Int32 index)
   at Microsoft.CodeAnalysis.Text.TextLineCollection.GetPosition(LinePosition position)
   at OmniSharp.Roslyn.CSharp.Services.Signatures.SignatureHelpService.<GetInvocation>d__3.MoveNext() in D:\dev\omnisharp-roslyn\src\OmniSharp.Roslyn.CSharp\Services\Signatures\SignatureHelpService.cs:line 107
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at OmniSharp.Roslyn.CSharp.Services.Signatures.SignatureHelpService.<Handle>d__2.MoveNext() in D:\dev\omnisharp-roslyn\src\OmniSharp.Roslyn.CSharp\Services\Signatures\SignatureHelpService.cs:line 32
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSignatureHelpHandler.<Handle>d__3.MoveNext() in D:\dev\omnisharp-roslyn\src\OmniSharp.LanguageServerProtocol\Handlers\OmniSharpSignatureHelpHandler.cs:line 45
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.<Handle>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.<RouteRequest>d__6.MoveNext()

@yyoncho
Copy link
Member

yyoncho commented Aug 6, 2019

@tom-bowles can you post the response of initialize message? I suspect that omnisharp is sending a buggy response(e. g. no support for didChange notifications) or we have a bug regarding this?

@tom-bowles
Copy link
Author

Got it working by forcing it to use incremental for lsp--server-sync-method. Server's initialize response is:

[Trace - 06:52:57 PM] Received response 'initialize - (1093)' in 478ms.
Result: {
  "capabilities": {
    "experimental": {
    },
    "renameProvider": {
      "prepareProvider": null
    },
    "documentOnTypeFormattingProvider": {
      "moreTriggerCharacter": [
        "}",
        ")"
      ],
      "firstTriggerCharacter": ";"
    },
    "documentRangeFormattingProvider": true,
    "documentFormattingProvider": null,
    "codeLensProvider": {
      "resolveProvider": true
    },
    "workspaceSymbolProvider": null,
    "documentSymbolProvider": true,
    "documentHighlightProvider": null,
    "referencesProvider": true,
    "definitionProvider": true,
    "signatureHelpProvider": {
      "triggerCharacters": [
        ".",
        "?",
        "["
      ]
    },
    "completionProvider": {
      "triggerCharacters": [
        "."
      ],
      "resolveProvider": null
    },
    "hoverProvider": true,
    "textDocumentSync": 0
  }
}

@tom-bowles
Copy link
Author

Setting lsp-document-sync-method appears to be the nice way to force this.

@yyoncho
Copy link
Member

yyoncho commented Aug 6, 2019

Does everything work if you do that? We should report an omnisharp bug to populate textDocumentSync.kind.

@tom-bowles
Copy link
Author

Actually lsp-document-sync-method doesn't work for me. It's not clear to me why. If I hack the code to set kind to 2 in lsp--text-document-did-open that works, but customizing lsp-document-sync-method doesn't. In both cases the variable is set in the buffer, but in the working case it shows as 'incremental' (string) but in the non-working case it shows as 'incremental (symbol). Not sure what's going on there - it looks like it should work either way.

Anyway, with the kind set to 2 it does work. I see textDocument/didChange notifications in the log and the autocomplete appears to work correctly.

I'm not getting any flycheck info yet, and the pop-up docs have \ characters in them, and there may be other niggles. It's at the stage where it's actually useful, though!

csharp-language-server-protocol has the following code in LanguageServer.cs to set textDocumentSync. Not sure yet what's not working:

            if (ccp.HasStaticHandler(textDocumentCapabilities.Synchronization))
            {
                var textDocumentSyncKind = _collection.ContainsHandler(typeof(IDidChangeTextDocumentHandler))
                    ? _collection
                        .Select(x => x.Handler)
                        .OfType<IDidChangeTextDocumentHandler>()
                        .Where(x => x.GetRegistrationOptions()?.SyncKind != TextDocumentSyncKind.None)
                        .Min(z => z.GetRegistrationOptions()?.SyncKind)
                    : TextDocumentSyncKind.None;

                if (_clientVersion == ClientVersion.Lsp2)
                {
                    serverCapabilities.TextDocumentSync = textDocumentSyncKind;
                }
                else
                {
                    serverCapabilities.TextDocumentSync = new TextDocumentSyncOptions()
                    {
                        Change = textDocumentSyncKind ?? TextDocumentSyncKind.None,
                        OpenClose = _collection.ContainsHandler(typeof(IDidOpenTextDocumentHandler)) || _collection.ContainsHandler(typeof(IDidCloseTextDocumentHandler)),
                        Save = _collection.ContainsHandler(typeof(IDidSaveTextDocumentHandler)) ?
                            new SaveOptions() { IncludeText = true /* TODO: Make configurable */ } :
                            null,
                        WillSave = _collection.ContainsHandler(typeof(IWillSaveTextDocumentHandler)),
                        WillSaveWaitUntil = _collection.ContainsHandler(typeof(IWillSaveWaitUntilTextDocumentHandler))
                    };
                }
            }

@yyoncho
Copy link
Member

yyoncho commented Aug 6, 2019

The first issue that we should fix is to set the version to LSP3

       _clientVersion = request.Capabilities?.GetClientVersion() ?? ClientVersion.Lsp2;

This should be done by changing lsp--client-capabilities to sent the expected version. I was unable to find that field in the lsp specification.

@tom-bowles
Copy link
Author

tom-bowles commented Aug 7, 2019

GetClientVersion is as below. Given what lsp-mode is sending, I think it should be detecting LSP 3. The response omnisharp is sending has "textDocumentSync": 0, which I think is valid in LSP 3 (textDocumentSync?: TextDocumentSyncOptions | number;). Not clear why it's setting the kind to 0, though.

        /// <summary>
        /// Best attempt to determine if the hosting client supports a specific protocol version
        ///
        /// ClientCapabilities are new as of 3.0, but the field existsed before so it's possible
        ///     it could be passed as an empty object
        /// </summary>
        /// <param name="capabilities">The capabilities.</param>
        /// <returns>ClientVersion.</returns>
        public static ClientVersion GetClientVersion(this ClientCapabilities capabilities)
        {
            if (capabilities == null || (capabilities.TextDocument == null && capabilities.Workspace == null))
                return ClientVersion.Lsp2;
            return ClientVersion.Lsp3;
        }

@tom-bowles
Copy link
Author

I think I see why omnisharp's returning textDocumentSync 0. I've raised an issue at OmniSharp/csharp-language-server-protocol#162 with the details.

@tom-bowles
Copy link
Author

tom-bowles commented Aug 7, 2019

If I understand correctly, I think the slashes that appear in the hover messages are because omnisharp is escaping everything that can be escaped (it uses Regex.Replace(markdown, @"([\\`\*_\{\}\[\]\(\)#+\-\.!])", @"\$1");) regardless of whether it needs to, and because the display in lsp-mode (again, if I'm understanding correctly) uses markdown-mode to fontify the content but doesn't hide the escaping. Not sure what the best solution to that is, TBH.

@tom-bowles
Copy link
Author

lsp-find-definition works, BTW, but not lsp-find-type-defiition, lsp-find-declaration or lsp-find-implementation as there are no handlers in omnisharp, though it should be easy to add them as it can do these things. Same goes for code actions.

lsp-format-buffer and lsp-format-region work.

@tom-bowles
Copy link
Author

First reason I get no diagnostics is that the the file I had open when I initialised lsp-mode doesn't seem to have been registered as open inside omnisharp. lsp-mode sent the didOpen event but I'm guessing that happened while the omnisharp server was still loading stuff and it didn't register it.

If I close the document and open it again, reconnecting to the existing omnisharp server, it does register the didOpen and I start getting diagnostic messages.

However, I still see no diagnostics in emacs. Not sure why that is yet.

@yyoncho
Copy link
Member

yyoncho commented Aug 7, 2019

@tom-bowles can you try to debug lsp--on-diagnostics ? Your observation might be caused by a lsp-mode not being able to find the corresponding buffers.

@tom-bowles
Copy link
Author

Turns out it was me not having configured lsp-ui correctly to get the diagnostics in flycheck. Getting diagnostics now (as long as the server is already running when I open the document) - nice!

There's a fix being worked on for the server returning None for textDocumentSync (OmniSharp/csharp-language-server-protocol#162) but once fixed it will still return Full rather than Incremental as that's the lowest common denominator among the things they support and lsp-mode doesn't appear to support (based on its initialize request) dynamic registration to get this on a file-by-file basis. Presumably Full is supposed to work, so my problem then becomes why is lsp-mode only sending didChange notifications when the server asks for Incremental, but sends nothing when it asks for Full?

@yyoncho
Copy link
Member

yyoncho commented Aug 8, 2019

Presumably Full is supposed to work, so my problem then becomes why is lsp-mode only sending didChange notifications when the server asks for Incremental, but sends nothing when it asks for Full?

Full sync is delayed but it should work. There are multiple servers that support only full synchronization.

@sebasmonia
Copy link

The branch hasn't been merged into the last release, but at least it was updated from master yesterday. @tom-bowles haven't been following all the details on this issue but letting you know in case other fixes from master help your testing in lsp-mode.

@josteink
Copy link
Contributor

Just in case nobody noticed: Omnisharp server has merged the LSP-mode branch now: OmniSharp/omnisharp-roslyn@dacc49a

Does that mean we can move forward with lsp-mode support? 😃

@sebasmonia
Copy link

Almost! They still don't have an actual release with this branch merged.

@sebasmonia
Copy link

Latest release in the Omnisharp repo includes the fix: https://github.com/OmniSharp/omnisharp-roslyn/releases/tag/v1.34.3

@josteink
Copy link
Contributor

PR submitted for this issue. Feel free to provide review.

@Daniel-V1
Copy link
Contributor

Daniel-V1 commented Sep 13, 2019

Holy crap! Now we can see if dap mode will work with netcoredbg!!! Wooot!

@sebasmonia
Copy link

One thing to notice is that root detection wasn't working for me 🤔 I ended up adding a .projectile file to each folder.

@yyoncho
Copy link
Member

yyoncho commented Sep 17, 2019

@sebasmonia I guess you have set lsp-auto-guess to t? When you do that it is expected that you have configured projectile/project.el to guess/find the correct root. In this case, projectile was not configured to guess CSharp files(e. g. the sln files are not considered as a project root).

@sebasmonia
Copy link

For the test project I was using I had only a csproj. Guessing that both sln and csproj should be considered roots (with sln taking precedence)?

Realistically almost all projects are part of a solution so IDK if it matters too much.

@josteink
Copy link
Contributor

josteink commented Sep 18, 2019

For the test project I was using I had only a csproj. Guessing that both sln and csproj should be considered roots (with sln taking precedence)?

Realistically, there's almost always a sln-file. That should definitely be the main trigger for project-root. I agree though that in absence of such a file, a csproj-file would be a natural fit.

In this case, projectile was not configured to guess CSharp files(e. g. the sln files are not considered as a project root).

Usually these projects are contained in some other obvious structure, like a git-repo. For me at least, this has always been sufficient to work efficiently with projectile and .NET projects.

yyoncho pushed a commit that referenced this issue Sep 26, 2019
* Add C#-support via Roslyn.

This fixes #815.

* Fix error in argument

* Add C# to language-list in README

* C#: Automatically resolve need for mono based on OS.

- Simplify defcustoms.

* Fix typo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants