From 11817c1c6a058b6e0f2049b79920d95915cd5ef0 Mon Sep 17 00:00:00 2001 From: Marc-Andre Laperle Date: Mon, 24 Jul 2017 11:57:11 -0400 Subject: [PATCH] A basic LSP4E integration with Clangd This plug-in adds an simple integration between LSP4E and Clangd. It simply launches clangd when opening C/C++ files with the Generic Editor. To try it, you need to: - Import the projects in your Eclipse workspace (you can only import the lsp4-cpp ones, the sources for CDT are not needed) - Open lsp4e.cpp-staging.target and set it as the target platform - You need to have clangd built and on the PATH. See https://clang.llvm.org/get_started.html - Start Eclipse: right-click on a project > Run as > Eclipse Application - In the new Eclipse instance, you can right-click on a C/C++ file > Open As > Generic Editor. This should make use of clangd, providing some basic diagnostics and formatting commands. This should help the Eclipse community to start playing with Clangd. Change-Id: I688d3a952dbc80d9f61186178f3c8a033afcc587 Signed-off-by: Marc-Andre Laperle --- lsp4e-cpp/.mvn/extensions.xml | 9 + lsp4e-cpp/LICENSE | 203 +++++++++ lsp4e-cpp/README.md | 29 ++ .../org.eclipse.lsp4e.cpp.language/.classpath | 7 + .../org.eclipse.lsp4e.cpp.language/.gitignore | 1 + .../org.eclipse.lsp4e.cpp.language/.project | 28 ++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.core.runtime.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 419 ++++++++++++++++++ .../.settings/org.eclipse.jdt.ui.prefs | 66 +++ .../.settings/org.eclipse.pde.prefs | 32 ++ .../META-INF/MANIFEST.MF | 21 + .../OSGI-INF/l10n/bundle.properties | 8 + .../build.properties | 7 + .../org.eclipse.lsp4e.cpp.language/plugin.xml | 96 ++++ .../lsp4e/cpp/language/CPPLanguageServer.java | 73 +++ .../LanguageServerPropertyTester.java | 44 ++ .../language/PresentationReconcilerCPP.java | 222 ++++++++++ .../lsp4e/cpp/language/ReindexHandler.java | 60 +++ lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.project | 11 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.core.runtime.prefs | 2 + .../org.eclipse.lsp4e.cpp.site/category.xml | 10 + lsp4e-cpp/org.eclipse.lsp4e.cpp.site/pom.xml | 25 ++ .../org.eclipse.lsp4e.cpp.target/.project | 24 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.core.runtime.prefs | 2 + .../cdt-plus-lsp4e.cpp.target | 114 +++++ .../lsp4e.cpp-staging.target | 45 ++ .../org.eclipse.lsp4e.cpp.target/pom.xml | 44 ++ lsp4e-cpp/org.eclipse.lsp4e.cpp/.project | 17 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.core.runtime.prefs | 2 + .../org.eclipse.lsp4e.cpp/build.properties | 2 + .../org.eclipse.lsp4e.cpp/feature.properties | 20 + lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.xml | 28 ++ lsp4e-cpp/pom.xml | 244 ++++++++++ 37 files changed, 1925 insertions(+) create mode 100644 lsp4e-cpp/.mvn/extensions.xml create mode 100644 lsp4e-cpp/LICENSE create mode 100644 lsp4e-cpp/README.md create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.classpath create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.gitignore create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.project create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.core.resources.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.core.runtime.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.jdt.core.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.jdt.ui.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.pde.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/META-INF/MANIFEST.MF create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/OSGI-INF/l10n/bundle.properties create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/build.properties create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/plugin.xml create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPLanguageServer.java create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/LanguageServerPropertyTester.java create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/PresentationReconcilerCPP.java create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/ReindexHandler.java create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.project create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.settings/org.eclipse.core.resources.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.settings/org.eclipse.core.runtime.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.site/category.xml create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.site/pom.xml create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.project create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.settings/org.eclipse.core.resources.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.settings/org.eclipse.core.runtime.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.target/cdt-plus-lsp4e.cpp.target create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.target/lsp4e.cpp-staging.target create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp.target/pom.xml create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp/.project create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp/.settings/org.eclipse.core.resources.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp/.settings/org.eclipse.core.runtime.prefs create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp/build.properties create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.properties create mode 100644 lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.xml create mode 100644 lsp4e-cpp/pom.xml diff --git a/lsp4e-cpp/.mvn/extensions.xml b/lsp4e-cpp/.mvn/extensions.xml new file mode 100644 index 00000000000..5edfccde4d7 --- /dev/null +++ b/lsp4e-cpp/.mvn/extensions.xml @@ -0,0 +1,9 @@ + + + + org.eclipse.tycho.extras + tycho-pomless + 1.0.0 + + + diff --git a/lsp4e-cpp/LICENSE b/lsp4e-cpp/LICENSE new file mode 100644 index 00000000000..f735bee0e8d --- /dev/null +++ b/lsp4e-cpp/LICENSE @@ -0,0 +1,203 @@ +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation + distributed under this Agreement, and +b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are + distributed by that particular Contributor. A Contribution 'originates' + from a Contributor if it was added to the Program by such Contributor + itself or anyone acting on such Contributor's behalf. Contributions do not + include additions to the Program which: (i) are separate modules of + software distributed in conjunction with the Program under their own + license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare derivative works of, publicly display, publicly + perform, distribute and sublicense the Contribution of such Contributor, + if any, and such derivative works, in source code and object code form. + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in source code and + object code form. This patent license shall apply to the combination of + the Contribution and the Program if, at the time the Contribution is + added by the Contributor, such addition of the Contribution causes such + combination to be covered by the Licensed Patents. The patent license + shall not apply to any other combinations which include the Contribution. + No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses + to its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other + intellectual property rights of any other entity. Each Contributor + disclaims any liability to Recipient for claims brought by any other + entity based on infringement of intellectual property rights or + otherwise. As a condition to exercising the rights and licenses granted + hereunder, each Recipient hereby assumes sole responsibility to secure + any other intellectual property rights needed, if any. For example, if a + third party patent license is required to allow Recipient to distribute + the Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under +its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + b) its license agreement: + i) effectively disclaims on behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all Contributors all liability for + damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + iii) states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained + within the Program. + +Each Contributor must identify itself as the originator of its Contribution, +if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, +if a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits and +other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such Commercial +Contributor in connection with its distribution of the Program in a commercial +product offering. The obligations in this section do not apply to any claims +or Losses relating to any actual or alleged intellectual property +infringement. In order to qualify, an Indemnified Contributor must: +a) promptly notify the Commercial Contributor in writing of such claim, and +b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such claim at +its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If +that Commercial Contributor then makes performance claims, or offers +warranties related to Product X, those performance claims and warranties are +such Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a +court requires any other Contributor to pay any damages as a result, the +Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using +and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the +risks and costs of program errors, compliance with applicable laws, damage to +or loss of data, programs or equipment, and unavailability or interruption of +operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION +LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of the +remainder of the terms of this Agreement, and without further action by the +parties hereto, such provision shall be reformed to the minimum extent +necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted +under Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue +and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to +time. No one other than the Agreement Steward has the right to modify this +Agreement. The Eclipse Foundation is the initial Agreement Steward. The +Eclipse Foundation may assign the responsibility to serve as the Agreement +Steward to a suitable separate entity. Each new version of the Agreement will +be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version of the +Agreement is published, Contributor may elect to distribute the Program +(including its Contributions) under the new version. Except as expressly +stated in Sections 2(a) and 2(b) above, Recipient receives no rights or +licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the +Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. diff --git a/lsp4e-cpp/README.md b/lsp4e-cpp/README.md new file mode 100644 index 00000000000..4cc96d74bd7 --- /dev/null +++ b/lsp4e-cpp/README.md @@ -0,0 +1,29 @@ +# LSP4E-CPP: C/C++ Language Server Support in Eclipse IDE + +Support for C/C++ edition in Eclipse IDE using the Language Server Protocol. Relies on Clangd and the Language Server Protocol. + +## Prerequisites + +You need `Clangd` working on CLI (visible in `PATH` environment variable). Since `Clangd` is very young, you will most likely need to compile it from source, see the [Clang documentation](http://clang.llvm.org/get_started.html) for more instructions. Make sure you you do checkout the `Clang extra Tools`. + +## Build from source + +### Requirements +* `Maven 3.3` or greater +* `Java 8` (make sure it is seen by Maven with ```mvn -version```) + +With the repository cloned, simply execute ```mvn clean package```. The p2 repository will be in ```$LSP4E_CPP_ROOT/org.eclipse.lsp4e.cpp.site/target/repository```. + +## Installation in Eclipse IDE + +Go to Help > Install new Software. Add the local repository ```$LSP4E_CPP_ROOT/org.eclipse.lsp4e.cpp.site/target/repository```. + +## Usage ## + +Once the plug-in is installed, right-click on a C/C++ source file and open with the `Generic Text Editor`. + +## Concept + +LSP4E-CPP uses the [lsp4e](https://projects.eclipse.org/projects/technology.lsp4e) project to integrate with [Clangd (part of Clang "extra" tools)](http://clang.llvm.org/extra/) with the goal to provide a rich C/C++ editor in the Eclipse IDE. + +Keep in mind that `Clangd` is very young and just getting started so not many features are functional at this moment. diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.classpath b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.classpath new file mode 100644 index 00000000000..eca7bdba8f0 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.gitignore b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.gitignore new file mode 100644 index 00000000000..ae3c1726048 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.project b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.project new file mode 100644 index 00000000000..801ab7b60c1 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.project @@ -0,0 +1,28 @@ + + + org.eclipse.lsp4e.cpp.language + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.core.resources.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..99f26c0203a --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.core.runtime.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 00000000000..5a0ad22d2a7 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\n diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.jdt.core.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..6bb02050ad5 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,419 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes=f +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 +org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=80 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=120 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.jdt.ui.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000000..145186810bd --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,66 @@ +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile +formatter_settings_version=12 +org.eclipse.jdt.ui.exception.name=e +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.overrideannotation=true +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=true +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_functional_interfaces=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=false +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.insert_inferred_type_arguments=false +sp_cleanup.make_local_variable_final=true +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.organize_imports=false +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_redundant_type_arguments=true +sp_cleanup.remove_trailing_whitespaces=true +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=false +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_anonymous_class_creation=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_lambda=true +sp_cleanup.use_parentheses_in_expressions=false +sp_cleanup.use_this_for_non_static_field_access=false +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=false +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.pde.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.pde.prefs new file mode 100644 index 00000000000..01d624df119 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/.settings/org.eclipse.pde.prefs @@ -0,0 +1,32 @@ +compilers.f.unresolved-features=1 +compilers.f.unresolved-plugins=1 +compilers.incompatible-environment=1 +compilers.p.build=1 +compilers.p.build.bin.includes=0 +compilers.p.build.encodings=2 +compilers.p.build.java.compiler=2 +compilers.p.build.java.compliance=1 +compilers.p.build.missing.output=2 +compilers.p.build.output.library=1 +compilers.p.build.source.library=0 +compilers.p.build.src.includes=0 +compilers.p.deprecated=1 +compilers.p.discouraged-class=1 +compilers.p.internal=1 +compilers.p.missing-packages=1 +compilers.p.missing-version-export-package=2 +compilers.p.missing-version-import-package=2 +compilers.p.missing-version-require-bundle=2 +compilers.p.no-required-att=0 +compilers.p.not-externalized-att=1 +compilers.p.unknown-attribute=1 +compilers.p.unknown-class=1 +compilers.p.unknown-element=1 +compilers.p.unknown-identifier=1 +compilers.p.unknown-resource=1 +compilers.p.unresolved-ex-points=0 +compilers.p.unresolved-import=0 +compilers.s.create-docs=false +compilers.s.doc-folder=doc +compilers.s.open-tags=1 +eclipse.preferences.version=1 diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/META-INF/MANIFEST.MF b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..8af924d7d2e --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/META-INF/MANIFEST.MF @@ -0,0 +1,21 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-SymbolicName: org.eclipse.lsp4e.cpp.language;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Require-Bundle: org.apache.commons.io, + org.eclipse.core.runtime, + org.eclipse.lsp4e, + org.eclipse.ui.genericeditor;bundle-version="1.0.0", + org.eclipse.jface.text, + org.eclipse.cdt.ui, + org.eclipse.cdt.core, + org.eclipse.jface, + org.eclipse.ui, + org.eclipse.lsp4j, + org.eclipse.core.commands, + org.eclipse.core.expressions, + org.eclipse.core.resources +Bundle-Vendor: %Bundle-Vendor +Export-Package: org.eclipse.lsp4e.cpp.language diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/OSGI-INF/l10n/bundle.properties b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/OSGI-INF/l10n/bundle.properties new file mode 100644 index 00000000000..b4947d8e913 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,8 @@ +#Properties file for org.eclipse.lsp4e.cpp.language +Bundle-Vendor = Eclipse CDT +Bundle-Name = LSP4E C/C++ Support Plug-in +content-type.name = C/C++ +server.label = C/C++ Language Server + +reindex.command.name = Reindex +reindex.command.label = Reindex \ No newline at end of file diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/build.properties b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/build.properties new file mode 100644 index 00000000000..04fa2eee8dd --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + OSGI-INF/,\ + OSGI-INF/l10n/bundle.properties diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/plugin.xml b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/plugin.xml new file mode 100644 index 00000000000..dd1417acb0c --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/plugin.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPLanguageServer.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPLanguageServer.java new file mode 100644 index 00000000000..3bfaec637ae --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPLanguageServer.java @@ -0,0 +1,73 @@ +/******************************************************************************* + * Copyright (c) 2017 Ericsson and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ + +package org.eclipse.lsp4e.cpp.language; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.io.IOUtils; +import org.eclipse.core.runtime.Platform; +import org.eclipse.lsp4e.server.ProcessStreamConnectionProvider; + +public class CPPLanguageServer extends ProcessStreamConnectionProvider { + + public static final String ID = "org.eclipse.lsp4e.languages.cpp"; //$NON-NLS-1$ + + private static final String CLANG_LANGUAGE_SERVER = "clangd"; //$NON-NLS-1$ + + public CPPLanguageServer() { + List commands = new ArrayList<>(); + File clangServerLocation = getClangServerLocation(); + String parent = ""; //$NON-NLS-1$ + if (clangServerLocation != null) { + commands.add(clangServerLocation.getAbsolutePath()); + parent = clangServerLocation.getParent(); + } + setWorkingDirectory(parent); + setCommands(commands); + } + + @Override + public String toString() { + return "C/C++ Language Server: " + super.toString(); //$NON-NLS-1$ + } + + private static File getClangServerLocation() { + String res = null; + String[] command = new String[] {"/bin/bash", "-c", "which " + CLANG_LANGUAGE_SERVER}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + if (Platform.getOS().equals(Platform.OS_WIN32)) { + command = new String[] {"cmd", "/c", "where " + CLANG_LANGUAGE_SERVER}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + } + BufferedReader reader = null; + try { + Process p = Runtime.getRuntime().exec(command); + reader = new BufferedReader(new InputStreamReader(p.getInputStream())); + res = reader.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + IOUtils.closeQuietly(reader); + } + + if (res == null) { + return null; + } + + File f = new File(res); + if (f.canExecute()) { + return f; + } + + return null; + } +} diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/LanguageServerPropertyTester.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/LanguageServerPropertyTester.java new file mode 100644 index 00000000000..80fa5e3c5f5 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/LanguageServerPropertyTester.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2017 Ericsson and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ + +package org.eclipse.lsp4e.cpp.language; + +import java.io.IOException; + +import org.eclipse.core.expressions.PropertyTester; +import org.eclipse.core.resources.IProject; +import org.eclipse.lsp4e.LanguageServersRegistry; +import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition; +import org.eclipse.lsp4e.LanguageServiceAccessor; +import org.eclipse.lsp4e.ProjectSpecificLanguageServerWrapper; + +/** + * Tests whether of not a project is running the C/C++ server. + */ +public class LanguageServerPropertyTester extends PropertyTester { + + private static final String KEY_HAS_SERVER = "hasServer"; //$NON-NLS-1$ + + @Override + public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { + //FIXME; needs https://git.eclipse.org/r/#/c/101835/ +// if (KEY_HAS_SERVER.equals(property)) { +// if (receiver instanceof IProject) { +// LanguageServerDefinition definition = LanguageServersRegistry.getInstance().getDefinition(CPPLanguageServer.ID); +// try { +// ProjectSpecificLanguageServerWrapper lsWrapperForConnection = LanguageServiceAccessor.getLSWrapperForConnection((IProject) receiver, definition, false); +// return lsWrapperForConnection != null; +// } catch (IOException e) { +// return false; +// } +// } +// } + return false; + } + +} diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/PresentationReconcilerCPP.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/PresentationReconcilerCPP.java new file mode 100644 index 00000000000..f6fe57362f4 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/PresentationReconcilerCPP.java @@ -0,0 +1,222 @@ +/******************************************************************************* + * Copyright (c) 2005, 2017 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * QNX Software System + * Anton Leherbauer (Wind River Systems) + * Sergey Prigogin (Google) + * Marc-Andre Laperle (Ericsson) - Mostly copied from CSourceViewerConfiguration + *******************************************************************************/ + +package org.eclipse.lsp4e.cpp.language; + +import org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage; +import org.eclipse.cdt.core.model.ICLanguageKeywords; +import org.eclipse.cdt.core.model.ILanguage; +import org.eclipse.cdt.internal.ui.text.CCodeScanner; +import org.eclipse.cdt.internal.ui.text.CCommentScanner; +import org.eclipse.cdt.internal.ui.text.CPreprocessorScanner; +import org.eclipse.cdt.internal.ui.text.CPresentationReconciler; +import org.eclipse.cdt.internal.ui.text.FastCPartitioner; +import org.eclipse.cdt.internal.ui.text.PartitionDamager; +import org.eclipse.cdt.internal.ui.text.SingleTokenCScanner; +import org.eclipse.cdt.internal.ui.text.TokenStore; +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.cdt.ui.ILanguageUI; +import org.eclipse.cdt.ui.text.AbstractCScanner; +import org.eclipse.cdt.ui.text.ICColorConstants; +import org.eclipse.cdt.ui.text.ICPartitions; +import org.eclipse.cdt.ui.text.ICTokenScanner; +import org.eclipse.cdt.ui.text.ITokenStore; +import org.eclipse.cdt.ui.text.ITokenStoreFactory; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.TextPresentation; +import org.eclipse.jface.text.rules.DefaultDamagerRepairer; +import org.eclipse.jface.text.rules.RuleBasedScanner; + +/** + * Hack-ish reconciler to get some colors in the generic editor using the C/C++ + * Server. + */ +@SuppressWarnings("restriction") +public class PresentationReconcilerCPP extends CPresentationReconciler { + + private CCommentScanner fSinglelineCommentScanner; + private CCommentScanner fMultilineCommentScanner; + private SingleTokenCScanner fStringScanner; + private AbstractCScanner fCodeScanner; + private boolean fSettingPartitioner = false; + protected ITokenStoreFactory getTokenStoreFactory() { + return new ITokenStoreFactory() { + @Override + public ITokenStore createTokenStore(String[] propertyColorNames) { + return new TokenStore(CUIPlugin.getDefault().getTextTools().getColorManager(), CUIPlugin.getDefault().getCombinedPreferenceStore(), propertyColorNames); + } + }; + } + + protected ILanguage getLanguage() { + // fallback + return GPPLanguage.getDefault(); + } + + protected RuleBasedScanner getCodeScanner(ILanguage language) { + if (fCodeScanner != null) { + return fCodeScanner; + } + RuleBasedScanner scanner= null; + + if (language != null) { + ICLanguageKeywords keywords = language.getAdapter(ICLanguageKeywords.class); + if (keywords != null) { + scanner = new CCodeScanner(getTokenStoreFactory(), keywords); + } else { + ILanguageUI languageUI = language.getAdapter(ILanguageUI.class); + if (languageUI != null) { + scanner = languageUI.getCodeScanner(); + } + } + } + + if (scanner == null) { + scanner = new CCodeScanner(getTokenStoreFactory(), GPPLanguage.getDefault()); + } + if (scanner instanceof AbstractCScanner) { + fCodeScanner= (AbstractCScanner)scanner; + } + return scanner; + } + + public PresentationReconcilerCPP() { + fStringScanner= new SingleTokenCScanner(getTokenStoreFactory(), ICColorConstants.C_STRING); + fMultilineCommentScanner= new CCommentScanner(getTokenStoreFactory(), ICColorConstants.C_MULTI_LINE_COMMENT); + fSinglelineCommentScanner= new CCommentScanner(getTokenStoreFactory(), ICColorConstants.C_SINGLE_LINE_COMMENT); + + setDocumentPartitioning(CUIPlugin.getDefault().getTextTools().getDocumentPartitioning()); + + ILanguage language= getLanguage(); + RuleBasedScanner scanner = getCodeScanner(language); + + DefaultDamagerRepairer dr= new DefaultDamagerRepairer(scanner); + + setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); + setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); + + dr= new DefaultDamagerRepairer(fSinglelineCommentScanner); + setDamager(dr, ICPartitions.C_SINGLE_LINE_COMMENT); + setRepairer(dr, ICPartitions.C_SINGLE_LINE_COMMENT); + + dr= new DefaultDamagerRepairer(fMultilineCommentScanner); + setDamager(dr, ICPartitions.C_MULTI_LINE_COMMENT); + setRepairer(dr, ICPartitions.C_MULTI_LINE_COMMENT); + + ICTokenScanner docCommentSingleScanner= getSinglelineDocCommentScanner(null); + if (docCommentSingleScanner!=null) { + dr= new DefaultDamagerRepairer(docCommentSingleScanner); + setDamager(dr, ICPartitions.C_SINGLE_LINE_DOC_COMMENT); + setRepairer(dr, ICPartitions.C_SINGLE_LINE_DOC_COMMENT); + } + + ICTokenScanner docCommentMultiScanner= getMultilineDocCommentScanner(null); + if (docCommentMultiScanner!=null) { + dr= new DefaultDamagerRepairer(docCommentMultiScanner); + setDamager(dr, ICPartitions.C_MULTI_LINE_DOC_COMMENT); + setRepairer(dr, ICPartitions.C_MULTI_LINE_DOC_COMMENT); + } + + dr= new DefaultDamagerRepairer(fStringScanner); + setDamager(dr, ICPartitions.C_STRING); + setRepairer(dr, ICPartitions.C_STRING); + + dr= new DefaultDamagerRepairer(fStringScanner); + setDamager(dr, ICPartitions.C_CHARACTER); + setRepairer(dr, ICPartitions.C_CHARACTER); + + dr= new DefaultDamagerRepairer(getPreprocessorScanner(language)); + setDamager(new PartitionDamager(), ICPartitions.C_PREPROCESSOR); + setRepairer(dr, ICPartitions.C_PREPROCESSOR); + } + + @Override + protected TextPresentation createPresentation(IRegion damage, IDocument document) { + if (fSettingPartitioner) { + return null; + } + //FIXME: Need a better place to set the partitioner + if (!(document.getDocumentPartitioner() instanceof FastCPartitioner)) { + // Prevent infinite recursion + fSettingPartitioner = true; + CUIPlugin.getDefault().getTextTools().setupCDocument(document); + fSettingPartitioner = false; + } + TextPresentation createPresentation = super.createPresentation(damage, document); + return createPresentation; + } + + /** + * Returns the C multi-line doc comment scanner for this configuration. + * + * @return the C multi-line doc comment scanner + */ + protected ICTokenScanner getMultilineDocCommentScanner(IResource resource) { + if (fMultilineDocCommentScanner == null) { + if (resource == null) { + resource= ResourcesPlugin.getWorkspace().getRoot(); + } +// IDocCommentViewerConfiguration owner= DocCommentOwnerManager.getInstance().getCommentOwner(resource).getMultilineConfiguration(); +// fMultilineDocCommentScanner= owner.createCommentScanner(getTokenStoreFactory()); + if (fMultilineDocCommentScanner == null) { + // fallback: normal comment highlighting + fMultilineDocCommentScanner= fMultilineCommentScanner; + } + } + return fMultilineDocCommentScanner; + } + + protected ICTokenScanner fMultilineDocCommentScanner; + /** + * The C single-line doc comment scanner. + */ + protected ICTokenScanner fSinglelineDocCommentScanner; + + protected ICTokenScanner getSinglelineDocCommentScanner(IResource resource) { + if (fSinglelineDocCommentScanner == null) { + if (resource == null) { + resource= ResourcesPlugin.getWorkspace().getRoot(); + } +// IDocCommentViewerConfiguration owner= DocCommentOwnerManager.getInstance().getCommentOwner(resource).getSinglelineConfiguration(); +// fSinglelineDocCommentScanner= owner.createCommentScanner(getTokenStoreFactory()); + if (fSinglelineDocCommentScanner == null) { + // fallback: normal comment highlighting + fSinglelineDocCommentScanner= fSinglelineCommentScanner; + } + } + return fSinglelineDocCommentScanner; + } + + protected AbstractCScanner fPreprocessorScanner; + protected RuleBasedScanner getPreprocessorScanner(ILanguage language) { + if (fPreprocessorScanner != null) { + return fPreprocessorScanner; + } + AbstractCScanner scanner= null; + ICLanguageKeywords keywords = language == null ? null : (ICLanguageKeywords) language.getAdapter(ICLanguageKeywords.class); + if (keywords != null) { + scanner = new CPreprocessorScanner(getTokenStoreFactory(), keywords); + } + if (scanner == null) { + keywords = GPPLanguage.getDefault().getAdapter(ICLanguageKeywords.class); + scanner= new CPreprocessorScanner(getTokenStoreFactory(), keywords); + } + fPreprocessorScanner= scanner; + return fPreprocessorScanner; + } +} diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/ReindexHandler.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/ReindexHandler.java new file mode 100644 index 00000000000..0c307497359 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/ReindexHandler.java @@ -0,0 +1,60 @@ +/******************************************************************************* + * Copyright (c) 2017 Ericsson and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ + +package org.eclipse.lsp4e.cpp.language; + +import java.io.IOException; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.Adapters; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.lsp4e.LanguageServersRegistry; +import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition; +import org.eclipse.lsp4e.LanguageServiceAccessor; +import org.eclipse.lsp4e.ProjectSpecificLanguageServerWrapper; +import org.eclipse.lsp4j.ExecuteCommandParams; +import org.eclipse.ui.PlatformUI; + +/** + * Temporary handler for temporary command in order to aid testing the indexing + * support in Clangd. + */ +public class ReindexHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + //FIXME; needs https://git.eclipse.org/r/#/c/101835/ +// IProject project = null; +// ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection(); +// if (selection instanceof IStructuredSelection) { +// Object item = ((IStructuredSelection)selection).getFirstElement(); +// project = Adapters.adapt(item, IProject.class); +// } +// if (project == null) { +// return null; +// } +// +// LanguageServerDefinition definition = LanguageServersRegistry.getInstance().getDefinition(CPPLanguageServer.ID); +// try { +// ProjectSpecificLanguageServerWrapper lsWrapperForConnection = LanguageServiceAccessor.getLSWrapperForConnection(project, definition, false); +// if (lsWrapperForConnection != null) { +// ExecuteCommandParams params = new ExecuteCommandParams("reindex", null); +// lsWrapperForConnection.getServer().getWorkspaceService().executeCommand(params); +// } +// } catch (IOException e) { +// return false; +// } + + return null; + } + +} diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.project b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.project new file mode 100644 index 00000000000..46cd10b5a53 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.project @@ -0,0 +1,11 @@ + + + org.eclipse.lsp4e.cpp.site + + + + + + + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.settings/org.eclipse.core.resources.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..99f26c0203a --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.settings/org.eclipse.core.runtime.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 00000000000..5a0ad22d2a7 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\n diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/category.xml b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/category.xml new file mode 100644 index 00000000000..00b87d7ae50 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/category.xml @@ -0,0 +1,10 @@ + + + + Update site for LSP4E C/C++ Support. + + + + + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/pom.xml b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/pom.xml new file mode 100644 index 00000000000..a2d7d920363 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.site/pom.xml @@ -0,0 +1,25 @@ + + + + + 4.0.0 + + + org.eclipse.lsp4e.cpp.group + org.eclipse.lsp4e.cpp.parent + 1.0.0-SNAPSHOT + + + org.eclipse.lsp4e.cpp.site + eclipse-repository + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.project b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.project new file mode 100644 index 00000000000..4c3114808bc --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.project @@ -0,0 +1,24 @@ + + + org.eclipse.lsp4e.cpp.target + + + + + + + + + + parent-pom.xml + 1 + PARENT-1-PROJECT_LOC/pom.xml + + + + + copy_PARENT + $%7BPARENT-5-PROJECT_LOC%7D/git/lsp4e-cpp + + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.settings/org.eclipse.core.resources.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..99f26c0203a --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.settings/org.eclipse.core.runtime.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 00000000000..5a0ad22d2a7 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\n diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/cdt-plus-lsp4e.cpp.target b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/cdt-plus-lsp4e.cpp.target new file mode 100644 index 00000000000..e09ad704d20 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/cdt-plus-lsp4e.cpp.target @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-Xms40m +-Xmx512M +-XX:MaxPermSize=256m +-ea +-consolelog + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/lsp4e.cpp-staging.target b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/lsp4e.cpp-staging.target new file mode 100644 index 00000000000..1d87c359735 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/lsp4e.cpp-staging.target @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-Xms40m +-Xmx512M +-XX:MaxPermSize=256m +-ea +-consolelog + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/pom.xml b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/pom.xml new file mode 100644 index 00000000000..398c49b0afd --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.target/pom.xml @@ -0,0 +1,44 @@ + + 4.0.0 + + + org.eclipse.lsp4e.cpp.group + org.eclipse.lsp4e.cpp.parent + 1.0.0-SNAPSHOT + + + org.eclipse.lsp4e.cpp.target + 1.0.0-SNAPSHOT + pom + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.9 + + + attach-artifacts + package + + attach-artifact + + + + + lsp4e.cpp-staging.target + target + lsp4e.cpp-staging + + + + + + + + + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp/.project b/lsp4e-cpp/org.eclipse.lsp4e.cpp/.project new file mode 100644 index 00000000000..5763f0e6ddd --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp/.project @@ -0,0 +1,17 @@ + + + org.eclipse.lsp4e.cpp + + + + + + org.eclipse.pde.FeatureBuilder + + + + + + org.eclipse.pde.FeatureNature + + diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp/.settings/org.eclipse.core.resources.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..99f26c0203a --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp/.settings/org.eclipse.core.runtime.prefs b/lsp4e-cpp/org.eclipse.lsp4e.cpp/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 00000000000..5a0ad22d2a7 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\n diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp/build.properties b/lsp4e-cpp/org.eclipse.lsp4e.cpp/build.properties new file mode 100644 index 00000000000..b3a611b5c93 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp/build.properties @@ -0,0 +1,2 @@ +bin.includes = feature.xml,\ + feature.properties diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.properties b/lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.properties new file mode 100644 index 00000000000..6fc612faeb8 --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.properties @@ -0,0 +1,20 @@ +############################################################################### +# Copyright (c) 2017 Ericsson +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################### + +featureName=LSP4E C/C++ Support + +description=Plug-ins to support C/C++ language servers in LSP4E. + +featureProvider=Eclipse CDT + +copyright=Copyright (c) 2017 Ericsson and others.\n\ +All rights reserved. This program and the accompanying materials\n\ +are made available under the terms of the Eclipse Public License v1.0\n\ +which accompanies this distribution, and is available at\n\ +http://www.eclipse.org/legal/epl-v10.html diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.xml b/lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.xml new file mode 100644 index 00000000000..b8d78ac606c --- /dev/null +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp/feature.xml @@ -0,0 +1,28 @@ + + + + + %description + + + + %copyright + + + + %license + + + + + diff --git a/lsp4e-cpp/pom.xml b/lsp4e-cpp/pom.xml new file mode 100644 index 00000000000..c4195b4e0e1 --- /dev/null +++ b/lsp4e-cpp/pom.xml @@ -0,0 +1,244 @@ + + + + 4.0.0 + + + ${required-maven-version} + + + org.eclipse.lsp4e.cpp.group + org.eclipse.lsp4e.cpp.parent + 1.0.0-SNAPSHOT + pom + LSP4E C/C++ Support Parent + + + + Eclipse Public License v1.0 + + All rights reserved. + + This program and the accompanying materials are made + available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.htm + + + + + + 3.3 + UTF-8 + UTF-8 + + 1.0.0 + lsp4e.cpp-staging + + + + org.eclipse.lsp4e.cpp + org.eclipse.lsp4e.cpp.language + org.eclipse.lsp4e.cpp.site + org.eclipse.lsp4e.cpp.target + + + + + + true + org.apache.maven.plugins + maven-enforcer-plugin + 1.4.1 + + + enforce-maven-version + + enforce + + + + + ${required-maven-version} + + + 1.8 + + + true + + + + + + + org.eclipse.tycho + target-platform-configuration + + true + + + win32 + win32 + x86 + + + win32 + win32 + x86_64 + + + macosx + cocoa + x86_64 + + + linux + gtk + x86 + + + linux + gtk + x86_64 + + + + + org.eclipse.lsp4e.cpp.group + org.eclipse.lsp4e.cpp.target + ${target-platform} + 1.0.0-SNAPSHOT + + + + + + + org.eclipse.tycho + tycho-maven-plugin + ${tycho-version} + true + + + + org.eclipse.tycho + tycho-source-plugin + ${tycho-version} + + + plugin-source + + plugin-source + + + + + + + + + + org.eclipse.tycho + tycho-compiler-plugin + ${tycho-version} + + 1.8 + 1.8 + UTF-8 + + + + + org.eclipse.tycho + target-platform-configuration + ${tycho-version} + + + + org.eclipse.tycho + tycho-versions-plugin + ${tycho-version} + + + + org.eclipse.tycho + tycho-packaging-plugin + ${tycho-version} + + + + org.apache.maven.plugins + maven-resources-plugin + 3.0.1 + + UTF-8 + + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.8 + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.10 + + + + org.eclipse.rcptt + rcptt-maven-plugin + ${rcptt-version} + + + + org.apache.maven.plugins + maven-site-plugin + 3.5.1 + + + + org.apache.maven.plugins + maven-clean-plugin + 3.0.0 + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + + + org.apache.maven.plugins + maven-install-plugin + 2.5.2 + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 2.9 + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.4 + + + + + +