I am an implementation of the Language Server Protocol (LSP) for the Pharo programming language. My main goal is to provide a unique interface for several generic IDE to manipulate a Pharo environment.
I am used by the following client extensions:
As a language server, I accept two Pharo/SmallTalk formats:
- .st for smalltalk script (as you can see in a playground).
- .class.st for tonel files.
Most of the features are available for both formats.
- Code highlighting
- Hover
- Auto-completion
- Code formatting
- Saving the file create/update the corresponding class in the image
There is two ways to download this project:
- by downloading a pre-build image (in releases or from the pharo launcher)
- by loading the code in a Pharo Image
To add this project into the pharo launcher:
- Download the PharoLauncher
- Open PharoLauncher
- Open a playground (Ctrl + O, Ctrl + W)
- Execute the following piece of code
| sources |
sources := {
PhLTemplateSource new
type: #HttpListing;
name: 'Pharo Language Server';
url: 'https://github.com/badetitou/Pharo-LanguageServer/releases';
filterPattern: 'href="([^"]*/(Pharo|Moose)[0-9][^"]*.zip)"';
templateNameFormat: '{6} ({5})' }.
PhLUserTemplateSources sourcesFile writeStreamDo: [ :s |
(STON writer on: s)
newLine: String lf;
prettyPrint: true;
nextPut: sources ]
Execute this code in any Pharo Image
Metacello new
githubUser: 'badetitou' project: 'Pharo-LanguageServer' commitish: 'v2' path: 'src';
baseline: 'PharoLanguageServer';
load