Compare commits

..

192 Commits

Author SHA1 Message Date
Felix Becker 6001269db0 build: fix package-lock.json 2019-12-26 19:05:54 +01:00
Dylan McGannon 4898e75f4e fix: prevent focusing the output tab (#454) 2019-12-26 18:50:27 +01:00
Renovate Bot 9785d23da7 chore(deps): update dependency semver to v6 2019-12-14 20:51:02 +00:00
Felix Becker 5e61b44249 build: add package-lock.json 2019-09-20 17:38:06 +02:00
Felix Becker 18c03ef974 fix: bump PHP version requirement to 7.1
PHP 7.0 reached end of life: https://www.php.net/supported-versions.php

Fixes #447
2019-09-20 17:34:37 +02:00
Felix Becker 7281961bde fix: include stubs autoloader map 2019-09-19 14:23:48 +02:00
Felix Becker ab20916e50 fix: set the minimum php version to 7.0 2019-09-19 11:28:27 +02:00
Felix Becker 3bd389a5e6 fix: update dependencies 2019-09-19 11:20:20 +02:00
Renovate Bot 51e9ca1cdb chore(deps): update dependency @types/mocha to v5.2.7 2019-08-10 09:52:42 +00:00
Renovate Bot 3fdd166950 chore(deps): update dependency @types/mocha to v5.2.6 2019-02-14 00:38:26 +00:00
Renovate Bot 3b78c60524 chore(deps): update dependency prettier to v1.15.3 2018-11-30 09:17:37 +01:00
MarvinJWendt ff778bb66b docs: update copyright year (#397) 2018-11-22 09:08:15 +01:00
Renovate Bot aed701a705 fix(deps): update dependency felixfbecker/language-server to v5.4.6 2018-11-14 00:57:16 +01:00
Felix Becker 9e4e9ce240 chore(renovate): separate minor and patch
to make commit type config work
2018-11-13 22:35:18 +01:00
Renovate Bot 00bac7d66d chore(deps): pin dependency tslint-config-prettier to 1.15.0 2018-11-11 19:43:49 +01:00
Felix Becker 207b078038 chore(renovate): fix semanticCommitType
https://github.com/renovatebot/renovate/issues/2796#issuecomment-437687873
2018-11-11 18:37:45 +01:00
Felix Becker 0c2985e776 style: use prettier 2018-11-11 18:32:27 +01:00
renovate[bot] edd8806ab7 fix(deps): update dependency felixfbecker/language-server to v5.4.5 (#390) 2018-11-11 14:11:48 +01:00
renovate[bot] 331f59a6a4 chore(deps): update dependency vscode-languageclient to v5.1.1 (#389) 2018-11-11 12:49:33 +01:00
Felix Becker 99749d96dd chore(renovate): set no schedule for language server updates 2018-11-11 05:32:36 +01:00
Felix Becker 36107c80a8 chore(renovate): group updates together 2018-11-11 05:29:28 +01:00
Renovate Bot c18c02ac42 fix(deps): update dependency semver to v5.6.0 2018-11-11 05:25:55 +01:00
Renovate Bot 4fd20ab036 chore(deps): update dependency typescript to v3.1.6 2018-11-11 05:25:29 +01:00
Renovate Bot 4e4185634d chore(deps): update dependency semantic-release to v15.10.8 2018-11-11 05:25:19 +01:00
Felix Becker 9765c68f5d fix: improve handling of php executable 2018-11-11 05:16:58 +01:00
Felix Becker ba3c42d35a fix: log stderr output to output channel
e.g. stack traces from crashes
2018-11-11 05:16:09 +01:00
Felix Becker aeab9204a0 chore(renovate): disable rollback PRs 2018-11-11 04:24:51 +01:00
Felix Becker 118dd76487 chore: fix package.json 2018-11-11 04:24:28 +01:00
Felix Becker a687c4a454 chore(deps): update husky to 1.1.3 2018-11-11 04:22:06 +01:00
Renovate Bot e40b07e227 chore(deps): update commitlint monorepo 2018-11-11 04:18:36 +01:00
Felix Becker 9e7351dea5 perf: update language server to 5.4.3 2018-11-11 04:17:37 +01:00
Dependencies.io Bot a81b48e7fa fix: Update felixfbecker/advanced-json-rpc from v3.0.1 to v3.0.3 2018-11-11 04:06:15 +01:00
Dependencies.io Bot 09149c5317 fix: Update microsoft/tolerant-php-parser from v0.0.13 to v0.0.15 2018-11-11 04:05:58 +01:00
Felix Becker 0f9fecdf98 fix: update dependencies 2018-09-02 13:45:58 +02:00
renovate[bot] 01b0b6fb89 chore(deps): update dependency vscode-languageclient to v5 (#357) 2018-09-02 13:31:04 +02:00
Renovate Bot fe4c682182 chore(deps): update commitlint monorepo to v7 2018-09-02 13:27:08 +02:00
Renovate Bot 6773c16ecc chore(deps): update dependency typescript to v3 2018-09-02 13:26:40 +02:00
Renovate Bot 23ca5f252f chore(deps): update dependency @types/mz to v0.0.32 2018-09-02 03:48:32 +00:00
Renovate Bot 16a85121f6 chore(deps): pin dependencies 2018-09-02 02:26:29 +02:00
Renovate Bot aa8a9e0dae chore(deps): update dependency @types/mocha to v5.2.5 2018-09-02 00:03:14 +00:00
renovate[bot] aa9645af54 chore: configure Renovate (#350) 2018-09-01 23:50:41 +02:00
Felix Becker 83846ffa0b fix: update dependencies 2018-08-21 20:15:44 +02:00
Felix Becker 861de7e8b9
docs(badges): remove Gemnasium badge 2018-07-11 00:37:33 -07:00
Dependencies.io Bot 4070a9438a fix: Update microsoft/tolerant-php-parser from v0.0.11 to v0.0.12 2018-06-12 09:45:26 -07:00
Felix Becker f37f2b7365 chore: update semantic-release-vsce to fix bug 2018-05-30 15:17:58 -07:00
dependencies[bot] 4945fec380 fix: Update microsoft/tolerant-php-parser from v0.0.10 to v0.0.11 (#310) 2018-05-30 14:46:13 -07:00
Felix Becker f9e7e2f488 chore: use commitlint instead of validate-commit-msg 2018-05-30 14:32:17 -07:00
Felix Becker 16ef106ac8 chore: update semantic-release to v15 2018-05-30 14:26:16 -07:00
Felix Becker ff0573deb2 chore: change Languages -> Programming Languages category 2018-05-15 01:49:26 -07:00
dependencies[bot] 2a3af2d5ee chore: Update @types/mocha from 2.2.48 to 5.0.0 (#282) 2018-05-15 01:48:07 -07:00
dependencies[bot] dc7f2c3715 chore: Update sabre/event from 5.0.2 to 5.0.3 (#276) 2018-05-15 01:46:57 -07:00
Matt Welke 21d79b5fd6 docs(features): change readme for 'format code' (new extension PHP CS Fixer) (#252) 2018-04-26 17:02:30 -07:00
Zachary Hamm ff761ef616 docs(readme): npm command in README.md should be 'run build' (#290) 2018-04-26 17:00:37 -07:00
dependencies[bot] e039550c92 chore: Update composer/xdebug-handler in / from 1.0.0 to 1.1.0 (#291) 2018-04-11 09:58:54 -07:00
Jonathan Carter 42eca3f8d7 fix: restricting language services to file schemes 2018-04-04 17:21:31 -07:00
Dependencies.io Bot 2765625a9f fix: Update microsoft/tolerant-php-parser from v0.0.9 to v0.0.10 2018-03-19 13:46:18 -07:00
Dependencies.io Bot c0ceebbb40 feat: Update felixfbecker/language-server from v5.3.7 to v5.4.0 2018-03-19 13:46:05 -07:00
Dependencies.io Bot 2535d716c8 fix: Update felixfbecker/language-server from v5.3.6 to v5.3.7 2018-03-01 16:55:45 -08:00
Dependencies.io Bot e750b0e590 fix: Update microsoft/tolerant-php-parser from v0.0.8 to v0.0.9 2018-02-14 11:30:08 -08:00
Dependencies.io Bot 45a291bdea fix: Update felixfbecker/language-server from v5.3.5 to v5.3.6 2018-02-07 12:36:41 -08:00
Felix Becker 3d9b1e83dd chore: downgrade semantic-release/git to v2
v3 is only compatible with semantic-release v13
2018-02-03 14:02:44 -08:00
Felix Becker 0d1443e127 ci(release): update to semantic-release 12 2018-02-03 09:48:50 -08:00
Dependencies.io Bot c74f2b6973 fix: Update felixfbecker/language-server from v5.3.4 to v5.3.5 2018-02-03 08:58:04 -08:00
dependencies[bot] a83faf1658 fix: Update felixfbecker/language-server from v5.3.3 to v5.3.4 (#251) 2018-01-09 09:51:00 -08:00
Felix Becker 79edb58199 fix(memoryLimit): use default memory limit of 4G - 1
closes #240
2018-01-02 10:29:34 -08:00
dependencies[bot] 339b8a3b89 fix: Update felixfbecker/language-server from v5.3.2 to v5.3.3 (#238) 2017-12-30 23:10:56 -08:00
Eric Romano a3e2822904 fix(config): set a default memory limit (#235) 2017-12-30 23:10:46 -08:00
dependencies[bot] 9558c8aaca fix: Update felixfbecker/language-server from v5.3.1 to v5.3.2 (#231) 2017-12-24 23:52:39 -08:00
dependencies[bot] dbfcdbc490 fix: Update felixfbecker/language-server from v5.3.0 to v5.3.1 (#230) 2017-12-24 02:45:03 -08:00
Felix Becker 8a58743c58 ci(branches): only build on master 2017-12-23 14:30:28 -08:00
Felix Becker 7aebb777ce chore: remove bundled semantic-release/github dep 2017-12-23 14:27:40 -08:00
dependencies[bot] 4c93a9ff0a feat: Update felixfbecker/language-server from v5.2.0 to v5.3.0 (#229) 2017-12-23 14:26:50 -08:00
Felix Becker 294e4df2d2 docs: add signature help demo gif 2017-12-09 21:58:49 -08:00
Dependencies.io Bot ef25b8cf36 feat: Update felixfbecker/language-server from v5.1.2 to v5.2.0 2017-12-09 21:58:49 -08:00
Felix Becker 35999fa16e build(tsconfig): exclude vendor 2017-12-09 21:09:23 -08:00
dependencies[bot] fa97865c8f fix: Update felixfbecker/language-server from v5.1.1 to v5.1.2 (#219) 2017-12-03 22:04:02 -08:00
dependencies[bot] 6be3148dd2 fix: Update felixfbecker/language-server from v5.1.0 to v5.1.1 (#218) 2017-12-03 14:48:03 -08:00
dependencies[bot] 38dde53947 fix: Update phpdocumentor/reflection-docblock from 4.1.1 to 4.2.0 (#206) 2017-11-28 14:48:21 -08:00
Felix Becker c50bbb1633 ci(travis): always install node 2017-11-28 09:35:02 -08:00
Felix Becker 6a56007586 ci(travis): fix test stage 2017-11-28 09:29:44 -08:00
Felix Becker 766370ddf6 chore: update to semantic-release v11 2017-11-25 14:57:01 -08:00
Felix Becker bdd4a8b869 ci(release): update semantic-release config 2017-11-22 22:04:44 -08:00
Felix Becker d70664fd84 ci(release): use last-release-git-tag as a workaround 2017-11-22 17:09:59 -08:00
Felix Becker 0763f37e8a ci(release): use semantic-release v10 2017-11-22 16:46:18 -08:00
Felix Becker ad483b305a docs(readme): remove mentions of formatting 2017-11-20 09:07:06 -08:00
Felix Becker 9e9bd18083 docs(badges): workaround encoding issue 2017-11-18 18:42:57 -08:00
Felix Becker ddddf2a178 fix: always use a TCP socket instead of STDIO
STDIO locks up for large responses
2017-11-18 18:39:15 -08:00
Felix Becker a62996fe33 feat: update dependencies
Updates the language server to 5.2.0
 - Don't suggest <?php on > character in HTML
 - Properly resolve self, static, parent
 - Warn if $this is used in invalid contexts

BREAKING CHANGE:
This update removes the PHP CodeSniffer formatting support.
To get the same formatter back in VS Code, please install https://marketplace.visualstudio.com/items?itemName=ikappas.phpcs
See https://github.com/felixfbecker/php-language-server/issues/501 for details.
2017-11-18 18:18:53 -08:00
Felix Becker 77c0c8fe43 docs(badges): update badges 2017-11-04 17:08:31 -07:00
Felix Becker 4f25cc8f13 docs(readme): add note that language server is bundled 2017-11-03 14:17:10 -07:00
Felix Becker e01b4e9cae docs(badges): change badges 2017-11-03 14:15:48 -07:00
Felix Becker fbb1ee6632 chore: optimize package 2017-11-01 23:45:55 -07:00
Felix Becker 3cb3331cc9 ci(dependencies.io): use latest php-composer actor 2017-10-29 15:33:06 -07:00
Felix Becker bf45cc01fc ci(dependencies.io): set commit_message_prefix for npm dependencies 2017-10-29 15:32:39 -07:00
Felix Becker 7de29395df docs: add changelog that points to GitHub releases
closes #101
2017-10-29 15:25:03 -07:00
dependencies[bot] cbe345f05c fix: update felixfbecker/language-server from v4.6.3 to v4.6.4 (#166) 2017-10-29 13:44:14 -07:00
Felix Becker d336aee927 ci: determine last release from git tags 2017-10-28 14:55:17 -07:00
Felix Becker 9ad8a72ffb fix: update dependencies 2017-10-28 14:50:30 -07:00
Felix Becker 9ddacd94f0 ci: set BUILD_LEADER_ID for semantic-release 2017-10-28 14:50:30 -07:00
Felix Becker d293ba3323 ci(dependencies.io): receive PRs for indirect dependencies too (#165) 2017-10-23 14:10:47 -07:00
Felix Becker e3c59becae ci(dependencies.io): put commit_message_prefix under right key 2017-10-20 15:58:18 -07:00
Felix Becker 52e56a2973 chore(release): add semantic-release 2017-10-20 15:47:46 -07:00
Felix Becker a24cef4574 Pin language server version 2017-10-20 13:12:47 -07:00
Felix Becker 380b4776b0 Correct dependency name 2017-10-19 15:42:52 -07:00
dependencies[bot] f0a51c95ce Add dependencies.yml for dependencies.io (#162) 2017-10-19 15:34:33 -07:00
Felix Becker 1d402ed51b Update @types/mz 2017-10-19 15:04:21 -07:00
Felix Becker 61c2ae75d0 1.5.2 2017-10-19 14:53:20 -07:00
Felix Becker 48585c357b Update language server 2017-10-19 14:52:58 -07:00
Felix Becker 7bef21228c Update vscode version 2017-10-19 14:51:16 -07:00
Felix Becker 243ce61f21 Disable package-lock.json 2017-10-19 14:49:28 -07:00
Felix Becker 211890f799 Update tasks 2017-08-21 22:57:12 -07:00
Felix Becker 0779924ec5 Remove typings dep 2017-08-21 22:55:35 -07:00
Felix Becker e3eec7185c Use npm @types 2017-08-21 22:53:20 -07:00
Felix Becker 1e102053aa Add node_modules prefix 2017-08-21 22:50:10 -07:00
Felix Becker 1779706015 1.5.1 2017-08-21 22:45:19 -07:00
Felix Becker 9b5f935c6d Correct license in package.json 2017-07-29 14:28:00 +02:00
Felix Becker c14a675afa Create LICENSE 2017-07-29 14:27:14 +02:00
Felix Becker 065129c559 1.5.0 2017-07-28 14:08:53 +02:00
Felix Becker 3055abbf9d Update language server to 4.6.0 2017-07-28 14:01:42 +02:00
Felix Becker a95ee642ac 1.4.3 2017-06-29 15:59:07 +02:00
Felix Becker 8583ac3d08 Extend .gitignore 2017-06-29 15:58:27 +02:00
Felix Becker 847ce429fb Use PNG logo 2017-06-29 15:57:29 +02:00
Felix Becker 74e87efb78 1.4.2 2017-06-27 18:20:12 +02:00
Felix Becker c6d08bd43e Update to 4.5.3 2017-06-27 18:19:46 +02:00
Felix Becker efae503489 1.4.1 2017-06-17 11:26:43 +02:00
Felix Becker 0ef1465af5 Update to 4.5.2 2017-06-17 11:14:40 +02:00
Felix Becker 088c9facac 1.4.0 2017-06-16 20:42:08 +02:00
Felix Becker 50c8dacdc5 Update to 4.5.1 2017-06-16 20:42:01 +02:00
Felix Becker b51db8edcc Skip cleanup 2017-06-15 20:58:25 +02:00
Felix Becker 9a875f7ffc Only deploy on tags 2017-06-14 12:34:09 +02:00
Felix Becker b09318f3b1 Publish vsix to GitHub releases 2017-06-14 12:22:15 +02:00
Felix Becker b6e220f280 Bump vscode version 2017-06-14 12:14:19 +02:00
Jens Hausdorf 47552f85f9 Also run when there is a php file in a subdir (#124) 2017-06-06 20:07:07 +02:00
Felix Becker 5a6485a23e 1.3.0 2017-05-29 17:35:33 +02:00
Jens Hausdorf db9565ea82 Support workspaceContains activationEvent (#123) 2017-05-29 17:34:48 +02:00
Felix Becker 8391de1c19 Add issue template 2017-05-24 09:36:42 +02:00
Felix Becker a65e1850bf 1.2.2 2017-05-22 09:27:05 +02:00
lokken 79b49b5506 Added php.executablePath to package.json contributes.configuration (#105) 2017-05-05 09:29:42 +02:00
Felix Becker 5ffc23549c 1.2.1 2017-04-24 11:13:56 +02:00
Felix Becker 10a188f201 Update LS 2017-04-24 11:13:50 +02:00
Felix Becker 589831974f 1.2.0 2017-04-21 17:39:40 +02:00
Felix Becker 87246aab87 Update LS 2017-04-21 17:39:14 +02:00
Jens Hausdorf e84459db39 Support custom memory limit (#102) 2017-04-10 22:36:10 +02:00
greenkeeper[bot] 7ce298c7c8 chore(package): update tslint to version 5.0.0 (#100)
https://greenkeeper.io/
2017-04-10 22:04:20 +02:00
Sara Itani b82e95c39f Enable fileEvents in client options (#83)
This is necessary to notify the server about changes to PHP files in the workspace and receive workspace/file
2017-04-10 14:09:47 +02:00
Felix Becker f635ba8c4a 1.1.5 2017-04-09 18:27:17 +02:00
Felix Becker 56ff89e6e8 Update LS 2017-04-09 18:27:12 +02:00
Felix Becker e1f593d045 1.1.4 2017-04-02 00:36:17 +02:00
Felix Becker b21ce974fe 1.1.3 2017-02-26 20:55:03 +01:00
Felix Becker c57be6c34d Update LS 2017-02-26 20:54:08 +01:00
Felix Becker 16267428d2 1.1.2 2017-02-15 11:57:38 +01:00
Felix Becker 90b6eb6cde Update LS to 4.3.2 2017-02-15 11:51:23 +01:00
Felix Becker a299a52f4c Update typings 2017-02-15 11:51:15 +01:00
Felix Becker aaa1ee6b0a 1.1.1 2017-02-04 13:03:42 +01:00
Felix Becker a3daae60bf Update LS to 4.3.1 2017-02-04 12:56:45 +01:00
Felix Becker 633d0a1ec9 1.1.0 2017-02-04 01:46:58 +01:00
Felix Becker cfd95bffca Update LS to 4.3.0 2017-02-04 01:44:32 +01:00
Felix Becker 7f4022a485 Remove preview tag 2017-02-03 13:32:09 +01:00
Felix Becker 9e1f1f414b 1.0.0 2017-02-03 13:31:27 +01:00
Felix Becker cc06249800 Add Completion (#62) 2017-02-03 13:31:01 +01:00
Felix Becker e79ec8a646 Correct composer cache dir 2017-02-03 13:23:13 +01:00
Felix Becker 0a6785f8fb Speed up Travis 2017-02-03 13:23:13 +01:00
Felix Becker d01a2e1f69 Update vscode-languageclient (#59) 2017-02-03 13:17:34 +01:00
Felix Becker a9ae03a025 Remove PHPStorm stubs repository reference 2017-02-03 13:14:14 +01:00
Herbert Pimentel c289c527f9 fixes PHP version parse even when it has warnings (#46) 2017-01-12 11:52:39 -08:00
Felix Becker 0062a5c814 Update TSLint 2016-12-25 12:33:12 +01:00
Felix Becker 646cf7a14d Add typeRoots to tsconfig.json 2016-12-24 16:54:19 +01:00
Felix Becker a554d172db Update language server to v4 2016-12-24 16:54:19 +01:00
Felix Becker 4fb87abc0e 0.0.12 2016-11-18 15:09:49 +01:00
Felix Becker 4ad8d05912 Update deps 2016-11-18 15:09:31 +01:00
Greenkeeper 8515c5e1b0 chore(package): update typings to version 2.0.0 (#30)
https://greenkeeper.io/
2016-11-10 03:07:23 +01:00
Felix Becker e749998fb9 0.0.11 2016-10-27 15:23:26 +02:00
Felix Becker 7b7ccdc562 Update LS to 3.0.1 2016-10-27 15:22:55 +02:00
Felix Becker 7e28aced7d 0.0.10 2016-10-27 00:43:20 +02:00
Felix Becker 0bdb8d7d31 Update README with new features 2016-10-27 00:36:54 +02:00
Michal Niewrzal 835ad4c0e9 Update LS to 3.0 (#21) 2016-10-27 00:30:38 +02:00
Felix Becker ddf176c829 Add URI converter (#23) 2016-10-21 18:40:06 +02:00
Felix Becker cf4fa3ead0 Actually use executablePath setting 2016-10-12 10:57:12 +02:00
Felix Becker 181ad9b127 Update vscode dep 2016-10-12 10:45:01 +02:00
Felix Becker 03f559c761 Document executablePath setting 2016-10-12 10:27:51 +02:00
Felix Becker 5963e58ab1 Refactor 2016-10-12 10:26:08 +02:00
Felix Becker 1ba3596923 Update .travis.yml 2016-10-12 09:54:25 +02:00
DumboJetEngine 2aa5c94c4e Support php.executablePath setting (#18) 2016-10-12 09:52:31 +02:00
Felix Becker 4b3e1098f2 Update VSCode and TypeScript 2016-10-11 03:34:15 +02:00
Felix Becker 00d703b19a Add typings postinstall step 2016-10-11 03:27:43 +02:00
Felix Becker 1ac5a8fce3 Handle case where version regexp doesnt match 2016-10-05 10:39:53 +02:00
Felix Becker 8cb1a8ea33 0.0.9 2016-09-30 15:15:41 +02:00
Felix Becker 3563f6cc23 0.0.8 2016-09-30 12:39:08 +02:00
Felix Becker 17c04e72bd Add workspace symbol search demo gif 2016-09-30 12:32:59 +02:00
Felix Becker 081e03daf3 Upgrade language-server dep (#16)
* Communicate over TCP socket on Windows

* Update language-server dep
2016-09-30 12:07:46 +02:00
Felix Becker 2d5bea19b4 0.0.7 2016-09-19 13:53:46 +02:00
Felix Becker 3a9f50312b Allow PHP prereleases 2016-09-19 13:53:32 +02:00
36 changed files with 12244 additions and 259 deletions

17
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,17 @@
<!--
THERE IS A 99% CHANCE YOU ARE FILING THIS ISSUE IN THE WRONG REPOSITORY.
This is just the repository for the thin VS Code extension.
If this issue is *not* directly related to the *integration* into VS Code,
but a bug, feature request, performance issue, crash, etc. it needs to be filed
in the repository of the *language server*:
https://github.com/felixfbecker/php-language-server
Most likely there is already an open issue, please search for one first.
Thank you.
-->

5
.gitignore vendored
View File

@ -1,5 +1,4 @@
out/
node_modules/ node_modules/
out/
vendor/ vendor/
composer.lock .DS_Store
typings/

4
.prettierignore Normal file
View File

@ -0,0 +1,4 @@
package.json
package-lock.json
vendor/
out/

22
.prettierrc Normal file
View File

@ -0,0 +1,22 @@
{
"tabWidth": 4,
"printWidth": 120,
"proseWrap": "preserve",
"semi": false,
"trailingComma": "es5",
"singleQuote": true,
"overrides": [
{
"files": "{*.js?(on),*.y?(a)ml,.*.js?(on),.*.y?(a)ml,*.md,.prettierrc,.stylelintrc,.babelrc}",
"options": {
"tabWidth": 2
}
},
{
"files": "composer.{json,lock}",
"options": {
"tabWidth": 4
}
}
]
}

View File

@ -1,21 +1,42 @@
language: php language: php
php: php:
- '7.0' - '7.1'
cache:
directories:
- $HOME/.npm
- $HOME/.composer/cache
before_install: before_install:
- nvm install 5.10.0 - nvm install '12.4.0'
- nvm use 5.10.0 - nvm use '12.4.0'
install: install:
- npm install - npm ci
- typings install
- composer install
script: script:
- npm run lint - npm run lint
- npm run compile - npm run build
after_success: jobs:
# If the build was triggered by a tag, publish the new version include:
- 'if [[ $TRAVIS_TAG == v* ]]; then vsce publish -p $VSCE_TOKEN; fi' - stage: test
- stage: release
php: '7.1'
install:
- npm ci
- composer install --prefer-dist --no-interaction --optimize-autoloader
script:
- npm run build
- npm run semantic-release
stages:
- test
- name: release
if: branch = master AND type = push AND fork = false
branches:
only:
- master
- /^renovate\/.+/

9
.vscode/launch.json vendored
View File

@ -7,9 +7,7 @@
"type": "extensionHost", "type": "extensionHost",
"request": "launch", "request": "launch",
"runtimeExecutable": "${execPath}", "runtimeExecutable": "${execPath}",
"args": [ "args": ["--extensionDevelopmentPath=${workspaceRoot}"],
"--extensionDevelopmentPath=${workspaceRoot}"
],
"stopOnEntry": false, "stopOnEntry": false,
"sourceMaps": true, "sourceMaps": true,
"outDir": "${workspaceRoot}/out" "outDir": "${workspaceRoot}/out"
@ -19,10 +17,7 @@
"type": "extensionHost", "type": "extensionHost",
"request": "launch", "request": "launch",
"runtimeExecutable": "${execPath}", "runtimeExecutable": "${execPath}",
"args": [ "args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test"],
"--extensionDevelopmentPath=${workspaceRoot}",
"--extensionTestsPath=${workspaceRoot}/out/test"
],
"stopOnEntry": false, "stopOnEntry": false,
"sourceMaps": true, "sourceMaps": true,
"outDir": "${workspaceRoot}/out/test" "outDir": "${workspaceRoot}/out/test"

38
.vscode/tasks.json vendored
View File

@ -1,37 +1,17 @@
// Available variables which can be used inside of strings.
// ${workspaceRoot}: the root folder of the team
// ${file}: the current opened file
// ${fileBasename}: the current opened file's basename
// ${fileDirname}: the current opened file's dirname
// ${fileExtname}: the current opened file's extension
// ${cwd}: the current working directory of the spawned process
// A task runner that calls a custom npm script that compiles the extension.
{ {
"version": "0.1.0", // See https://go.microsoft.com/fwlink/?LinkId=733558
// we want to run npm // for the documentation about the tasks.json format
"command": "npm", "version": "2.0.0",
// the command is a shell script
"isShellCommand": true,
// show the output window only if unrecognized errors occur.
"showOutput": "silent",
// we run the custom script "compile" as defined in package.json
"args": [
"run",
"--loglevel",
"silent"
],
"tasks": [ "tasks": [
{ {
"taskName": "compile", "type": "npm",
"isBuildCommand": true, "script": "build",
"problemMatcher": "$tsc" "problemMatcher": ["$tsc"]
}, },
{ {
"taskName": "watch", "type": "npm",
// The tsc compiler is started in watching mode "script": "watch",
"isWatching": true, "problemMatcher": ["$tsc-watch"]
// use the standard tsc in watch mode problem matcher to find compile problems in the output.
"problemMatcher": "$tsc-watch"
} }
] ]
} }

View File

@ -1,9 +1,23 @@
.github/**
.vscode/** .vscode/**
typings/** images/**
!images/logo.png
out/test/** out/test/**
test/**
src/** src/**
vendor/jetbrains/phpstorm-stubs/**
!vendor/jetbrains/phpstorm-stubs/PhpStormStubsMap.php
vendor/bin/**
**/.DS_Store
**/.editorconfig
**/.gitignore
**/.npmrc
**/.styleci.yml
**/.travis.yml
**/*.d.ts
**/*.map **/*.map
.gitignore **/appveyor.yml
tsconfig.json **/dependencies.yml
tslint.json **/jshintrc
**/phpunit.xml.dist
**/tsconfig.json
**/tslint.json

1
CHANGELOG.md Normal file
View File

@ -0,0 +1 @@
# See [GitHub releases](https://github.com/felixfbecker/vscode-php-intellisense/releases)

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017-2018 Felix Becker
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,48 +1,77 @@
# PHP IntelliSense # PHP IntelliSense
> **⚠ Work In Progress** [![vs marketplace](https://img.shields.io/vscode-marketplace/v/felixfbecker.php-intellisense.svg?label=vs%20marketplace)](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense) [![downloads](https://img.shields.io/vscode-marketplace/d/felixfbecker.php-intellisense.svg)](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense) [![rating](https://img.shields.io/vscode-marketplace/r/felixfbecker.php-intellisense.svg)](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense) [![build](https://travis-ci.org/felixfbecker/vscode-php-intellisense.svg?branch=master)](https://travis-ci.org/felixfbecker/vscode-php-intellisense) [![php: >=7.0.0](https://img.shields.io/badge/php->=7.0-8892BF.svg)](https://php.net/) [![chat: on gitter](https://badges.gitter.im/felixfbecker/vscode-php-intellisense.svg)](https://gitter.im/felixfbecker/vscode-php-intellisense?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
[![Latest Release](https://vsmarketplacebadge.apphb.com/version-short/felixfbecker.php-intellisense.svg)](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense) [![Installs](https://vsmarketplacebadge.apphb.com/installs/felixfbecker.php-intellisense.svg)](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense) [![Rating](https://vsmarketplacebadge.apphb.com/rating-short/felixfbecker.php-intellisense.svg)](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense) [![Build Status](https://travis-ci.org/felixfbecker/vscode-php-intellisense.svg?branch=master)](https://travis-ci.org/felixfbecker/vscode-php-intellisense) [![Dependency Status](https://gemnasium.com/felixfbecker/vscode-php-intellisense.svg)](https://gemnasium.com/felixfbecker/vscode-php-intellisense) [![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.0-8892BF.svg)](https://php.net/) [![Gitter](https://badges.gitter.im/felixfbecker/vscode-php-intellisense.svg)](https://gitter.im/felixfbecker/vscode-php-intellisense?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Advanced PHP IntelliSense for Visual Studio Code. Advanced PHP IntelliSense for Visual Studio Code.
In opposite to the included PHP IntelliSense and other PHP extensions, this uses an AST to parse the source code
instead of relying on naive regular expression parsing.
**Note: 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. You do NOT need to install it manually though, it is bundled in this extension.**
**Note: 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.** ## Installation
You need at least PHP 7 installed and in your PATH for the extension to work. You need at least PHP 7 installed for the extension to work. You can either add it to your PATH or set the `php.executablePath` setting.
I recommend to disable VS Code's built-in PHP IntelliSense by setting `php.suggest.basic` to `false` to avoid duplicate suggestions.
## Features ## Features
### Completion
![Completion search demo](images/completion.gif)
### Signature Help
![Signature help demo](images/signatureHelp.gif)
### Workspace symbol search
![Workspace symbol search demo](images/workspaceSymbol.gif)
### Find all References
![Find References demo](images/references.png)
### Go to Definition
![Go To Definition demo](images/definition.gif)
### Hover
![Hover class demo](images/hoverClass.png)
![Hover parameter demo](images/hoverParam.png)
### Find all symbols ### Find all symbols
![Find all symbols demo](images/documentSymbol.gif) ![Find all symbols demo](images/documentSymbol.gif)
### Column-accurate error reporting ### Column-accurate error reporting
![Error reporting demo](images/publishDiagnostics.png) ![Error reporting demo](images/publishDiagnostics.png)
### Format code ### Code style linting
![Format code demo](images/formatDocument.gif)
Please use a dedicated extension like [PHP CodeSniffer](https://marketplace.visualstudio.com/items?itemName=ikappas.phpcs).
### Format code
Please use a dedicated extension like [PHP CS Fixer](https://marketplace.visualstudio.com/items?itemName=junstyle.php-cs-fixer).
## Todo ## Todo
- Autocompletion
- Rename
- Goto definition
- Hover
- Signature help
- Follow composer autoloading
- Rename
- Signature help
## Contributing ## Contributing
Clone whole repository and in root directory execute: Clone whole repository and in root directory execute:
```bash ```bash
composer install composer install
npm install npm install
npm run compile npm run build
code . code .
``` ```
The last command will open the folder in VS Code. Hit `F5` to launch an Extension Development Host with the extension. 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. 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.

View File

@ -1,7 +1,17 @@
{ {
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true, "prefer-stable": true,
"config": {
"platform": {
"php": "7.1.0"
}
},
"require": { "require": {
"felixfbecker/language-server": "^2.0" "felixfbecker/language-server": "5.4.6"
},
"scripts": {
"parse-stubs": "LanguageServer\\ComposerScripts::parseStubs",
"post-update-cmd": "@parse-stubs",
"post-install-cmd": "@parse-stubs"
} }
} }

864
composer.lock generated Normal file
View File

@ -0,0 +1,864 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "9c2828a729b23a2d11872a4acf98a8e5",
"packages": [
{
"name": "composer/xdebug-handler",
"version": "1.3.3",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
"reference": "46867cbf8ca9fb8d60c506895449eb799db1184f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f",
"reference": "46867cbf8ca9fb8d60c506895449eb799db1184f",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0",
"psr/log": "^1.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Composer\\XdebugHandler\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "John Stevenson",
"email": "john-stevenson@blueyonder.co.uk"
}
],
"description": "Restarts a process without xdebug.",
"keywords": [
"Xdebug",
"performance"
],
"time": "2019-05-27T17:52:04+00:00"
},
{
"name": "felixfbecker/advanced-json-rpc",
"version": "v3.0.4",
"source": {
"type": "git",
"url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
"reference": "23366dd0cab0a0f3fd3016bf3c0b36dec74348e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/23366dd0cab0a0f3fd3016bf3c0b36dec74348e7",
"reference": "23366dd0cab0a0f3fd3016bf3c0b36dec74348e7",
"shasum": ""
},
"require": {
"netresearch/jsonmapper": "^1.0",
"php": ">=7.0",
"phpdocumentor/reflection-docblock": "^4.0.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0.0"
},
"type": "library",
"autoload": {
"psr-4": {
"AdvancedJsonRpc\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"ISC"
],
"authors": [
{
"name": "Felix Becker",
"email": "felix.b@outlook.com"
}
],
"description": "A more advanced JSONRPC implementation",
"time": "2019-09-12T22:41:08+00:00"
},
{
"name": "felixfbecker/language-server",
"version": "v5.4.6",
"source": {
"type": "git",
"url": "https://github.com/felixfbecker/php-language-server.git",
"reference": "1da3328bc23ebd6418529035d357481c8c028640"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/felixfbecker/php-language-server/zipball/1da3328bc23ebd6418529035d357481c8c028640",
"reference": "1da3328bc23ebd6418529035d357481c8c028640",
"shasum": ""
},
"require": {
"composer/xdebug-handler": "^1.0",
"felixfbecker/advanced-json-rpc": "^3.0.0",
"felixfbecker/language-server-protocol": "^1.0.1",
"jetbrains/phpstorm-stubs": "dev-master",
"microsoft/tolerant-php-parser": "0.0.*",
"netresearch/jsonmapper": "^1.0",
"php": "^7.0",
"phpdocumentor/reflection-docblock": "^4.0.0",
"psr/log": "^1.0",
"sabre/event": "^5.0",
"sabre/uri": "^2.0",
"webmozart/glob": "^4.1",
"webmozart/path-util": "^2.3"
},
"require-dev": {
"phpunit/phpunit": "^6.3",
"squizlabs/php_codesniffer": "^3.1"
},
"bin": [
"bin/php-language-server.php"
],
"type": "library",
"autoload": {
"psr-4": {
"LanguageServer\\": "src/"
},
"files": [
"src/utils.php",
"src/FqnUtilities.php",
"src/ParserHelpers.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"ISC"
],
"authors": [
{
"name": "Felix Becker",
"email": "felix.b@outlook.com"
}
],
"description": "PHP Implementation of the Visual Studio Code Language Server Protocol",
"keywords": [
"autocompletion",
"code",
"intellisense",
"language",
"microsoft",
"php",
"refactor",
"server",
"studio",
"visual"
],
"time": "2018-11-13T17:33:21+00:00"
},
{
"name": "felixfbecker/language-server-protocol",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/felixfbecker/php-language-server-protocol.git",
"reference": "378801f6139bb74ac215d81cca1272af61df9a9f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/378801f6139bb74ac215d81cca1272af61df9a9f",
"reference": "378801f6139bb74ac215d81cca1272af61df9a9f",
"shasum": ""
},
"require": {
"php": "^7.0"
},
"require-dev": {
"phpstan/phpstan": "*",
"phpunit/phpunit": "^6.3",
"squizlabs/php_codesniffer": "^3.1"
},
"type": "library",
"autoload": {
"psr-4": {
"LanguageServerProtocol\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"ISC"
],
"authors": [
{
"name": "Felix Becker",
"email": "felix.b@outlook.com"
}
],
"description": "PHP classes for the Language Server Protocol",
"keywords": [
"language",
"microsoft",
"php",
"server"
],
"time": "2019-06-23T21:03:50+00:00"
},
{
"name": "jetbrains/phpstorm-stubs",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/JetBrains/phpstorm-stubs.git",
"reference": "f3a010af18f763091fe2182b16c041333ba6a7fb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/f3a010af18f763091fe2182b16c041333ba6a7fb",
"reference": "f3a010af18f763091fe2182b16c041333ba6a7fb",
"shasum": ""
},
"require-dev": {
"nikic/php-parser": "^4",
"php": "^7.1",
"phpdocumentor/reflection-docblock": "^4.3",
"phpunit/phpunit": "^7"
},
"type": "library",
"autoload": {
"files": [
"PhpStormStubsMap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"description": "PHP runtime & extensions header files for PhpStorm",
"homepage": "https://www.jetbrains.com/phpstorm",
"keywords": [
"autocomplete",
"code",
"inference",
"inspection",
"jetbrains",
"phpstorm",
"stubs",
"type"
],
"time": "2019-09-18T14:39:59+00:00"
},
{
"name": "microsoft/tolerant-php-parser",
"version": "v0.0.18",
"source": {
"type": "git",
"url": "https://github.com/microsoft/tolerant-php-parser.git",
"reference": "e255aa978b45729094da2a1a6f9954044a244ff2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/e255aa978b45729094da2a1a6f9954044a244ff2",
"reference": "e255aa978b45729094da2a1a6f9954044a244ff2",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.4"
},
"type": "library",
"autoload": {
"psr-4": {
"Microsoft\\PhpParser\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Rob Lourens",
"email": "roblou@microsoft.com"
}
],
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
"time": "2019-07-01T02:21:00+00:00"
},
{
"name": "netresearch/jsonmapper",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/cweiske/jsonmapper.git",
"reference": "0d4d1b48d682a93b6bfedf60b88c7750e9cb0b06"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/0d4d1b48d682a93b6bfedf60b88c7750e9cb0b06",
"reference": "0d4d1b48d682a93b6bfedf60b88c7750e9cb0b06",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-pcre": "*",
"ext-reflection": "*",
"ext-spl": "*",
"php": ">=5.6"
},
"require-dev": {
"phpunit/phpunit": "~4.8.35 || ~5.7 || ~6.4",
"squizlabs/php_codesniffer": "~1.5"
},
"type": "library",
"autoload": {
"psr-0": {
"JsonMapper": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"OSL-3.0"
],
"authors": [
{
"name": "Christian Weiske",
"role": "Developer",
"email": "cweiske@cweiske.de",
"homepage": "http://github.com/cweiske/jsonmapper/"
}
],
"description": "Map nested JSON structures onto PHP classes",
"time": "2019-08-15T19:41:25+00:00"
},
{
"name": "phpdocumentor/reflection-common",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"require-dev": {
"phpunit/phpunit": "~6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jaap van Otterdijk",
"email": "opensource@ijaap.nl"
}
],
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
"homepage": "http://www.phpdoc.org",
"keywords": [
"FQSEN",
"phpDocumentor",
"phpdoc",
"reflection",
"static analysis"
],
"time": "2018-08-07T13:53:10+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "4.3.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
"reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
"shasum": ""
},
"require": {
"php": "^7.0",
"phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
"phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
"webmozart/assert": "^1.0"
},
"require-dev": {
"doctrine/instantiator": "^1.0.5",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"time": "2019-09-12T14:27:41+00:00"
},
{
"name": "phpdocumentor/type-resolver",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
"shasum": ""
},
"require": {
"php": "^7.1",
"phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
"ext-tokenizer": "^7.1",
"mockery/mockery": "~1",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
}
],
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"time": "2019-08-22T18:11:29+00:00"
},
{
"name": "psr/log",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2018-11-20T15:27:04+00:00"
},
{
"name": "sabre/event",
"version": "5.0.3",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/event.git",
"reference": "f5cf802d240df1257866d8813282b98aee3bc548"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabre-io/event/zipball/f5cf802d240df1257866d8813282b98aee3bc548",
"reference": "f5cf802d240df1257866d8813282b98aee3bc548",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": ">=6",
"sabre/cs": "~1.0.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Sabre\\Event\\": "lib/"
},
"files": [
"lib/coroutine.php",
"lib/Loop/functions.php",
"lib/Promise/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Evert Pot",
"role": "Developer",
"email": "me@evertpot.com",
"homepage": "http://evertpot.com/"
}
],
"description": "sabre/event is a library for lightweight event-based programming",
"homepage": "http://sabre.io/event/",
"keywords": [
"EventEmitter",
"async",
"coroutine",
"eventloop",
"events",
"hooks",
"plugin",
"promise",
"reactor",
"signal"
],
"time": "2018-03-05T13:55:47+00:00"
},
{
"name": "sabre/uri",
"version": "2.1.3",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/uri.git",
"reference": "18f454324f371cbcabdad3d0d3755b4b0182095d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabre-io/uri/zipball/18f454324f371cbcabdad3d0d3755b4b0182095d",
"reference": "18f454324f371cbcabdad3d0d3755b4b0182095d",
"shasum": ""
},
"require": {
"php": ">=7"
},
"require-dev": {
"phpunit/phpunit": "^6"
},
"type": "library",
"autoload": {
"files": [
"lib/functions.php"
],
"psr-4": {
"Sabre\\Uri\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Evert Pot",
"email": "me@evertpot.com",
"homepage": "http://evertpot.com/",
"role": "Developer"
}
],
"description": "Functions for making sense out of URIs.",
"homepage": "http://sabre.io/uri/",
"keywords": [
"rfc3986",
"uri",
"url"
],
"time": "2019-09-09T23:00:25+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "550ebaac289296ce228a706d0867afc34687e3f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
"reference": "550ebaac289296ce228a706d0867afc34687e3f4",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "webmozart/assert",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "88e6d84706d09a236046d686bbea96f07b3a34f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4",
"reference": "88e6d84706d09a236046d686bbea96f07b3a34f4",
"shasum": ""
},
"require": {
"php": "^5.3.3 || ^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
},
"autoload": {
"psr-4": {
"Webmozart\\Assert\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bernhard Schussek",
"email": "bschussek@gmail.com"
}
],
"description": "Assertions to validate method input/output with nice error messages.",
"keywords": [
"assert",
"check",
"validate"
],
"time": "2019-08-24T08:43:50+00:00"
},
{
"name": "webmozart/glob",
"version": "4.1.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/glob.git",
"reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/glob/zipball/3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe",
"reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe",
"shasum": ""
},
"require": {
"php": "^5.3.3|^7.0",
"webmozart/path-util": "^2.2"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
"sebastian/version": "^1.0.1",
"symfony/filesystem": "^2.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.1-dev"
}
},
"autoload": {
"psr-4": {
"Webmozart\\Glob\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bernhard Schussek",
"email": "bschussek@gmail.com"
}
],
"description": "A PHP implementation of Ant's glob.",
"time": "2015-12-29T11:14:33+00:00"
},
{
"name": "webmozart/path-util",
"version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/path-util.git",
"reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
"reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"webmozart/assert": "~1.0"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
"sebastian/version": "^1.0.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.3-dev"
}
},
"autoload": {
"psr-4": {
"Webmozart\\PathUtil\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bernhard Schussek",
"email": "bschussek@gmail.com"
}
],
"description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
"time": "2015-12-17T08:42:14+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "dev",
"stability-flags": [],
"prefer-stable": true,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"platform-overrides": {
"php": "7.1.0"
}
}

33
dependencies.yml Normal file
View File

@ -0,0 +1,33 @@
collectors:
- type: js-npm
path: /
actors:
# pull requests for new major versions
- type: js-npm
versions: 'Y.0.0'
settings:
# these updates should generally not have an effect on users
commit_message_prefix: 'chore: '
# receive pull requests to update composer.lock for any update to the language server or dependencies of it
# after merging, depending on whether it was a patch or feature update,
# semantic-release will bundle a new patch or feature version of the extension
- type: php-composer
path: /
settings:
collect_transitive: true
actors:
- type: php-composer
versions: 'L.L.Y'
settings:
commit_message_prefix: 'fix: '
- type: php-composer
versions: 'L.Y.0'
settings:
commit_message_prefix: 'feat: '
- type: php-composer
versions: 'Y.0.0'
settings:
commit_message_prefix: 'chore: '

BIN
images/completion.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
images/definition.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

BIN
images/hoverClass.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
images/hoverParam.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_3" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="8.5 251.6 553 290.9" style="enable-background:new 8.5 251.6 553 290.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
.st1{fill:#6682BA;}
.st2{fill:#FFFFFF;}
.st3{fill:#00000E;}
</style>
<title>logo</title>
<radialGradient id="SVGID_1_" cx="148" cy="484" r="363.06" gradientTransform="matrix(1 0 0 -1 26.52 786.69)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#FFFFFF"/>
<stop offset="0.5" style="stop-color:#4D6998"/>
<stop offset="1" style="stop-color:#1D1D1B"/>
</radialGradient>
<ellipse class="st0" cx="285" cy="397" rx="276.5" ry="145.4"/>
<ellipse class="st1" cx="285" cy="397" rx="265.7" ry="134.6"/>
<path class="st2" d="M338.8,440.5l13.2-67.8c3-15.3,0.5-26.7-7.4-33.9c-7.6-7-20.5-10.4-39.5-10.4h-22.8l6.5-33.6
c0.5-2.3-1.1-4.6-3.4-5.1c-0.3-0.1-0.5-0.1-0.8-0.1h-31.5c-2.1,0-3.8,1.5-4.2,3.5l-14,72c-1.1-7.7-4.4-14.9-9.4-20.8
c-9.2-10.6-23.9-15.9-43.4-15.9h-61c-2.1,0-3.8,1.5-4.2,3.5L88.4,477.6c-0.5,2.3,1.1,4.6,3.4,5.1c0.3,0.1,0.5,0.1,0.8,0.1h31.8
c2.1,0,3.8-1.5,4.2-3.5l6.8-35.3h23.6c12.4,0,22.8-1.3,31-4c8.5-2.8,16.2-7.5,22.7-13.6c5.3-4.8,9.8-10.5,13.4-16.7l-5.7,29.1
c-0.5,2.3,1.1,4.6,3.4,5.1c0.3,0.1,0.5,0.1,0.8,0.1h31.5c2.1,0,3.8-1.5,4.2-3.5l15.5-80h21.6c9.2,0,11.9,1.8,12.6,2.6
s2,3.3,0.5,11.3l-12.5,64.5c-0.5,2.3,1.1,4.6,3.4,5.1c0.3,0.1,0.5,0.1,0.8,0.1h32C336.7,444,338.4,442.5,338.8,440.5z M192.8,384.5
c-2,10.2-5.7,17.4-11.1,21.6s-14.2,6.3-26,6.3h-14.1l10.2-52.4H170c13.4,0,18.8,2.9,20.9,5.3C193.9,368.6,194.6,375.2,192.8,384.5
L192.8,384.5z"/>
<path class="st2" d="M473.5,344.3c-9.2-10.6-23.9-15.9-43.4-15.9H369c-2.1,0-3.8,1.5-4.2,3.5l-28.3,145.8c-0.5,2.3,1.1,4.6,3.4,5.1
c0.3,0.1,0.5,0.1,0.8,0.1h31.8c2.1,0,3.8-1.5,4.2-3.5l6.9-35.3h23.6c12.4,0,22.8-1.3,31-4c8.5-2.8,16.2-7.5,22.7-13.6
c11.1-10,18.6-23.4,21.3-38.1C485.7,369.8,482.8,355,473.5,344.3z M440.6,384.5c-2,10.2-5.7,17.4-11.1,21.6s-14.2,6.3-26,6.3h-14.1
l10.2-52.4h18.2c13.4,0,18.8,2.9,20.9,5.3C441.8,368.6,442.4,375.2,440.6,384.5z"/>
<path class="st3" d="M170,355.7c12.1,0,20.1,2.2,24.1,6.7c4,4.5,5,12.1,2.9,22.9c-2.2,11.3-6.4,19.3-12.7,24.2s-15.8,7.2-28.6,7.2
h-19.3l11.9-61H170z M92.7,478.4h31.8l7.6-38.8h27.2c12,0,21.9-1.3,29.6-3.8c7.9-2.6,15.1-6.9,21.1-12.7
c10.4-9.4,17.4-21.9,19.9-35.7c3.3-17.3,0.8-30.7-7.6-40.4c-8.4-9.6-21.8-14.5-40.2-14.5H121L92.7,478.4z"/>
<path class="st3" d="M253.2,293.9h31.5l-7.5,38.8h28.1c17.7,0,29.8,3.1,36.5,9.2c6.7,6.2,8.7,16.1,6,29.9l-13.2,67.8h-32l12.5-64.5
c1.4-7.3,0.9-12.3-1.6-15c-2.5-2.7-7.7-4-15.8-4h-25.2l-16.2,83.5h-31.5L253.2,293.9z"/>
<path class="st3" d="M417.8,355.7c12.1,0,20.1,2.2,24.1,6.7c4,4.5,5,12.1,2.9,22.9c-2.2,11.3-6.4,19.3-12.7,24.2s-15.8,7.2-28.6,7.2
h-19.3l11.9-61H417.8z M340.5,478.4h31.8l7.5-38.8H407c12,0,21.9-1.3,29.6-3.8c7.9-2.6,15.1-6.9,21.1-12.7
c10.4-9.4,17.4-21.9,19.9-35.7c3.3-17.3,0.8-30.7-7.6-40.4c-8.4-9.6-21.8-14.5-40.2-14.5h-61.1L340.5,478.4z"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

BIN
images/references.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
images/signatureHelp.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

BIN
images/workspaceSymbol.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

10803
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,12 +4,12 @@
"description": "Advanced Autocompletion and Refactoring support for PHP", "description": "Advanced Autocompletion and Refactoring support for PHP",
"publisher": "felixfbecker", "publisher": "felixfbecker",
"author": "Felix Becker <felix.b@outlook.com>", "author": "Felix Becker <felix.b@outlook.com>",
"license": "ISC", "license": "MIT",
"private": true, "private": true,
"preview": true, "preview": false,
"version": "0.0.6", "version": "1.5.4",
"engines": { "engines": {
"vscode": "^1.4.0" "vscode": "^1.26.1"
}, },
"keywords": [ "keywords": [
"php", "php",
@ -19,9 +19,9 @@
"refactor" "refactor"
], ],
"categories": [ "categories": [
"Languages" "Programming Languages"
], ],
"icon": "images/logo.svg", "icon": "images/logo.png",
"galleryBanner": { "galleryBanner": {
"color": "#6682BA", "color": "#6682BA",
"theme": "dark" "theme": "dark"
@ -34,24 +34,89 @@
"url": "https://github.com/felixfbecker/php-language-server/issues" "url": "https://github.com/felixfbecker/php-language-server/issues"
}, },
"activationEvents": [ "activationEvents": [
"onLanguage:php" "onLanguage:php",
"workspaceContains:**/*.php"
], ],
"main": "./out/extension", "main": "./out/extension",
"husky": {
"hooks": {
"commit-msg": "commitlint -e $HUSKY_GIT_PARAMS"
}
},
"scripts": { "scripts": {
"compile": "node ./node_modules/vscode/bin/compile -p ./", "build": "tsc -p .",
"watch": "node ./node_modules/vscode/bin/compile -watch -p ./", "watch": "tsc -w -p .",
"postinstall": "node ./node_modules/vscode/bin/install", "postinstall": "node ./node_modules/vscode/bin/install",
"lint": "tslint -c tslint.json \"src/**/*.ts\"" "lint": "npm run prettier && npm run tslint",
"tslint": "tslint -p tsconfig.json -c tslint.json \"src/**/*.ts\"",
"prettier": "prettier '**/{*.{js?(on),ts,yml},.*.js?(on),.*.yml,.prettierrc,*.md}' --write --list-different",
"semantic-release": "semantic-release"
}, },
"devDependencies": { "devDependencies": {
"tslint": "^3.15.1", "@commitlint/cli": "7.2.1",
"typescript": "^1.8.10", "@commitlint/config-conventional": "7.1.2",
"typings": "^1.3.3", "@types/execa": "0.9.0",
"vsce": "^1.8.1", "@types/mocha": "5.2.7",
"vscode": "^0.11.17" "@types/mz": "0.0.32",
"@types/node": "8.10.29",
"@types/semver": "6.2.0",
"husky": "1.1.3",
"prettier": "1.15.3",
"semantic-release": "15.10.8",
"semantic-release-vsce": "2.1.2",
"tslint": "5.11.0",
"tslint-config-prettier": "1.15.0",
"typescript": "3.1.6",
"vscode": "1.1.21"
}, },
"dependencies": { "dependencies": {
"semver": "^5.3.0", "execa": "1.0.0",
"vscode-languageclient": "^2.4.2-next.24" "mz": "2.7.0",
"semver": "6.3.0",
"vscode-languageclient": "5.1.1"
},
"commitlint": {
"extends": [
"@commitlint/config-conventional"
]
},
"release": {
"verifyConditions": [
"semantic-release-vsce",
"@semantic-release/github"
],
"prepare": {
"path": "semantic-release-vsce",
"packageVsix": "php-intellisense.vsix"
},
"publish": [
"semantic-release-vsce",
{
"path": "@semantic-release/github",
"assets": "php-intellisense.vsix"
}
]
},
"contributes": {
"configuration": {
"type": "object",
"title": "PHP IntelliSense",
"properties": {
"php.memoryLimit": {
"type": "string",
"default": "4095M",
"description": "The memory limit of the php language server. [Number][K|M|G]. Use '-1' to allow unlimited use of the RAM (default is 4G).",
"pattern": "^\\d+[KMG]?$"
},
"php.executablePath": {
"type": [
"string",
"null"
],
"default": null,
"description": "The path to a PHP 7+ executable."
}
}
}
} }
} }

41
renovate.json Normal file
View File

@ -0,0 +1,41 @@
{
"extends": ["config:base", ":maintainLockFilesMonthly"],
"prCreation": "not-pending",
"rangeStrategy": "pin",
"semanticCommits": true,
"npm": {
"packageRules": [
{
"packagePatterns": ["*"],
"semanticCommitType": "chore",
"minor": {
"groupName": "all non-major dependencies",
"groupSlug": "all-minor-patch"
}
}
]
},
"separateMinorPatch": true,
"composer": {
"enabled": true,
"rollbackPrs": false
},
"packageRules": [
{
"packagePatterns": ["^@types/"],
"automerge": true
},
{
"packageNames": ["felixfbecker/language-server"],
"schedule": [],
"updateTypes": ["minor"],
"semanticCommitType": "feat"
},
{
"packageNames": ["felixfbecker/language-server"],
"schedule": [],
"updateTypes": ["patch"],
"semanticCommitType": "fix"
}
]
}

View File

@ -1,67 +1,137 @@
'use strict'; import execa from 'execa'
import { ChildProcess, spawn } from 'mz/child_process'
import * as net from 'net'
import * as path from 'path'
import * as semver from 'semver'
import * as url from 'url'
import * as vscode from 'vscode'
import { LanguageClient, LanguageClientOptions, RevealOutputChannelOn, StreamInfo } from 'vscode-languageclient'
const composerJson = require('../composer.json')
import * as path from 'path'; export async function activate(context: vscode.ExtensionContext): Promise<void> {
import { spawn, execFile, ChildProcess } from 'child_process'; const conf = vscode.workspace.getConfiguration('php')
import * as vscode from 'vscode'; const executablePath =
import { LanguageClient, LanguageClientOptions, StreamInfo } from 'vscode-languageclient'; conf.get<string>('executablePath') ||
import * as semver from 'semver'; conf.get<string>('validate.executablePath') ||
(process.platform === 'win32' ? 'php.exe' : 'php')
export function activate(context: vscode.ExtensionContext) { const memoryLimit = conf.get<string>('memoryLimit') || '4095M'
// Check if PHP is available and version is ^7.0.0 if (memoryLimit !== '-1' && !/^\d+[KMG]?$/.exec(memoryLimit)) {
execFile('php', ['--version'], (err: NodeJS.ErrnoException, stdout: Buffer, stderr: Buffer) => { const selected = await vscode.window.showErrorMessage(
'The memory limit you\'d provided is not numeric, nor "-1" nor valid php shorthand notation!',
if (err) { 'Open settings'
if (err.code === 'ENOENT') { )
vscode.window.showErrorMessage('PHP executable not found. You need PHP 7 installed and in your PATH'); if (selected === 'Open settings') {
} else { await vscode.commands.executeCommand('workbench.action.openGlobalSettings')
vscode.window.showErrorMessage('Error spawning PHP: ' + err.message);
console.error(err);
} }
return; return
}
// Check path (if PHP is available and version is ^7.0.0)
let stdout: string
try {
stdout = await execa.stdout(executablePath, ['--version'])
} catch (err) {
if (err.code === 'ENOENT') {
const selected = await vscode.window.showErrorMessage(
'PHP executable not found. Install PHP 7 and add it to your PATH or set the php.executablePath setting',
'Open settings'
)
if (selected === 'Open settings') {
await vscode.commands.executeCommand('workbench.action.openGlobalSettings')
}
} else {
vscode.window.showErrorMessage('Error spawning PHP: ' + err.message)
console.error(err)
}
return
} }
// Parse version and discard OS info like 7.0.8--0ubuntu0.16.04.2 // Parse version and discard OS info like 7.0.8--0ubuntu0.16.04.2
let version = stdout.toString().match(/^PHP ([^\s]+)/)[1].split('-')[0]; const match = stdout.match(/^PHP ([^\s]+)/m)
if (!match) {
vscode.window.showErrorMessage('Error parsing PHP version. Please check the output of php --version')
return
}
let version = match[1].split('-')[0]
// Convert PHP prerelease format like 7.0.0rc1 to 7.0.0-rc1 // Convert PHP prerelease format like 7.0.0rc1 to 7.0.0-rc1
if (!/^\d+.\d+.\d+$/.test(version)) { if (!/^\d+.\d+.\d+$/.test(version)) {
version = version.replace(/(\d+.\d+.\d+)/, '$1-'); version = version.replace(/(\d+.\d+.\d+)/, '$1-')
} }
if (!semver.satisfies(version, '^7.0.0')) { if (semver.lt(version, composerJson.config.platform.php)) {
vscode.window.showErrorMessage('The language server needs at least PHP 7 installed and in your PATH. Version found: ' + version); vscode.window.showErrorMessage('The language server needs at least PHP 7.1 installed. Version found: ' + version)
return; return
} }
const serverOptions = (): Promise<ChildProcess | StreamInfo> => { let client: LanguageClient
const serverOptions = () =>
new Promise<ChildProcess | StreamInfo>((resolve, reject) => {
// Use a TCP socket because of problems with blocking STDIO
const server = net.createServer(socket => {
// 'connection' listener
console.log('PHP process connected')
socket.on('end', () => {
console.log('PHP process disconnected')
})
server.close()
resolve({ reader: socket, writer: socket })
})
// Listen on random port
server.listen(0, '127.0.0.1', () => {
// The server is implemented in PHP // The server is implemented in PHP
const serverPath = context.asAbsolutePath(path.join('vendor', 'felixfbecker', 'language-server', 'bin', 'php-language-server.php')); const childProcess = spawn(executablePath, [
const childProcess = spawn('php', [serverPath]); context.asAbsolutePath(
path.join('vendor', 'felixfbecker', 'language-server', 'bin', 'php-language-server.php')
),
'--tcp=127.0.0.1:' + server.address().port,
'--memory-limit=' + memoryLimit,
])
childProcess.stderr.on('data', (chunk: Buffer) => { childProcess.stderr.on('data', (chunk: Buffer) => {
console.error(chunk + ''); const str = chunk.toString()
}); console.log('PHP Language Server:', str)
childProcess.stdout.on('data', (chunk: Buffer) => { client.outputChannel.appendLine(str)
console.log(chunk + ''); })
}); // childProcess.stdout.on('data', (chunk: Buffer) => {
return Promise.resolve(childProcess); // console.log('PHP Language Server:', chunk + '');
}; // });
childProcess.on('exit', (code, signal) => {
client.outputChannel.appendLine(
`Language server exited ` + (signal ? `from signal ${signal}` : `with exit code ${code}`)
)
if (code !== 0) {
client.outputChannel.show()
}
})
return childProcess
})
})
// Options to control the language client // Options to control the language client
let clientOptions: LanguageClientOptions = { const clientOptions: LanguageClientOptions = {
// Register the server for php documents // Register the server for php documents
documentSelector: ['php'] documentSelector: [{ scheme: 'file', language: 'php' }, { scheme: 'untitled', language: 'php' }],
// synchronize: { revealOutputChannelOn: RevealOutputChannelOn.Never,
// // Synchronize the setting section 'php' to the server uriConverters: {
// configurationSection: 'php', // VS Code by default %-encodes even the colon after the drive letter
// // Notify the server about file changes to composer.json files contain in the workspace // NodeJS handles it much better
// fileEvents: workspace.createFileSystemWatcher('**/composer.json') code2Protocol: uri => url.format(url.parse(uri.toString(true))),
// } protocol2Code: str => vscode.Uri.parse(str),
}; },
synchronize: {
// Synchronize the setting section 'php' to the server
configurationSection: 'php',
// Notify the server about changes to PHP files in the workspace
fileEvents: vscode.workspace.createFileSystemWatcher('**/*.php'),
},
}
// Create the language client and start the client. // Create the language client and start the client.
const disposable = new LanguageClient('PHP Language Client', serverOptions, clientOptions).start(); client = new LanguageClient('PHP Language Server', serverOptions, clientOptions)
const disposable = client.start()
// Push the disposable to the context's subscriptions so that the // Push the disposable to the context's subscriptions so that the
// client can be deactivated on extension deactivation // client can be deactivated on extension deactivation
context.subscriptions.push(disposable); context.subscriptions.push(disposable)
});
} }

View File

@ -4,7 +4,7 @@
// //
// The module 'assert' provides assertion methods from node // The module 'assert' provides assertion methods from node
import * as assert from 'assert'; import * as assert from 'assert'
// You can import and use all API from the 'vscode' module // You can import and use all API from the 'vscode' module
// as well as import your extension to test it // as well as import your extension to test it
@ -13,10 +13,9 @@ import * as assert from 'assert';
// Defines a Mocha test suite to group tests of similar kind together // Defines a Mocha test suite to group tests of similar kind together
suite('Extension Tests', () => { suite('Extension Tests', () => {
// Defines a Mocha unit test // Defines a Mocha unit test
test('Something 1', () => { test('Something 1', () => {
assert.equal(-1, [1, 2, 3].indexOf(5)); assert.equal(-1, [1, 2, 3].indexOf(5))
assert.equal(-1, [1, 2, 3].indexOf(0)); assert.equal(-1, [1, 2, 3].indexOf(0))
}); })
}); })

View File

@ -10,13 +10,13 @@
// to report the results back to the caller. When the tests are finished, return // to report the results back to the caller. When the tests are finished, return
// a possible error to the callback or null if none. // a possible error to the callback or null if none.
const testRunner = require('vscode/lib/testrunner'); const testRunner = require('vscode/lib/testrunner')
// You can directly control Mocha options by uncommenting the following lines // You can directly control Mocha options by uncommenting the following lines
// See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info // See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info
testRunner.configure({ testRunner.configure({
ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.) ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.)
useColors: true // colored output from test results useColors: true, // colored output from test results
}); })
module.exports = testRunner; module.exports = testRunner

View File

@ -1,15 +1,20 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "ES5", "target": "ES6",
"module": "commonjs", "module": "commonjs",
"moduleResolution": "node", "moduleResolution": "node",
"outDir": "out", "outDir": "out",
"noLib": true, "esModuleInterop": true,
"lib": ["es6"],
"noImplicitAny": true, "noImplicitAny": true,
"sourceMap": true, "sourceMap": true,
"rootDir": "src" "rootDir": "src",
"strictNullChecks": true,
"noImplicitThis": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"allowUnreachableCode": false,
"allowUnusedLabels": false
}, },
"exclude": [ "exclude": ["node_modules", "out", "vendor"]
"node_modules"
]
} }

View File

@ -1,47 +1,85 @@
{ {
"extends": ["tslint:recommended", "tslint-config-prettier"],
"rules": { "rules": {
"class-name": true, "adjacent-overload-signatures": true,
"comment-format": [true, "check-space"], "array-type": [true, "array"],
"indent": [true, "spaces"], "arrow-return-shorthand": [true, "multiline"],
"no-duplicate-variable": true, "await-promise": [true, "Thenable"],
"no-eval": true, "ban": [
"no-internal-module": true,
"no-trailing-whitespace": true,
"no-var-keyword": true,
"one-line": [true, "check-catch", "check-finally", "check-else", "check-open-brace", "check-whitespace"],
"quotemark": [true, "single"],
"semicolon": [true, "always"],
"triple-equals": [true, "allow-null-check"],
"typedef-whitespace": [
true, true,
{ {
"call-signature": "nospace", "name": ["*", "forEach"]
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}, },
["describe", "only"],
["it", "only"]
],
"callable-types": true,
"class-name": true,
"comment-format": [true, "check-space"],
"curly": true,
"deprecation": {
"severity": "warning"
},
"interface-name": [false],
"interface-over-type-literal": true,
"jsdoc-format": true,
"max-classes-per-file": false,
"member-access": [true, "check-accessor"],
"member-ordering": [false],
"no-angle-bracket-type-assertion": true,
"no-arg": true,
"no-bitwise": false,
"no-boolean-literal-compare": true,
"no-conditional-assignment": true,
"no-console": [false],
"no-construct": true,
"no-debugger": true,
"no-duplicate-super": true,
"no-duplicate-variable": true,
"no-empty": true,
"no-empty-interface": false,
"no-eval": true,
"no-floating-promises": [true],
"no-for-in-array": true,
"no-inferrable-types": [true],
"no-inferred-empty-object-type": true,
"no-internal-module": true,
"no-invalid-template-strings": true,
"no-magic-numbers": false,
"no-misused-new": true,
"no-namespace": [false, "allow-declarations"],
"no-reference-import": true,
"no-shadowed-variable": false,
"no-sparse-arrays": true,
"no-string-literal": true,
"no-string-throw": true,
"no-unbound-method": true,
"no-unnecessary-callback-wrapper": false,
"no-unnecessary-qualifier": true,
"no-unnecessary-type-assertion": false,
"no-unsafe-any": false,
"no-unsafe-finally": true,
"no-unused-expression": true,
"no-use-before-declare": true,
"no-var-keyword": true,
"no-var-requires": false,
"no-void-expression": false,
"object-literal-shorthand": true,
"object-literal-sort-keys": false,
"one-variable-per-declaration": [true, "ignore-for-loop"],
"only-arrow-functions": [true, "allow-declarations", "allow-named-functions"],
"prefer-const": [
true,
{ {
"call-signature": "onespace", "destructuring": "all"
"index-signature": "onespace",
"parameter": "onespace",
"property-declaration": "onespace",
"variable-declaration": "onespace"
} }
], ],
"variable-name": [true, "ban-keywords"], "prefer-for-of": true,
"whitespace": [true, "check-branch", "check-decl", "check-operator", "check-separator", "check-type"], "prefer-template": [false, "allow-single-concat"],
"jsdoc-format": true, "return-undefined": true,
"no-consecutive-blank-lines": true, "triple-equals": [true],
"one-variable-per-declaration": [true, "ignore-for-loop"], "typedef": [true, "call-signature"],
"curly": true, "unified-signatures": true,
"no-empty": true, "variable-name": [true, "ban-keywords"]
"no-duplicate-key": true,
"no-unreachable": true,
"no-unused-expression": true,
"no-unused-variable": [true],
"eofline": true,
"trailing-comma": [true, {"singleline": "never", "multiline": "never"}],
"align": [true, "parameters", "statements"]
} }
} }

View File

@ -1,5 +0,0 @@
{
"dependencies": {
"semver": "registry:npm/semver#5.0.0+20160723033700"
}
}

1
typings/node.d.ts vendored
View File

@ -1 +0,0 @@
/// <reference path="../node_modules/vscode/typings/node.d.ts" />

View File

@ -1 +0,0 @@
/// <reference path="../node_modules/vscode/typings/index.d.ts" />