Giter Club home page Giter Club logo

monodevelop-language-server-addin's Introduction

Language Server client for MonoDevelop and Visual Studio for Mac

Provides Language Server support for MonoDevelop and Visual Studio for Mac.

API for integrating a language client is based on the Visual Studio Language Server Protocol Client.

Language Server Protocol Features

  • initialize

  • initialized

  • shutdown

  • exit

  • $/cancelRequest

  • window/showMessage

  • window/showMessageRequest

  • window/logMessage

  • telemetry/event

  • client/registerCapability

  • client/unregisterCapability

  • workspace/didChangeConfiguration (Only sent on startup)

  • workspace/didChangeWatchedFiles

  • workspace/symbol

  • workspace/executeCommand

  • workspace/applyEdit

  • textDocument/publishDiagnostics

  • textDocument/didOpen

  • textDocument/didChange (Full and incremental)

  • textDocument/willSave

  • textDocument/willSaveWaitUntil

  • textDocument/didSave

  • textDocument/didClose

  • textDocument/completion

  • completionItem/resolve

  • textDocument/hover

  • textDocument/signatureHelp

  • textDocument/references

  • textDocument/documentHighlight

  • textDocument/documentSymbol

  • textDocument/formatting

  • textDocument/rangeFormatting

  • textDocument/onTypeFormatting

  • textDocument/definition

  • textDocument/codeAction

  • textDocument/codeLens

  • codeLens/resolve

  • textDocument/documentLink

  • documentLink/resolve

  • textDocument/rename

  • Snippets

  • Middleware

    • ILanguageClientCompletionProvider
    • ILanguageClientExecuteCommandProvider
    • ILanguageClientWorkspaceSymbolProvider
  • Connection

  • IContentTypeMetadata

  • CodeRemoteContentDefinition

  • ILanguageClientCustomMessage

  • ILanguageClient

    • ConfigurationSections
    • FilesToWatch
    • InitializationOptions
    • StopAsync
    • StartAsync
    • ActivateAsync
    • OnLoadedAsync
    • OnServerInitializedAsync
    • OnServerInitializeFailedAsync

Example Language Server Clients

  • Bash
  • Dockerfile
  • Java
  • Mock foo language
  • PowerShell
  • SQL
  • Swift
  • TypeScript
  • Yaml

monodevelop-language-server-addin's People

Contributors

mrward avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

monodevelop-language-server-addin's Issues

Collection was modified error

The following error was logged. I suspect that a language client document was closed at the same time as the solution was closed, and the session was removed when the document closed whilst the sessions were all being closed. The code should convert the enumerable to an array and also check if it still in the dictionary to catch it the case where it has already been removed.

Async operation failed
System.AggregateException: One or more errors occurred. ---> System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
  at System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/throwhelper.cs:130 
  at System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[TKey,TValue].MoveNext () [0x00013] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/external/corefx/src/Common/src/CoreLib/System/Collections/Generic/Dictionary.cs:1468 
  at MonoDevelop.LanguageServer.Client.SolutionLanguageClientSessions+<GetAllSessions>d__7.MoveNext () [0x000bd] in monodevelop-language-server-addin/src/MonoDevelop.LanguageServer.Client/MonoDevelop.LanguageServer.Client/SolutionLanguageClientSessions.cs:95 
  at MonoDevelop.LanguageServer.Client.LanguageClientWorkspace+<ShutdownAllSessions>d__21.MoveNext () [0x000dc] in monodevelop-language-server-addin/src/MonoDevelop.LanguageServer.Client/MonoDevelop.LanguageServer.Client/LanguageClientWorkspace.cs:230 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:152 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
  at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113 
  at MonoDevelop.LanguageServer.Client.LanguageClientWorkspace+<ShutdownAllSessions>d__20.MoveNext () [0x00030] in monodevelop-language-server-addin/src/MonoDevelop.LanguageServer.Client/MonoDevelop.LanguageServer.Client/LanguageClientWorkspace.cs:224 
   --- End of inner exception stack trace ---
