Skip to content

Commit

Permalink
Initial upload of tutorial
Browse files Browse the repository at this point in the history
  • Loading branch information
Lucas Bullen committed Oct 12, 2017
0 parents commit 563954b
Show file tree
Hide file tree
Showing 177 changed files with 4,227 additions and 0 deletions.
7 changes: 7 additions & 0 deletions Eclipse_LS_Plugin/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
28 changes: 28 additions & 0 deletions Eclipse_LS_Plugin/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.eclipsecon.languageserverplugin</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
7 changes: 7 additions & 0 deletions Eclipse_LS_Plugin/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8
19 changes: 19 additions & 0 deletions Eclipse_LS_Plugin/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Language Server Plugin
Bundle-SymbolicName: org.eclipsecon.languageserverplugin;singleton:=true
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.eclipse.core.contenttype;bundle-version="3.7.0",
org.eclipse.lsp4j,
org.eclipse.lsp4j.jsonrpc;bundle-version="0.3.0",
org.eclipse.lsp4e;bundle-version="0.4.0",
org.eclipse.ui;bundle-version="3.109.100",
org.eclipse.core.runtime;bundle-version="3.14.0",
org.eclipse.ui.genericeditor;bundle-version="1.1.0",
org.eclipsecon.solution;bundle-version="1.0.0",
code.satyagraha.gfm.viewer.plugin;bundle-version="2.0.1",
org.eclipsecon.exercise1;bundle-version="1.0.0",
org.eclipsecon.exercise2;bundle-version="1.0.0",
org.eclipsecon.exercise3;bundle-version="1.0.0",
org.eclipsecon.exercise4;bundle-version="1.0.0"
Empty file added Eclipse_LS_Plugin/README.md
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
5 changes: 5 additions & 0 deletions Eclipse_LS_Plugin/build.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml
93 changes: 93 additions & 0 deletions Eclipse_LS_Plugin/plugin.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.core.contenttype.contentTypes">
<content-type
base-type="org.eclipse.core.runtime.text"
file-names="exer1.txt"
id="org.eclipsecon.exercise1-contenttype"
name="Exercise 1 Content Type (exer1.txt)"
priority="normal">
</content-type>
<content-type
base-type="org.eclipse.core.runtime.text"
file-names="exer2.txt"
id="org.eclipsecon.exercise2-contenttype"
name="Exercise 2 Content Type (exer2.txt)"
priority="normal">
</content-type>
<content-type
base-type="org.eclipse.core.runtime.text"
file-names="exer3.txt"
id="org.eclipsecon.exercise3-contenttype"
name="Exercise 3 Content Type (exer3.txt)"
priority="normal">
</content-type>
<content-type
base-type="org.eclipse.core.runtime.text"
file-names="exer4.txt"
id="org.eclipsecon.exercise4-contenttype"
name="Exercise 4 Content Type (exer4.txt)"
priority="normal">
</content-type>
</extension>
<extension
point="org.eclipse.lsp4e.languageServer">
<server
class="org.eclipsecon.languageserverplugin.ConnectionProvider1"
id="org.eclipsecon.languageserverplugin.server1"
label="Exersice 1 Server">
</server>
<contentTypeMapping
contentType="org.eclipsecon.exercise1-contenttype"
id="org.eclipsecon.languageserverplugin.server1">
</contentTypeMapping>
<server
class="org.eclipsecon.languageserverplugin.ConnectionProvider2"
id="org.eclipsecon.languageserverplugin.server2"
label="Exersice 2 Server">
</server>
<contentTypeMapping
contentType="org.eclipsecon.exercise2-contenttype"
id="org.eclipsecon.languageserverplugin.server2">
</contentTypeMapping>
<server
class="org.eclipsecon.languageserverplugin.ConnectionProvider3"
id="org.eclipsecon.languageserverplugin.server3"
label="Exersice 3 Server">
</server>
<contentTypeMapping
contentType="org.eclipsecon.exercise3-contenttype"
id="org.eclipsecon.languageserverplugin.server3">
</contentTypeMapping>
<server
class="org.eclipsecon.languageserverplugin.ConnectionProvider4"
id="org.eclipsecon.languageserverplugin.server4"
label="Exersice 4 Server">
</server>
<contentTypeMapping
contentType="org.eclipsecon.exercise4-contenttype"
id="org.eclipsecon.languageserverplugin.server4">
</contentTypeMapping>
</extension>
<extension
point="org.eclipse.ui.editors">
<editorContentTypeBinding
contentTypeId="org.eclipsecon.exercise1-contenttype"
editorId="org.eclipse.ui.genericeditor.GenericEditor">
</editorContentTypeBinding>
<editorContentTypeBinding
contentTypeId="org.eclipsecon.exercise2-contenttype"
editorId="org.eclipse.ui.genericeditor.GenericEditor">
</editorContentTypeBinding>
<editorContentTypeBinding
contentTypeId="org.eclipsecon.exercise3-contenttype"
editorId="org.eclipse.ui.genericeditor.GenericEditor">
</editorContentTypeBinding>
<editorContentTypeBinding
contentTypeId="org.eclipsecon.exercise4-contenttype"
editorId="org.eclipse.ui.genericeditor.GenericEditor">
</editorContentTypeBinding>
</extension>
</plugin>
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
package org.eclipsecon.languageserverplugin;

