Generated from commit: https://github.com/eclipse/xtext/commit/3a4afca66c3d4e8340606002980328858b857d9f
diff --git a/documentation/102_domainmodelwalkthrough.html b/documentation/102_domainmodelwalkthrough.html
index 06f0796..b852706 100644
--- a/documentation/102_domainmodelwalkthrough.html
+++ b/documentation/102_domainmodelwalkthrough.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/103_domainmodelnextsteps.html b/documentation/103_domainmodelnextsteps.html
index f55fcc6..51f01a1 100644
--- a/documentation/103_domainmodelnextsteps.html
+++ b/documentation/103_domainmodelnextsteps.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/104_jvmdomainmodel.html b/documentation/104_jvmdomainmodel.html
index 7940244..3cf7ad9 100644
--- a/documentation/104_jvmdomainmodel.html
+++ b/documentation/104_jvmdomainmodel.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/301_grammarlanguage.html b/documentation/301_grammarlanguage.html
index e284fc7..fe8c9ff 100644
--- a/documentation/301_grammarlanguage.html
+++ b/documentation/301_grammarlanguage.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/302_configuration.html b/documentation/302_configuration.html
index 7d00a7c..73eff75 100644
--- a/documentation/302_configuration.html
+++ b/documentation/302_configuration.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/303_runtime_concepts.html b/documentation/303_runtime_concepts.html
index 9db6d14..2eadd0c 100644
--- a/documentation/303_runtime_concepts.html
+++ b/documentation/303_runtime_concepts.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/305_xbase.html b/documentation/305_xbase.html
index 6222caa..ef2f6a3 100644
--- a/documentation/305_xbase.html
+++ b/documentation/305_xbase.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/307_special_languages.html b/documentation/307_special_languages.html
index 586babe..47a660c 100644
--- a/documentation/307_special_languages.html
+++ b/documentation/307_special_languages.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/308_emf_integration.html b/documentation/308_emf_integration.html
index 8790817..51f8ba6 100644
--- a/documentation/308_emf_integration.html
+++ b/documentation/308_emf_integration.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/310_eclipse_support.html b/documentation/310_eclipse_support.html
index c371f38..92ef1c4 100644
--- a/documentation/310_eclipse_support.html
+++ b/documentation/310_eclipse_support.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/330_web_support.html b/documentation/330_web_support.html
index adfac21..12c45cc 100644
--- a/documentation/330_web_support.html
+++ b/documentation/330_web_support.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
@@ -530,7 +531,7 @@
<hr />
-<p><strong><a href="350_continuous_integration.html">Next Chapter: Continuous Integration</a></strong></p>
+<p><strong><a href="340_lsp_support.html">Next Chapter: LSP Support</a></strong></p>
</div>
</div>
diff --git a/documentation/340_lsp_support.html b/documentation/340_lsp_support.html
new file mode 100644
index 0000000..31bb96b
--- /dev/null
+++ b/documentation/340_lsp_support.html
@@ -0,0 +1,464 @@
+<!DOCTYPE html>
+<html>
+
+ <head>
+ <meta charset="UTF-8">
+ <title>Xtext - LSP Support</title>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description"
+ content="The website of Eclipse Xtext, an open-source framework for development of programming languages and domain-specific languages">
+ <meta name="author" content="Sven Efftinge">
+ <meta name="author" content="Miro Spoenemann">
+ <!-- styles -->
+ <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+
+ <!-- Le fav and touch icons -->
+ <link rel="shortcut icon" href="/Xtext/images/favicon.png">
+
+ <link href="/Xtext/css/bootstrap.css" rel="stylesheet" type='text/css'>
+ <link href="/Xtext/css/bootstrap-responsive.css" rel="stylesheet" type='text/css'>
+ <link href="/Xtext/css/shield-responsive.css" rel="stylesheet" type='text/css'>
+ <link href='/Xtext/css/fonts.css' rel='stylesheet' type='text/css'>
+ <link href="/Xtext/css/prettyPhoto.css" rel="stylesheet" media="screen" type='text/css'>
+ <link href="/Xtext/css/prettify.css" type="text/css" rel="stylesheet"/>
+ <link href="/Xtext/css/style.css" rel="stylesheet" type='text/css'>
+ <!-- cover flow -->
+ <link href="/Xtext/css/coverflow.css" rel="stylesheet" type='text/css'>
+ <!--[if lt IE 9]>
+ <link href="/css/iebugs.css" rel="stylesheet" type='text/css'>
+ <![endif]-->
+
+ <!-- BEGIN Cookie Consent
+ <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.css" />
+ <script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script>
+ <script>
+ window.addEventListener("load", function(){
+ window.cookieconsent.initialise({
+ "palette": {
+ "popup": {
+ "background": "#000"
+ },
+ "button": {
+ "background": "#f1d600"
+ }
+ },
+ "theme": "edgeless",
+ "type": "opt-in",
+ onInitialise: function (status) {
+ var type = this.options.type;
+ var didConsent = this.hasConsented();
+ if (type == 'opt-in' && didConsent) {
+ // TODO: enable cookies
+ }
+ if (type == 'opt-out' && !didConsent) {
+ // TODO: disable cookies
+ }
+ },
+ onStatusChange: function(status, chosenBefore) {
+ var type = this.options.type;
+ var didConsent = this.hasConsented();
+ if (type == 'opt-in' && didConsent) {
+ // TODO: enable cookies
+ }
+ if (type == 'opt-out' && !didConsent) {
+ // TODO: disable cookies
+ }
+ },
+ onRevokeChoice: function() {
+ var type = this.options.type;
+ if (type == 'opt-in') {
+ // TODO: disable cookies
+ }
+ if (type == 'opt-out') {
+ // TODO: enable cookies
+ }
+ },
+ "content": {
+ "href": "http://www.eclipse.org/legal/privacy.php"
+ }
+ })});
+ </script>
+ END Cookie Consent -->
+</head>
+
+
+ <body>
+
+ <header class="site-header">
+
+ <!-- Navbar -->
+ <div class="navbar navbar-fixed-top">
+ <div class="navbar-inner">
+ <div class="container">
+ <a class="btn btn-navbar" data-toggle="collapse"
+ data-target=".nav-collapse"> <span class="icon-bar"></span> <span
+ class="icon-bar"></span> <span class="icon-bar"></span>
+ </a> <a class="brand" href="/Xtext/index.html"></a>
+ <div class="nav-collapse collapse" style="height: 0px;">
+ <ul class="nav">
+ <!--li ><a href="/Xtext/news.html">News</a></li-->
+ <li ><a href="/Xtext/download.html">Download</a></li>
+ <li ><a href="/Xtext/documentation/index.html">Documentation</a></li>
+ <li ><a href="/Xtext/community.html">Community</a></li>
+ <li class="dropdown">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">Support & Trainings<span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ <li><a href="https://www.itemis.com/en/xtext/support-and-team/" target="_blank">itemis</a></li>
+ <li><a href="https://typefox.io/trainings-2" target="_blank">TypeFox</a></li>
+ </ul>
+ </li>
+ <li ><a href="http://xtend-lang.org">Xtend</a></li>
+ </ul>
+ <!--div class="nav pull-right">
+ <li ><a><iframe src="https://ghbtns.com/github-btn.html?user=eclipse&repo=xtext&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px"></iframe></a></li>
+ </div-->
+ </div>
+ <!--/.nav-collapse -->
+ </div>
+ </div>
+ </div>
+ <!-- Navbar End -->
+
+</header>
+
+
+ <div class="page-content">
+ <script>
+ function startSearch(event) {
+ if (event.keyCode == 13) {
+ var q = 'site:eclipse.org/Xtext/documentation+' + event.target.value;
+ window.open('https://www.google.com/search?q=' + q, "_self");
+ }
+ }
+ </script>
+ <div class="wrapper">
+ <div id="page">
+ <div class="inner">
+ <div id="maincontainer" class="container">
+ <span class="edit-on-github pull-right">
+ <a href="https://github.com/eclipse/xtext/edit/website-published/xtext-website/documentation/340_lsp_support.md">Edit on Github</a>
+ </span>
+ <div class="span3" style="margin-left: 0px;">
+ <div class="search-bar">
+ <img src="/Xtext/images/search-gray.png"/>
+ <input type="search" id="google-search" onkeyup="startSearch(event);"/>
+ </div>
+ <ul id="nav-outline" style="margin-left: 0px;">
+ <li class="nav-part">Getting Started</li>
+ <li><a href="102_domainmodelwalkthrough.html">15 Minutes Tutorial</a></li>
+ <li><a href="103_domainmodelnextsteps.html">15 Minutes Tutorial - Extended</a></li>
+ <li><a href="104_jvmdomainmodel.html">Five simple steps to your JVM language</a></li>
+
+ <li class="nav-part">Reference Documentation</li>
+ <li><a href="301_grammarlanguage.html">The Grammar Language</a></li>
+ <li><a href="302_configuration.html">Configuration</a></li>
+ <li><a href="303_runtime_concepts.html">Language Implementation</a></li>
+ <li><a href="305_xbase.html">Integration with Java</a></li>
+ <li><a href="307_special_languages.html">Typical Language Configurations</a></li>
+ <li><a href="308_emf_integration.html">Integration with EMF</a></li>
+ <li><a href="310_eclipse_support.html">Eclipse Support</a></li>
+ <li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
+ <li><a href="350_continuous_integration.html">Continuous Integration</a></li>
+</ul>
+ </div>
+ <div class="span8 doc-contents">
+ <h1 id="lsp-support">LSP Support</h1>
+
+<p>Xtext supports the generation of language servers that comply to the <a href="https://microsoft.github.io/language-server-protocol/">Language Server Protocol (LSP)</a>.</p>
+
+<h2 id="getting-started">Getting Started</h2>
+
+<p><strong>Step 1:</strong> Create a new Xtext Project with language server support.<br />
+<img src="images/LSP_1_Xtext_Wizard.png" alt="Xtext project wizard" /></p>
+
+<p><strong>Step 2:</strong> Implement the Domainmodel language following the <a href="https://www.eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html">Xtext - 15 Minutes Tutorial</a>.</p>
+
+<p><strong>Step 3:</strong> Try out the Domainmodel language server in Eclipse based on <a href="https://projects.eclipse.org/projects/technology.lsp4e">LSP4E</a>.</p>
+
+<ol>
+ <li>
+ <p>Configure a content type to the <code>*.dmodel</code> files:<br />
+<img src="images/LSP_2_DomainmodelContentType.png" alt="Domainmodel Content Type" /></p>
+ </li>
+ <li>
+ <p>Create a launch configuration that starts the Domainmodel language server:<br />
+<img src="images/LSP_3_DomainmodelLanguageServerLauncher.png" alt="Domainmodel Language Server Launcher" /></p>
+ </li>
+ <li>
+ <p>Assign the Domainmodel content type to the Domainmodel language server launcher:<br />
+<img src="images/LSP_4_DomainmodelLanguageServer.png" alt="Domainmodel Language Server" /></p>
+ </li>
+ <li>LSP does not support syntax highlighting (usually it is done on the client side). The following <a href="https://projects.eclipse.org/projects/technology.tm4e">TextMate</a> json file adds syntax highlighting support for the keywords, single-line and multi-line comments of the Domainmodel language:
+ <pre><code class="language-json">{
+"name": "Domainmodel",
+"scopeName": "text.dmodel",
+"fileTypes": [
+ "dmodel"
+],
+"repository": {
+ "general": {
+ "patterns": [
+ {
+ "include": "#linecomment"
+ },
+ {
+ "include": "#blockcomment"
+ },
+ {
+ "include": "#keyword"
+ }
+ ]
+ },
+ "linecomment": {
+ "name": "comment.line.double-dash.dmodel",
+ "begin": "(^[ \\t]+)?(?=//)",
+ "end": "(?=$)"
+ },
+ "blockcomment": {
+ "name": "comment.block.dmodel",
+ "begin": "/\\*(\\*)?(?!/)",
+ "end": "\\*/"
+ },
+ "keyword": {
+ "name": "keyword.control.mydsl",
+ "match": "\\b(entity|datatype)\\b|!"
+
+ }
+},
+"patterns": [
+ {
+ "include": "#general"
+ }
+],
+"uuid": "8383e49a-fa0d-4bb5-827b-10e8abb294ca"
+}
+</code></pre>
+ </li>
+ <li>Open a <code>*.dmodel</code> file with the Generic Editor and explore the supported language features like syntax highlighting, content assist, validation, displaying code lenses, quickfixes, formatting, … :<br />
+<img src="images/LSP_5_DomainmodelLanguageFeatures.png" alt="Domainmodel Language Features" /></li>
+</ol>
+
+<p><strong>Step 4:</strong> Feel free to implement further LSP clients to the Domainmodel language server based on Atom, Eclipse Che, Eclipse Theia, IntelliJ IDEA, Monaco Editor, VS Code, … The currenly supported LSP clients are available in the <code>LSP clients</code> section of <a href="https://langserver.org/">https://langserver.org/</a>.</p>
+
+<h2 id="language-features">Language Features</h2>
+
+<p>Currently, Xtext supports the following LSP language features:</p>
+
+<table class="table table-bordered">
+ <thead>
+ <tr>
+ <th><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#version_3_16_0"> LSP 3.16.0 </a> (released on 2020-12-14) <br /> <a href="https://github.com/eclipse/lsp4j/blob/master/CHANGELOG.md#v0100-nov-2020"> LSP4J 0.10.0 </a>(released on 2020-11-05)</th>
+ <th><a href="https://www.eclipse.org/Xtext/releasenotes.html#/releasenotes/2020/12/01/version-2-24-0"> Xtext 2.24.0 </a> <br /> (released on 2020-12-01)</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#diagnostic">Diagnostic</a> (aka Validation)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_completion">Completion</a> (aka Content Assist)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax">Snippets</a> (aka Template Proposals)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_hover">Hover</a></td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_signatureHelp">Signature Help</a></td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_declaration">Goto Declaration</a> (aka Hyperlinking)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_definition">Goto Definition</a> (aka Hyperlinking)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_typeDefinition">Goto Type Defintion</a> (aka Hyperlinking)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_implementation">Goto Implementation</a> (aka Hyperlinking)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_references">Find References</a></td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_documentHighlight">Document Highlight</a> (aka Marking Occurrences)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_documentSymbol">Document Symbols</a> (aka Model Elements, Outline View)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_codeAction">Code Action</a> (aka QuickAssist, QuickFixes)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_codeLens">Code Lens</a> (aka Code Mining)</td>
+ <td><div class="not-supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_documentLink">Document Link</a> (aka Hyperlinking)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_documentColor">Document Color</a></td>
+ <td><div class="not-supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_formatting">Document Formatting</a> (aka Formatting)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_rangeFormatting">Document Range Formatting</a> (aka Formatting)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_onTypeFormatting">Document on Type Formatting</a> (aka Auto Editing)</td>
+ <td><div class="not-supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_rename">Rename</a> (aka Rename Refactoring)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_foldingRange">Folding Range</a> (aka Folding)</td>
+ <td><div class="not-supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_selectionRange">Selection Range</a> (aka Double Click Text Selection)</td>
+ <td><div class="not-supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_prepareCallHierarchy">Call Hierarchy</a> </td>
+ <td><div class="not-supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens">Semantic Tokens</a> (aka Semantic Highlighting)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ <tr>
+ <td><a href="https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_linkedEditingRange">Linked Editing Range</a> (aka Rename Refactoring)</td>
+ <td><div class="supported"></div></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="unit-testing">Unit Testing</h2>
+<p>Automated tests are crucial for the maintainability and the quality of a software product. That is why it is strongly recommended to write unit tests for your language server, too. Xtext provides the <a href="https://github.com/eclipse/xtext-core/blob/master/org.eclipse.xtext.testing/src/org/eclipse/xtext/testing/AbstractLanguageServerTest.xtend">org.eclipse.xtext.testing.AbstractLanguageServerTest</a> base class that comes in handy when implementing automated LSP unit tests. The <a href="https://github.com/eclipse/xtext-core/blob/master/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server">org.eclipse.xtext.ide.tests.server</a> package contains JUnit test cases for almost all supported <a href="#language-features">language features</a>. Feel free to study them to get some inspirations on how to implement automated unit tests for your Xtext-based language server.</p>
+
+<p><strong><a href="350_continuous_integration.html">Next Chapter: Continuous Integration</a></strong></p>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+ <footer class="site-footer">
+ <div id="extra">
+ <div class="inner">
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <h3 class="footer-links-header">Quick Links</h3>
+ <ul class="footer-links clearfix">
+ <li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
+ <li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
+ <li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
+ <li><a href="http://www.eclipse.org/legal/">Legal</a></li>
+ </ul>
+ <ul class="footer-links clearfix">
+ <li><a href="http://www.eclipse.org">Eclipse Home</a></li>
+ <li><a href="http://marketplace.eclipse.org/">Market Place</a></li>
+ <li><a href="http://www.planeteclipse.org/">Eclipse Planet</a></li>
+ <li><a href="https://www.eclipse.org/forums/index.php/f/27/">Xtext Forum</a></li>
+ </ul>
+ </div>
+ <div class="span6">
+ <!-- Social Media Links -->
+ <h3 class="footer-links-header"">Social Media</h3>
+ <ul class="footer-links clearfix">
+ <li>
+ <a href="https://twitter.com/xtext"><img src="/Xtext/images/Twitter-bird-darkgray.png" class="img-responsive" style="margin-right: 5px;height: 1em;" alt="Twitter icon">@xtext on Twitter</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <a href="#" class="scrollup fadeOutRight animated" style="display: none;">ScrollUp</a>
+ <!-- Le javascript
+ ================================================== -->
+ <!-- Placed at the end of the document so the pages load faster -->
+
+ <script src="/Xtext/js/jquery-1.11.3.min.js"></script>
+ <script src="/Xtext/js/bootstrap.min.js"></script>
+ <script src="/Xtext/js/jquery.easing.1.3.js" type="text/javascript"></script>
+ <script src="/Xtext/js/jquery.prettyPhoto.js" type="text/javascript"></script>
+ <script src="/Xtext/js/prettify.js" type="text/javascript"></script>
+ <script src="/Xtext/js/lang-xtend.js" type="text/javascript"></script>
+ <script src="/Xtext/js/lang-common.js" type="text/javascript"></script>
+ <script src="/Xtext/js/custom.js" type="text/javascript"></script>
+ <!--script src="https://apis.google.com/js/platform.js" async defer></script-->
+ <!--script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push([ '_setAccount', 'UA-2429174-3' ]);
+ _gaq.push([ '_trackPageview' ]);
+ (function() {
+ var ga = document.createElement('script');
+ ga.type = 'text/javascript';
+ ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl'
+ : 'http://www')
+ + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(ga, s);
+ })();
+ </script-->
+ <script src="/Xtext/js/coverflow.min.js" type="text/javascript"></script>
+ <script>
+ $(function() {
+ $('#coverflow').coverflow({
+ active : 1,
+ visibleAside: 2,
+ overlap : 0.5,
+ scale : 0.9,
+ angle : 20,
+ trigger : {
+ "itemfocus" : true,
+ "swipe" : true,
+ "mousewheel" : false
+ }
+ });
+ $('#coverflow :hidden').toggle();
+ $(window).resize(function() {
+ $('#coverflow').coverflow();
+ });
+ });
+
+ </script>
+</footer>
+
+
+ </body>
+
+</html>
diff --git a/documentation/350_continuous_integration.html b/documentation/350_continuous_integration.html
index 5337aea..4e2a519 100644
--- a/documentation/350_continuous_integration.html
+++ b/documentation/350_continuous_integration.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/documentation/images/LSP_1_Xtext_Wizard.png b/documentation/images/LSP_1_Xtext_Wizard.png
new file mode 100644
index 0000000..d298b0c
--- /dev/null
+++ b/documentation/images/LSP_1_Xtext_Wizard.png
Binary files differ
diff --git a/documentation/images/LSP_2_DomainmodelContentType.png b/documentation/images/LSP_2_DomainmodelContentType.png
new file mode 100644
index 0000000..848be0d
--- /dev/null
+++ b/documentation/images/LSP_2_DomainmodelContentType.png
Binary files differ
diff --git a/documentation/images/LSP_3_DomainmodelLanguageServerLauncher.png b/documentation/images/LSP_3_DomainmodelLanguageServerLauncher.png
new file mode 100644
index 0000000..b6ce7ef
--- /dev/null
+++ b/documentation/images/LSP_3_DomainmodelLanguageServerLauncher.png
Binary files differ
diff --git a/documentation/images/LSP_4_DomainmodelLanguageServer.png b/documentation/images/LSP_4_DomainmodelLanguageServer.png
new file mode 100644
index 0000000..68c56a0
--- /dev/null
+++ b/documentation/images/LSP_4_DomainmodelLanguageServer.png
Binary files differ
diff --git a/documentation/images/LSP_5_DomainmodelLanguageFeatures.png b/documentation/images/LSP_5_DomainmodelLanguageFeatures.png
new file mode 100644
index 0000000..75ed0f7
--- /dev/null
+++ b/documentation/images/LSP_5_DomainmodelLanguageFeatures.png
Binary files differ
diff --git a/documentation/index.html b/documentation/index.html
index a530441..55e3270 100644
--- a/documentation/index.html
+++ b/documentation/index.html
@@ -162,6 +162,7 @@
<li><a href="308_emf_integration.html">Integration with EMF</a></li>
<li><a href="310_eclipse_support.html">Eclipse Support</a></li>
<li><a href="330_web_support.html">Web Editor Support</a></li>
+ <li><a href="340_lsp_support.html">LSP Support</a></li>
<li><a href="350_continuous_integration.html">Continuous Integration</a></li>
</ul>
</div>
diff --git a/feed.xml b/feed.xml
index 8b3a0a6..4fdec17 100644
--- a/feed.xml
+++ b/feed.xml
@@ -6,8 +6,8 @@
</description>
<link>http://xtext.org/Xtext/</link>
<atom:link href="http://xtext.org/Xtext/feed.xml" rel="self" type="application/rss+xml"/>
- <pubDate>Thu, 11 Feb 2021 10:06:04 +0000</pubDate>
- <lastBuildDate>Thu, 11 Feb 2021 10:06:04 +0000</lastBuildDate>
+ <pubDate>Wed, 17 Feb 2021 04:16:02 +0000</pubDate>
+ <lastBuildDate>Wed, 17 Feb 2021 04:16:02 +0000</lastBuildDate>
<generator>Jekyll v2.5.3</generator>
<item>