---> (Inner Exception #0) System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
  at System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/throwhelper.cs:130 
  at System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[TKey,TValue].MoveNext () [0x00013] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/external/corefx/src/Common/src/CoreLib/System/Collections/Generic/Dictionary.cs:1468 
  at MonoDevelop.LanguageServer.Client.SolutionLanguageClientSessions+<GetAllSessions>d__7.MoveNext () [0x000bd] in monodevelop-language-server-addin/src/MonoDevelop.LanguageServer.Client/MonoDevelop.LanguageServer.Client/SolutionLanguageClientSessions.cs:95 
  at MonoDevelop.LanguageServer.Client.LanguageClientWorkspace+<ShutdownAllSessions>d__21.MoveNext () [0x000dc] in monodevelop-language-server-addin/src/MonoDevelop.LanguageServer.Client/MonoDevelop.LanguageServer.Client/LanguageClientWorkspace.cs:230 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:152 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
  at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113 
  at MonoDevelop.LanguageServer.Client.LanguageClientWorkspace+<ShutdownAllSessions>d__20.MoveNext () [0x00030] in monodevelop-language-server-addin/src/MonoDevelop.LanguageServer.Client/MonoDevelop.LanguageServer.Client/LanguageClientWorkspace.cs:224 <---

ArgumentNullException

Saw this in the IDE log when running VS Mac 7.6. Presumably the document had no name or associated filename.

System.ArgumentNullException: Value cannot be null.
Parameter name: name
  at Microsoft.VisualStudio.Utilities.Implementation.ContentTypeRegistryImpl.GetContentTypeForFileNameOrExtension (System.String name) [0x00003] in <e41f2310dcd34ec6a63e2973d50c5deb>:0 
  at MonoDevelop.LanguageServer.Client.LanguageClientProvider.GetContentType (MonoDevelop.Core.FilePath fileName) [0x0000e] in <9f3d3f6154e842109db36732b887bd97>:0 
  at MonoDevelop.LanguageServer.Client.LanguageClientProvider.GetLanguageClient (MonoDevelop.Core.FilePath fileName) [0x00001] in <9f3d3f6154e842109db36732b887bd97>:0 
  at MonoDevelop.LanguageServer.Client.LanguageClientProvider.HasLanguageClient (MonoDevelop.Core.FilePath fileName) [0x00001] in <9f3d3f6154e842109db36732b887bd97>:0 
  at MonoDevelop.LanguageServer.Client.LanguageClientWorkspace.IsSupported (MonoDevelop.Core.FilePath fileName) [0x00006] in <9f3d3f6154e842109db36732b887bd97>:0 
  at MonoDevelop.LanguageServer.Client.LanguageClientWorkspace.IsSupported (MonoDevelop.Ide.Gui.Document document) [0x00008] in <9f3d3f6154e842109db36732b887bd97>:0 
  at MonoDevelop.LanguageServer.Client.LanguageClientWorkspace.WorkbenchDocumentClosed (System.Object sender, MonoDevelop.Ide.Gui.DocumentEventArgs e) [0x00008] in <9f3d3f6154e842109db36732b887bd97>:0 
  at (wrapper delegate-invoke) System.EventHandler`1[MonoDevelop.Ide.Gui.DocumentEventArgs].invoke_void_object_TEventArgs(object,MonoDevelop.Ide.Gui.DocumentEventArgs)
  at MonoDevelop.Ide.Gui.Workbench.OnDocumentClosed (MonoDevelop.Ide.Gui.Document doc) [0x00009] in monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:1383

Null reference exception logged by ParameterInformationWindow

The following error is logged when typing in Visual Studio for Mac 7.4.

An unhandled exception has occured. Terminating Visual Studio? False
System.NullReferenceException: Object reference not set to an instance of an object
  at MonoDevelop.Ide.CodeCompletion.ParameterInformationWindow+<UpdateParameterInfoLocation>d__14.MoveNext () [0x0002b] in monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindow.cs:109 

On master this is handled with a null check:

mono/monodevelop@092db73

However MonoDevelop should be debugged to understand why the language server is causing a null reference exception here.

Handle no language clients being available

VS Mac 8.3 - with the language client installed and no other language clients available - opening a document fails since the LanguageServerServices could not be initialized.

System.NullReferenceException: Object reference not set to an instance of an object
  at MonoDevelop.LanguageServer.Client.LanguageClientDocumentControllerExtension.SupportsController (MonoDevelop.Ide.Gui.Documents.DocumentController controller) [0x00024] in <1d4a1beee10f462593b47f9dfd0f117f>:0 
  at MonoDevelop.Ide.Gui.Documents.DocumentController.InitializeExtensionChain () [0x001f4] in /Users/vsts/agent/2.155.1/work/1/s/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentController.cs:823 
  at MonoDevelop.Ide.Gui.Documents.DocumentController.Initialize (MonoDevelop.Ide.Gui.Documents.ModelDescriptor modelDescriptor, MonoDevelop.Core.Properties status) [0x000d6] in /Users/vsts/agent/2.155.1/work/1/s/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentController.cs:424 
  at MonoDevelop.Ide.Gui.Documents.DocumentManager.LoadFile (MonoDevelop.Core.FilePath fileName, MonoDevelop.Core.ProgressMonitor monitor, MonoDevelop.Ide.Gui.Documents.DocumentControllerDescription binding, MonoDevelop.Projects.WorkspaceObject project, MonoDevelop.Ide.Gui.FileOpenInformation fileInfo) [0x0023c] in /Users/vsts/agent/2.155.1/work/1/s/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentManager.cs:506 
Unable to initialize LanguageServerServices.
Microsoft.VisualStudio.Composition.CompositionFailedException: Expected 1 export(s) with contract name "MonoDevelop.LanguageServer.Client.LanguageClientProvider" but found 0 after applying applicable constraints.
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExports (Microsoft.VisualStudio.Composition.ImportDefinition importDefinition) [0x001d4] in E:\A\_work\149\s\src\Microsoft.VisualStudio.Composition\ExportProvider.cs:355 
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExports[T,TMetadataView] (System.String contractName, Microsoft.VisualStudio.Composition.ImportCardinality cardinality) [0x000b5] in E:\A\_work\149\s\src\Microsoft.VisualStudio.Composition\ExportProvider.cs:811 
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExport[T,TMetadataView] (System.String contractName) [0x00000] in E:\A\_work\149\s\src\Microsoft.VisualStudio.Composition\ExportProvider.cs:251 
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExport[T] (System.String contractName) [0x00000] in E:\A\_work\149\s\src\Microsoft.VisualStudio.Composition\ExportProvider.cs:241 
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExport[T] () [0x00000] in E:\A\_work\149\s\src\Microsoft.VisualStudio.Composition\ExportProvider.cs:236 
  at Microsoft.VisualStudio.Composition.ExportProvider.GetExportedValue[T] () [0x00000] in E:\A\_work\149\s\src\Microsoft.VisualStudio.Composition\ExportProvider.cs:256 
  at MonoDevelop.Ide.Composition.CompositionManager.GetExportedValue[T] () [0x00000] in /Users/vsts/agent/2.155.1/work/1/s/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Composition/CompositionManager.cs:81 
  at MonoDevelop.LanguageServer.Client.LanguageClientServices.Initialize () [0x00006] in <1d4a1beee10f462593b47f9dfd0f117f>:0 
  at MonoDevelop.LanguageServer.Client.LanguageClientServices.EnsureInitialized () [0x00011] in <1d4a1beee10f462593b47f9dfd0f117f>:0 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.