From 28e357bb252e26a0f2de5d9422ea6c72358f7dd8 Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Sun, 4 Sep 2016 13:13:13 +0200 Subject: [PATCH] Prepare for release --- README.md | 16 +++++++++++----- images/publishDiagnostics.png | Bin 0 -> 18341 bytes package.json | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 images/publishDiagnostics.png diff --git a/README.md b/README.md index f74dd90..f2b1587 100644 --- a/README.md +++ b/README.md @@ -13,15 +13,25 @@ instead of relying on naive regular expression parsing. ### Find all symbols ![Find all symbols demo](images/documentSymbol.gif) +### Column-accurate error reporting +![Error reporting demo](images/publishDiagnostics.png) + + ## Todo - Autocompletion - Rename - Goto definition - Format document - Hover + - Signature help - Follow composer autoloading -## Build and Run From Source + +## Contributing + +This is just the VS Code extension that spawns the actual language server. The language server itself is implemented purely in PHP [in its own repository](https://github.com/felixfbecker/php-language-server), all features need to be implemented there and all issues should be reported there. + +### Build and Run From Source Clone whole repository and in root directory execute: ```bash composer install @@ -31,7 +41,3 @@ code . ``` The last command will open the folder in VS Code. Hit `F5` to launch an Extension Development Host with the extension. For working on the language server, the easiest way is to replace the language server installation from composer in `vendor/felixfbecker/language-server` with a symlink to your local clone. - -## Contributing - -This is just the VS Code extension that spawns the actual language server. The language server itself is implemented purely in PHP [in its own repository](https://github.com/felixfbecker/php-language-server). diff --git a/images/publishDiagnostics.png b/images/publishDiagnostics.png new file mode 100644 index 0000000000000000000000000000000000000000..4499b708f5f911d4b75b3135c21b0f5f3ffb3995 GIT binary patch literal 18341 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", "license": "ISC", "private": true, + "preview": true, "version": "0.0.1", "engines": { "vscode": "^1.4.0"