<
From version < 14.1 >
edited by Soeren Domroes
on 2019/04/01 13:56
To version < 12.1 >
edited by Soeren Domroes
on 2019/04/01 10:58
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -16,7 +16,7 @@
16 16  
17 17  \\
18 18  
19 -The setup tasks for Modular Target will fail. Disable it after this happens and execute them again via //Help>Perform Setup Tasks//. Open the //plug-in development// perspective. Select working sets as top level elements. Run //clean build//. Several pragmatics projects have errors. Just close them and you will be fine.
19 +The setup tasks for Modular Target will fail. Disable it after this happens and execute them again via //Help>Perform Setup Tasks//. Run //clean build//. Several pragmatics projects have error. Just close them and you will be fine.
20 20  
21 21  To run the language server go to //Run Configurations// create a new //eclipse application// run configuration and select //Run an application//  and //de.cau.cs.kieler.language.server.LanguageServer//
22 22  
... ... @@ -79,10 +79,8 @@
79 79  npm install -g windows-build-tools
80 80  {{/code}}
81 81  
82 -This installs make, gcc, g++, python and all this.
82 +This installs make, gcc, g++, python and all this (I am not sure about yarn, anyway you can always install yarn the same way as in the linux description)
83 83  
84 -Yarn can be downloaded and installed from [[here>>url:https://yarnpkg.com/lang/en/docs/install/#windows-stable||shape="rect"]].
85 -
86 86  === Known Problems in this step ===
87 87  
88 88  Python is not correctly registered in the path.
... ... @@ -153,24 +153,10 @@
153 153  yarn && cd keith-app && yarn run socket
154 154  {{/code}}
155 155  
156 -//yarn// builds all the stuff. //yarn run socket// in keith-app starts the application. After an initial build via yarn you can run //yarn watch // to watch the changes in your repository. In another console you run yarn run socket in keith-app. Now refreshing your browser is enough to apply the changes.
157 -
158 158  Per default the KEITH opens on localhost:3000.
159 159  
160 160  It is required to restart the language server if KEITH is restarted, since the diagram view has a problem (since theia-sprotty is used) to reconnect after that.
161 161  
162 -=== Known issues for windows: ===
163 -
164 -nsfw.code not found: In the top level package.json exists a script called postinstall. Remove this on windows, delete the node_modules folder and rebuilt the application. This is a known issue of electron-builder.
165 -
166 -=== Known issues on mac: ===
167 -
168 -Since SWT is still used as part of the diagram synthesis (but is not relevant anymore). Since it is not called on the main thread this causes a deadlock. Therefore mac just does not work.
169 -
170 -=== Known issues: ===
171 -
172 -Refreshing the browser is not enough for the diagram to work. If the diagram is needed the language server has to be restarted before the browser is refreshed. This is a known issue in theia-sprotty.
173 -
174 174  = Developing for KEITH =
175 175  
176 176  We use java ServiceLoader to register stuff. Here is a small example how a LanguageServerExtension is registered via a ServiceLoader and how it is used:
... ... @@ -293,13 +293,13 @@
293 293   this.compilerWidget.compileInplace]) as CodeContainer
294 294  // or via a thenable
295 295  client.languageClient.then(lClient => {
296 -lClient.sendRequest("keith/kicool/compile").then((snapshotsDescriptions: CodeContainer) => {
280 +lClient.sendRequest("keith/kicool/compile").then((languages: LanguageDescription[]) => {
297 297   // very important stuff
298 298  }
299 299  // await is preferred, since it is shorter.
300 300  {{/code}}
301 301  
302 -In this example client is an instance of a language client. It is usually injected like this:
286 +In this example client is an instance of a language client. It is usally injected like this:
303 303  
304 304  {{code}}
305 305  constructor(
... ... @@ -312,48 +312,6 @@
312 312  
313 313  \\
314 314  
315 -== How to make a new package for KEITH ==
299 +== How to make a new ==
316 316  
317 -Clone the [[KEITH repository>>url:https://git.rtsys.informatik.uni-kiel.de/projects/KIELER/repos/keith/browse||shape="rect"]].
318 -
319 -Open the keith folder in VSCode. You are know in the keith directory in VSCode.
320 -
321 -You see something like this: TODO picture
322 -
323 -Create a new folder called keith-<your extension name>.
324 -
325 -Copy a package.json, a tslint.json, a tsconfig.json, and a src folder into the folder.
326 -
327 -Add keith-<your extension name> to workspaces in the top level package.json.
328 -
329 -Add "keith-<your extension name>(% style="color: rgb(0,0,0);" %)": (%%)"0.1.0"(% style="color: rgb(0,0,0);" %) to the dependencies in the top level package.json and the product package.json files (e.g. the package.json in keith-app).
330 -
331 -=== What is in the src directory? ===
332 -
333 -The source directory has three optional subfolders.
334 -
335 -* node: Holds all backend related classes. This does currently only exist in the [[keith-language package>>url:https://git.rtsys.informatik.uni-kiel.de/projects/KIELER/repos/keith/browse/keith-language||shape="rect"]].
336 -* common: Holds general helper methods, string constants and some data classes
337 -* browser: Holds all widgets, contribution for commands, menus, and widgets, and the frontend-extension.
338 -
339 -==== The frontend-extension ====
340 -
341 -This binds all necessary classes. Look at existing frontend extension in [[KEITH>>url:https://git.rtsys.informatik.uni-kiel.de/projects/KIELER/repos/keith/browse||shape="rect"]] or [[Theia>>url:https://github.com/theia-ide/theia/tree/master/packages||shape="rect"]] to see how this is done.
342 -
343 -==== More examples for stuff ====
344 -
345 -See [[Theia examples>>url:https://www.theia-ide.org/doc/Commands_Keybindings.html||shape="rect"]].
346 -
347 347  == How to write a widget ==
348 -
349 -There are different kinds of widgets that are commonly used in [[KEITH>>url:https://git.rtsys.informatik.uni-kiel.de/projects/KIELER/repos/keith/browse||shape="rect"]] or in existing [[Theia packages>>url:https://github.com/theia-ide/theia/tree/master/packages||shape="rect"]].
350 -
351 -* BaseWidget: Very basic
352 -* ReactWidget: A render method has to be implemented that redraws the widget on demand. Additionally several on* event methods can beimplemented.
353 -* TreeWidget: Extends the ReactWidget and draws the contents of the widget in a tree view.
354 -
355 -If a widget has a state it should implement the StatefulWidget interface, which allows to imlement a store and restore method.
356 -
357 -Look at examples in KEITH or Theia to see how this is done.
358 -
359 -\\
Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -56852534
1 +56852530
URL
... ... @@ -1,1 +1,1 @@
1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/56852534/Running KEITH
1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/56852530/Running KEITH