import java.io.FilterInputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import org.eclipse.lsp4e.server.StreamConnectionProvider;
import org.eclipse.lsp4j.jsonrpc.Launcher;
import org.eclipse.lsp4j.launch.LSPLauncher;
import org.eclipse.lsp4j.services.LanguageClient;
import org.eclipse.lsp4j.services.LanguageServer;

public class AbstractConnectionProvider implements StreamConnectionProvider {

private InputStream inputStream ;
private OutputStream outputStream;
private LanguageServer ls;
protected Launcher<LanguageClient> launcher;

public AbstractConnectionProvider(LanguageServer ls) {
this.ls = ls;
}

@Override
public void start() throws IOException {
PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream();
PipedInputStream in2 = new PipedInputStream();
PipedOutputStream out2 = new PipedOutputStream();

in.connect(out2);
out.connect(in2);

launcher = LSPLauncher.createServerLauncher(ls, in2, out2);
inputStream = in;
outputStream = out;
launcher.startListening();
}

@Override
public InputStream getInputStream() {
return new FilterInputStream(inputStream) {
@Override
public int read() throws IOException {
int res = super.read();
System.err.print((char) res);
return res;
}

@Override
public int read(byte[] b, int off, int len) throws IOException {
int bytes = super.read(b, off, len);
byte[] payload = new byte[bytes];
System.arraycopy(b, off, payload, 0, bytes);
System.err.print(new String(payload));
return bytes;
}

@Override
public int read(byte[] b) throws IOException {
int bytes = super.read(b);
byte[] payload = new byte[bytes];
System.arraycopy(b, 0, payload, 0, bytes);
System.err.print(new String(payload));
return bytes;
}
};
}

@Override
public OutputStream getOutputStream() {
return new FilterOutputStream(outputStream) {
@Override
public void write(int b) throws IOException {
System.err.print((char) b);
super.write(b);
}

@Override
public void write(byte[] b) throws IOException {
System.err.print(new String(b));
super.write(b);
}

@Override
public void write(byte[] b, int off, int len) throws IOException {
byte[] actual = new byte[len];
System.arraycopy(b, off, actual, 0, len);
System.err.print(new String(actual));
super.write(b, off, len);
}
};
}

@Override
public void stop() {
}

/*
*
*
* try {
DidChangeConfigurationParams params = new DidChangeConfigurationParams();
Map<String, Object> msbuildProjectTools = new HashMap<>();
List<String> completionsFromProject = new ArrayList<>();
completionsFromProject.add("Property"); //$NON-NLS-1$
completionsFromProject.add("ItemType"); //$NON-NLS-1$
completionsFromProject.add("ItemMetadata"); //$NON-NLS-1$
completionsFromProject.add("Target"); //$NON-NLS-1$
completionsFromProject.add("Task"); //$NON-NLS-1$
List<String> experimentalFeatures = new ArrayList<>();
experimentalFeatures.add("empty-completion-lists"); //$NON-NLS-1$
experimentalFeatures.add("expressions"); //$NON-NLS-1$
Map<String, Object> language = new HashMap<>();
language.put("enable", true); //$NON-NLS-1$
language.put("disableHover", false); //$NON-NLS-1$
language.put("logLevel", "Information"); //$NON-NLS-1$ //$NON-NLS-2$
language.put("experimentalFeatures", experimentalFeatures); //$NON-NLS-1$
language.put("completionsFromProject", completionsFromProject); //$NON-NLS-1$
msbuildProjectTools.put("language", language); //$NON-NLS-1$
params.setSettings(
Collections.singletonMap("msbuildProjectTools", //$NON-NLS-1$
Collections.singletonMap("language", language)));//$NON-NLS-1$
info.getLanguageClient().getWorkspaceService().didChangeConfiguration(params);
CompletableFuture<Hover> hover = info.getLanguageClient().getTextDocumentService().hover(LSPEclipseUtils.toTextDocumentPosistionParams(info.getFileUri(), offset, info.getDocument()));
requests.add(hover.thenAccept(hoverResults::add));
} catch (BadLocationException e) {
LanguageServerPlugin.logError(e);
}
*/
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.eclipsecon.languageserverplugin;

import java.io.IOException;

import org.eclipsecon.exercise1.ChamrousseLanguageServer;

public class ConnectionProvider1 extends AbstractConnectionProvider {
private static final ChamrousseLanguageServer TRAVEL_LANGUAGE_SERVER = new ChamrousseLanguageServer();
public ConnectionProvider1() {
super(TRAVEL_LANGUAGE_SERVER);
}

@Override
public void start() throws IOException {
super.start();
TRAVEL_LANGUAGE_SERVER.setRemoteProxy(launcher.getRemoteProxy());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.eclipsecon.languageserverplugin;

import java.io.IOException;

import org.eclipsecon.exercise2.ChamrousseLanguageServer;

public class ConnectionProvider2 extends AbstractConnectionProvider {
private static final ChamrousseLanguageServer TRAVEL_LANGUAGE_SERVER = new ChamrousseLanguageServer();
public ConnectionProvider2() {
super(TRAVEL_LANGUAGE_SERVER);
}

@Override
public void start() throws IOException {
super.start();
TRAVEL_LANGUAGE_SERVER.setRemoteProxy(launcher.getRemoteProxy());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.eclipsecon.languageserverplugin;

import java.io.IOException;

import org.eclipsecon.exercise3.ChamrousseLanguageServer;

public class ConnectionProvider3 extends AbstractConnectionProvider {
private static final ChamrousseLanguageServer TRAVEL_LANGUAGE_SERVER = new ChamrousseLanguageServer();
public ConnectionProvider3() {
super(TRAVEL_LANGUAGE_SERVER);
}

@Override
public void start() throws IOException {
super.start();
TRAVEL_LANGUAGE_SERVER.setRemoteProxy(launcher.getRemoteProxy());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.eclipsecon.languageserverplugin;

import java.io.IOException;

import org.eclipsecon.exercise4.ChamrousseLanguageServer;

public class ConnectionProvider4 extends AbstractConnectionProvider {
private static final ChamrousseLanguageServer TRAVEL_LANGUAGE_SERVER = new ChamrousseLanguageServer();
public ConnectionProvider4() {
super(TRAVEL_LANGUAGE_SERVER);
}

@Override
public void start() throws IOException {
super.start();
TRAVEL_LANGUAGE_SERVER.setRemoteProxy(launcher.getRemoteProxy());
}
}
Loading

0 comments on commit 563954b

Please sign in to comment.