diff options
Diffstat (limited to 'editors')
-rw-r--r-- | editors/code/package-lock.json | 17 | ||||
-rw-r--r-- | editors/code/package.json | 56 | ||||
-rw-r--r-- | editors/code/src/config.ts | 8 | ||||
-rw-r--r-- | editors/code/src/main.ts | 6 | ||||
-rw-r--r-- | editors/code/src/net.ts | 25 |
5 files changed, 72 insertions, 40 deletions
diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json index 9d0d1d4ec..198c17556 100644 --- a/editors/code/package-lock.json +++ b/editors/code/package-lock.json | |||
@@ -9,6 +9,7 @@ | |||
9 | "version": "0.4.0-dev", | 9 | "version": "0.4.0-dev", |
10 | "license": "MIT OR Apache-2.0", | 10 | "license": "MIT OR Apache-2.0", |
11 | "dependencies": { | 11 | "dependencies": { |
12 | "https-proxy-agent": "^5.0.0", | ||
12 | "node-fetch": "^2.6.1", | 13 | "node-fetch": "^2.6.1", |
13 | "vscode-languageclient": "^7.1.0-next.4" | 14 | "vscode-languageclient": "^7.1.0-next.4" |
14 | }, | 15 | }, |
@@ -515,7 +516,6 @@ | |||
515 | "version": "6.0.2", | 516 | "version": "6.0.2", |
516 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", | 517 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", |
517 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", | 518 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", |
518 | "dev": true, | ||
519 | "dependencies": { | 519 | "dependencies": { |
520 | "debug": "4" | 520 | "debug": "4" |
521 | }, | 521 | }, |
@@ -830,6 +830,7 @@ | |||
830 | "dependencies": { | 830 | "dependencies": { |
831 | "anymatch": "~3.1.1", | 831 | "anymatch": "~3.1.1", |
832 | "braces": "~3.0.2", | 832 | "braces": "~3.0.2", |
833 | "fsevents": "~2.3.1", | ||
833 | "glob-parent": "~5.1.0", | 834 | "glob-parent": "~5.1.0", |
834 | "is-binary-path": "~2.1.0", | 835 | "is-binary-path": "~2.1.0", |
835 | "is-glob": "~4.0.1", | 836 | "is-glob": "~4.0.1", |
@@ -959,7 +960,6 @@ | |||
959 | "version": "4.3.1", | 960 | "version": "4.3.1", |
960 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", | 961 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", |
961 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", | 962 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", |
962 | "dev": true, | ||
963 | "dependencies": { | 963 | "dependencies": { |
964 | "ms": "2.1.2" | 964 | "ms": "2.1.2" |
965 | }, | 965 | }, |
@@ -1759,7 +1759,6 @@ | |||
1759 | "version": "5.0.0", | 1759 | "version": "5.0.0", |
1760 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", | 1760 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", |
1761 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", | 1761 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", |
1762 | "dev": true, | ||
1763 | "dependencies": { | 1762 | "dependencies": { |
1764 | "agent-base": "6", | 1763 | "agent-base": "6", |
1765 | "debug": "4" | 1764 | "debug": "4" |
@@ -2236,8 +2235,7 @@ | |||
2236 | "node_modules/ms": { | 2235 | "node_modules/ms": { |
2237 | "version": "2.1.2", | 2236 | "version": "2.1.2", |
2238 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | 2237 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
2239 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", | 2238 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" |
2240 | "dev": true | ||
2241 | }, | 2239 | }, |
2242 | "node_modules/mute-stream": { | 2240 | "node_modules/mute-stream": { |
2243 | "version": "0.0.8", | 2241 | "version": "0.0.8", |
@@ -2682,6 +2680,9 @@ | |||
2682 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.1.tgz", | 2680 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.1.tgz", |
2683 | "integrity": "sha512-9rfr0Z6j+vE+eayfNVFr1KZ+k+jiUl2+0e4quZafy1x6SFCjzFspfRSO2ZZQeWeX9noeDTUDgg6eCENiEPFvQg==", | 2681 | "integrity": "sha512-9rfr0Z6j+vE+eayfNVFr1KZ+k+jiUl2+0e4quZafy1x6SFCjzFspfRSO2ZZQeWeX9noeDTUDgg6eCENiEPFvQg==", |
2684 | "dev": true, | 2682 | "dev": true, |
2683 | "dependencies": { | ||
2684 | "fsevents": "~2.3.1" | ||
2685 | }, | ||
2685 | "bin": { | 2686 | "bin": { |
2686 | "rollup": "dist/bin/rollup" | 2687 | "rollup": "dist/bin/rollup" |
2687 | }, | 2688 | }, |
@@ -3843,7 +3844,6 @@ | |||
3843 | "version": "6.0.2", | 3844 | "version": "6.0.2", |
3844 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", | 3845 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", |
3845 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", | 3846 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", |
3846 | "dev": true, | ||
3847 | "requires": { | 3847 | "requires": { |
3848 | "debug": "4" | 3848 | "debug": "4" |
3849 | } | 3849 | } |
@@ -4190,7 +4190,6 @@ | |||
4190 | "version": "4.3.1", | 4190 | "version": "4.3.1", |
4191 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", | 4191 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", |
4192 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", | 4192 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", |
4193 | "dev": true, | ||
4194 | "requires": { | 4193 | "requires": { |
4195 | "ms": "2.1.2" | 4194 | "ms": "2.1.2" |
4196 | } | 4195 | } |
@@ -4798,7 +4797,6 @@ | |||
4798 | "version": "5.0.0", | 4797 | "version": "5.0.0", |
4799 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", | 4798 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", |
4800 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", | 4799 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", |
4801 | "dev": true, | ||
4802 | "requires": { | 4800 | "requires": { |
4803 | "agent-base": "6", | 4801 | "agent-base": "6", |
4804 | "debug": "4" | 4802 | "debug": "4" |
@@ -5175,8 +5173,7 @@ | |||
5175 | "ms": { | 5173 | "ms": { |
5176 | "version": "2.1.2", | 5174 | "version": "2.1.2", |
5177 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | 5175 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
5178 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", | 5176 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" |
5179 | "dev": true | ||
5180 | }, | 5177 | }, |
5181 | "mute-stream": { | 5178 | "mute-stream": { |
5182 | "version": "0.0.8", | 5179 | "version": "0.0.8", |
diff --git a/editors/code/package.json b/editors/code/package.json index 1987364bc..b29f006f0 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -35,6 +35,7 @@ | |||
35 | "test": "node ./out/tests/runTests.js" | 35 | "test": "node ./out/tests/runTests.js" |
36 | }, | 36 | }, |
37 | "dependencies": { | 37 | "dependencies": { |
38 | "https-proxy-agent": "^5.0.0", | ||
38 | "node-fetch": "^2.6.1", | 39 | "node-fetch": "^2.6.1", |
39 | "vscode-languageclient": "^7.1.0-next.4" | 40 | "vscode-languageclient": "^7.1.0-next.4" |
40 | }, | 41 | }, |
@@ -385,13 +386,18 @@ | |||
385 | "Force import paths to be absolute by always starting them with `crate` or the crate name they refer to." | 386 | "Force import paths to be absolute by always starting them with `crate` or the crate name they refer to." |
386 | ] | 387 | ] |
387 | }, | 388 | }, |
389 | "rust-analyzer.assist.importGroup": { | ||
390 | "markdownDescription": "Group inserted imports by the [following order](https://rust-analyzer.github.io/manual.html#auto-import). Groups are separated by newlines.", | ||
391 | "default": true, | ||
392 | "type": "boolean" | ||
393 | }, | ||
388 | "rust-analyzer.callInfo.full": { | 394 | "rust-analyzer.callInfo.full": { |
389 | "markdownDescription": "Show function name and docs in parameter hints.", | 395 | "markdownDescription": "Show function name and docs in parameter hints.", |
390 | "default": true, | 396 | "default": true, |
391 | "type": "boolean" | 397 | "type": "boolean" |
392 | }, | 398 | }, |
393 | "rust-analyzer.cargo.autoreload": { | 399 | "rust-analyzer.cargo.autoreload": { |
394 | "markdownDescription": "Automatically refresh project info via `cargo metadata` on `Cargo.toml` changes.", | 400 | "markdownDescription": "Automatically refresh project info via `cargo metadata` on\n`Cargo.toml` changes.", |
395 | "default": true, | 401 | "default": true, |
396 | "type": "boolean" | 402 | "type": "boolean" |
397 | }, | 403 | }, |
@@ -410,7 +416,7 @@ | |||
410 | }, | 416 | }, |
411 | "rust-analyzer.cargo.runBuildScripts": { | 417 | "rust-analyzer.cargo.runBuildScripts": { |
412 | "markdownDescription": "Run build scripts (`build.rs`) for more precise code analysis.", | 418 | "markdownDescription": "Run build scripts (`build.rs`) for more precise code analysis.", |
413 | "default": false, | 419 | "default": true, |
414 | "type": "boolean" | 420 | "type": "boolean" |
415 | }, | 421 | }, |
416 | "rust-analyzer.cargo.noDefaultFeatures": { | 422 | "rust-analyzer.cargo.noDefaultFeatures": { |
@@ -437,7 +443,7 @@ | |||
437 | "type": "boolean" | 443 | "type": "boolean" |
438 | }, | 444 | }, |
439 | "rust-analyzer.checkOnSave.allFeatures": { | 445 | "rust-analyzer.checkOnSave.allFeatures": { |
440 | "markdownDescription": "Check with all features (`--all-features`). Defaults to `#rust-analyzer.cargo.allFeatures#`.", | 446 | "markdownDescription": "Check with all features (`--all-features`).\nDefaults to `#rust-analyzer.cargo.allFeatures#`.", |
441 | "default": null, | 447 | "default": null, |
442 | "type": [ | 448 | "type": [ |
443 | "null", | 449 | "null", |
@@ -463,7 +469,7 @@ | |||
463 | ] | 469 | ] |
464 | }, | 470 | }, |
465 | "rust-analyzer.checkOnSave.target": { | 471 | "rust-analyzer.checkOnSave.target": { |
466 | "markdownDescription": "Check for a specific target. Defaults to `#rust-analyzer.cargo.target#`.", | 472 | "markdownDescription": "Check for a specific target. Defaults to\n`#rust-analyzer.cargo.target#`.", |
467 | "default": null, | 473 | "default": null, |
468 | "type": [ | 474 | "type": [ |
469 | "null", | 475 | "null", |
@@ -479,7 +485,7 @@ | |||
479 | } | 485 | } |
480 | }, | 486 | }, |
481 | "rust-analyzer.checkOnSave.features": { | 487 | "rust-analyzer.checkOnSave.features": { |
482 | "markdownDescription": "List of features to activate. Defaults to `#rust-analyzer.cargo.features#`.", | 488 | "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.", |
483 | "default": null, | 489 | "default": null, |
484 | "type": [ | 490 | "type": [ |
485 | "null", | 491 | "null", |
@@ -490,7 +496,7 @@ | |||
490 | } | 496 | } |
491 | }, | 497 | }, |
492 | "rust-analyzer.checkOnSave.overrideCommand": { | 498 | "rust-analyzer.checkOnSave.overrideCommand": { |
493 | "markdownDescription": "Advanced option, fully override the command rust-analyzer uses for checking. The command should include `--message-format=json` or similar option.", | 499 | "markdownDescription": "Advanced option, fully override the command rust-analyzer uses for\nchecking. The command should include `--message-format=json` or\nsimilar option.", |
494 | "default": null, | 500 | "default": null, |
495 | "type": [ | 501 | "type": [ |
496 | "null", | 502 | "null", |
@@ -516,7 +522,7 @@ | |||
516 | "type": "boolean" | 522 | "type": "boolean" |
517 | }, | 523 | }, |
518 | "rust-analyzer.completion.autoimport.enable": { | 524 | "rust-analyzer.completion.autoimport.enable": { |
519 | "markdownDescription": "Toggles the additional completions that automatically add imports when completed. Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.", | 525 | "markdownDescription": "Toggles the additional completions that automatically add imports when completed.\nNote that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.", |
520 | "default": true, | 526 | "default": true, |
521 | "type": "boolean" | 527 | "type": "boolean" |
522 | }, | 528 | }, |
@@ -526,7 +532,7 @@ | |||
526 | "type": "boolean" | 532 | "type": "boolean" |
527 | }, | 533 | }, |
528 | "rust-analyzer.diagnostics.enableExperimental": { | 534 | "rust-analyzer.diagnostics.enableExperimental": { |
529 | "markdownDescription": "Whether to show experimental rust-analyzer diagnostics that might have more false positives than usual.", | 535 | "markdownDescription": "Whether to show experimental rust-analyzer diagnostics that might\nhave more false positives than usual.", |
530 | "default": true, | 536 | "default": true, |
531 | "type": "boolean" | 537 | "type": "boolean" |
532 | }, | 538 | }, |
@@ -540,7 +546,7 @@ | |||
540 | "uniqueItems": true | 546 | "uniqueItems": true |
541 | }, | 547 | }, |
542 | "rust-analyzer.diagnostics.warningsAsHint": { | 548 | "rust-analyzer.diagnostics.warningsAsHint": { |
543 | "markdownDescription": "List of warnings that should be displayed with info severity.\\n\\nThe warnings will be indicated by a blue squiggly underline in code and a blue icon in the `Problems Panel`.", | 549 | "markdownDescription": "List of warnings that should be displayed with info severity.\n\nThe warnings will be indicated by a blue squiggly underline in code\nand a blue icon in the `Problems Panel`.", |
544 | "default": [], | 550 | "default": [], |
545 | "type": "array", | 551 | "type": "array", |
546 | "items": { | 552 | "items": { |
@@ -548,7 +554,7 @@ | |||
548 | } | 554 | } |
549 | }, | 555 | }, |
550 | "rust-analyzer.diagnostics.warningsAsInfo": { | 556 | "rust-analyzer.diagnostics.warningsAsInfo": { |
551 | "markdownDescription": "List of warnings that should be displayed with hint severity.\\n\\nThe warnings will be indicated by faded text or three dots in code and will not show up in the `Problems Panel`.", | 557 | "markdownDescription": "List of warnings that should be displayed with hint severity.\n\nThe warnings will be indicated by faded text or three dots in code\nand will not show up in the `Problems Panel`.", |
552 | "default": [], | 558 | "default": [], |
553 | "type": "array", | 559 | "type": "array", |
554 | "items": { | 560 | "items": { |
@@ -569,7 +575,7 @@ | |||
569 | } | 575 | } |
570 | }, | 576 | }, |
571 | "rust-analyzer.hoverActions.debug": { | 577 | "rust-analyzer.hoverActions.debug": { |
572 | "markdownDescription": "Whether to show `Debug` action. Only applies when `#rust-analyzer.hoverActions.enable#` is set.", | 578 | "markdownDescription": "Whether to show `Debug` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", |
573 | "default": true, | 579 | "default": true, |
574 | "type": "boolean" | 580 | "type": "boolean" |
575 | }, | 581 | }, |
@@ -579,17 +585,17 @@ | |||
579 | "type": "boolean" | 585 | "type": "boolean" |
580 | }, | 586 | }, |
581 | "rust-analyzer.hoverActions.gotoTypeDef": { | 587 | "rust-analyzer.hoverActions.gotoTypeDef": { |
582 | "markdownDescription": "Whether to show `Go to Type Definition` action. Only applies when `#rust-analyzer.hoverActions.enable#` is set.", | 588 | "markdownDescription": "Whether to show `Go to Type Definition` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", |
583 | "default": true, | 589 | "default": true, |
584 | "type": "boolean" | 590 | "type": "boolean" |
585 | }, | 591 | }, |
586 | "rust-analyzer.hoverActions.implementations": { | 592 | "rust-analyzer.hoverActions.implementations": { |
587 | "markdownDescription": "Whether to show `Implementations` action. Only applies when `#rust-analyzer.hoverActions.enable#` is set.", | 593 | "markdownDescription": "Whether to show `Implementations` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", |
588 | "default": true, | 594 | "default": true, |
589 | "type": "boolean" | 595 | "type": "boolean" |
590 | }, | 596 | }, |
591 | "rust-analyzer.hoverActions.run": { | 597 | "rust-analyzer.hoverActions.run": { |
592 | "markdownDescription": "Whether to show `Run` action. Only applies when `#rust-analyzer.hoverActions.enable#` is set.", | 598 | "markdownDescription": "Whether to show `Run` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", |
593 | "default": true, | 599 | "default": true, |
594 | "type": "boolean" | 600 | "type": "boolean" |
595 | }, | 601 | }, |
@@ -613,7 +619,7 @@ | |||
613 | "minimum": 0 | 619 | "minimum": 0 |
614 | }, | 620 | }, |
615 | "rust-analyzer.inlayHints.parameterHints": { | 621 | "rust-analyzer.inlayHints.parameterHints": { |
616 | "markdownDescription": "Whether to show function parameter name inlay hints at the call site.", | 622 | "markdownDescription": "Whether to show function parameter name inlay hints at the call\nsite.", |
617 | "default": true, | 623 | "default": true, |
618 | "type": "boolean" | 624 | "type": "boolean" |
619 | }, | 625 | }, |
@@ -623,7 +629,7 @@ | |||
623 | "type": "boolean" | 629 | "type": "boolean" |
624 | }, | 630 | }, |
625 | "rust-analyzer.lens.debug": { | 631 | "rust-analyzer.lens.debug": { |
626 | "markdownDescription": "Whether to show `Debug` lens. Only applies when `#rust-analyzer.lens.enable#` is set.", | 632 | "markdownDescription": "Whether to show `Debug` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", |
627 | "default": true, | 633 | "default": true, |
628 | "type": "boolean" | 634 | "type": "boolean" |
629 | }, | 635 | }, |
@@ -633,27 +639,27 @@ | |||
633 | "type": "boolean" | 639 | "type": "boolean" |
634 | }, | 640 | }, |
635 | "rust-analyzer.lens.implementations": { | 641 | "rust-analyzer.lens.implementations": { |
636 | "markdownDescription": "Whether to show `Implementations` lens. Only applies when `#rust-analyzer.lens.enable#` is set.", | 642 | "markdownDescription": "Whether to show `Implementations` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", |
637 | "default": true, | 643 | "default": true, |
638 | "type": "boolean" | 644 | "type": "boolean" |
639 | }, | 645 | }, |
640 | "rust-analyzer.lens.run": { | 646 | "rust-analyzer.lens.run": { |
641 | "markdownDescription": "Whether to show `Run` lens. Only applies when `#rust-analyzer.lens.enable#` is set.", | 647 | "markdownDescription": "Whether to show `Run` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", |
642 | "default": true, | 648 | "default": true, |
643 | "type": "boolean" | 649 | "type": "boolean" |
644 | }, | 650 | }, |
645 | "rust-analyzer.lens.methodReferences": { | 651 | "rust-analyzer.lens.methodReferences": { |
646 | "markdownDescription": "Whether to show `Method References` lens. Only applies when `#rust-analyzer.lens.enable#` is set.", | 652 | "markdownDescription": "Whether to show `Method References` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", |
647 | "default": false, | 653 | "default": false, |
648 | "type": "boolean" | 654 | "type": "boolean" |
649 | }, | 655 | }, |
650 | "rust-analyzer.lens.references": { | 656 | "rust-analyzer.lens.references": { |
651 | "markdownDescription": "Whether to show `References` lens. Only applies when `#rust-analyzer.lens.enable#` is set.", | 657 | "markdownDescription": "Whether to show `References` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", |
652 | "default": false, | 658 | "default": false, |
653 | "type": "boolean" | 659 | "type": "boolean" |
654 | }, | 660 | }, |
655 | "rust-analyzer.linkedProjects": { | 661 | "rust-analyzer.linkedProjects": { |
656 | "markdownDescription": "Disable project auto-discovery in favor of explicitly specified set of projects.\\n\\nElements must be paths pointing to `Cargo.toml`, `rust-project.json`, or JSON objects in `rust-project.json` format.", | 662 | "markdownDescription": "Disable project auto-discovery in favor of explicitly specified set\nof projects.\n\nElements must be paths pointing to `Cargo.toml`,\n`rust-project.json`, or JSON objects in `rust-project.json` format.", |
657 | "default": [], | 663 | "default": [], |
658 | "type": "array", | 664 | "type": "array", |
659 | "items": { | 665 | "items": { |
@@ -683,7 +689,7 @@ | |||
683 | "type": "boolean" | 689 | "type": "boolean" |
684 | }, | 690 | }, |
685 | "rust-analyzer.procMacro.server": { | 691 | "rust-analyzer.procMacro.server": { |
686 | "markdownDescription": "Internal config, path to proc-macro server executable (typically, this is rust-analyzer itself, but we override this in tests).", | 692 | "markdownDescription": "Internal config, path to proc-macro server executable (typically,\nthis is rust-analyzer itself, but we override this in tests).", |
687 | "default": null, | 693 | "default": null, |
688 | "type": [ | 694 | "type": [ |
689 | "null", | 695 | "null", |
@@ -699,7 +705,7 @@ | |||
699 | ] | 705 | ] |
700 | }, | 706 | }, |
701 | "rust-analyzer.runnables.cargoExtraArgs": { | 707 | "rust-analyzer.runnables.cargoExtraArgs": { |
702 | "markdownDescription": "Additional arguments to be passed to cargo for runnables such as tests or binaries.\\nFor example, it may be `--release`.", | 708 | "markdownDescription": "Additional arguments to be passed to cargo for runnables such as\ntests or binaries. For example, it may be `--release`.", |
703 | "default": [], | 709 | "default": [], |
704 | "type": "array", | 710 | "type": "array", |
705 | "items": { | 711 | "items": { |
@@ -707,7 +713,7 @@ | |||
707 | } | 713 | } |
708 | }, | 714 | }, |
709 | "rust-analyzer.rustcSource": { | 715 | "rust-analyzer.rustcSource": { |
710 | "markdownDescription": "Path to the rust compiler sources, for usage in rustc_private projects, or \"discover\" to try to automatically find it.", | 716 | "markdownDescription": "Path to the Cargo.toml of the rust compiler workspace, for usage in rustc_private\nprojects, or \"discover\" to try to automatically find it.\n\nAny project which uses rust-analyzer with the rustcPrivate\ncrates must set `[package.metadata.rust-analyzer] rustc_private=true` to use it.\n\nThis option is not reloaded automatically; you must restart rust-analyzer for it to take effect.", |
711 | "default": null, | 717 | "default": null, |
712 | "type": [ | 718 | "type": [ |
713 | "null", | 719 | "null", |
@@ -723,7 +729,7 @@ | |||
723 | } | 729 | } |
724 | }, | 730 | }, |
725 | "rust-analyzer.rustfmt.overrideCommand": { | 731 | "rust-analyzer.rustfmt.overrideCommand": { |
726 | "markdownDescription": "Advanced option, fully override the command rust-analyzer uses for formatting.", | 732 | "markdownDescription": "Advanced option, fully override the command rust-analyzer uses for\nformatting.", |
727 | "default": null, | 733 | "default": null, |
728 | "type": [ | 734 | "type": [ |
729 | "null", | 735 | "null", |
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index ddb5cfbd3..82f0a0566 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts | |||
@@ -100,6 +100,14 @@ export class Config { | |||
100 | get channel() { return this.get<UpdatesChannel>("updates.channel"); } | 100 | get channel() { return this.get<UpdatesChannel>("updates.channel"); } |
101 | get askBeforeDownload() { return this.get<boolean>("updates.askBeforeDownload"); } | 101 | get askBeforeDownload() { return this.get<boolean>("updates.askBeforeDownload"); } |
102 | get traceExtension() { return this.get<boolean>("trace.extension"); } | 102 | get traceExtension() { return this.get<boolean>("trace.extension"); } |
103 | get httpProxy() { | ||
104 | const httpProxy = vscode | ||
105 | .workspace | ||
106 | .getConfiguration('http') | ||
107 | .get<null | string>("proxy")!; | ||
108 | |||
109 | return httpProxy || process.env["https_proxy"] || process.env["HTTPS_PROXY"]; | ||
110 | } | ||
103 | 111 | ||
104 | get inlayHints() { | 112 | get inlayHints() { |
105 | return { | 113 | return { |
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 00393d6e8..1be4f1758 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts | |||
@@ -183,7 +183,7 @@ async function bootstrapExtension(config: Config, state: PersistentState): Promi | |||
183 | } | 183 | } |
184 | 184 | ||
185 | const release = await downloadWithRetryDialog(state, async () => { | 185 | const release = await downloadWithRetryDialog(state, async () => { |
186 | return await fetchRelease("nightly", state.githubToken); | 186 | return await fetchRelease("nightly", state.githubToken, config.httpProxy); |
187 | }).catch(async (e) => { | 187 | }).catch(async (e) => { |
188 | log.error(e); | 188 | log.error(e); |
189 | if (state.releaseId === undefined) { // Show error only for the initial download | 189 | if (state.releaseId === undefined) { // Show error only for the initial download |
@@ -209,6 +209,7 @@ async function bootstrapExtension(config: Config, state: PersistentState): Promi | |||
209 | url: artifact.browser_download_url, | 209 | url: artifact.browser_download_url, |
210 | dest, | 210 | dest, |
211 | progressTitle: "Downloading rust-analyzer extension", | 211 | progressTitle: "Downloading rust-analyzer extension", |
212 | httpProxy: config.httpProxy, | ||
212 | }); | 213 | }); |
213 | }); | 214 | }); |
214 | 215 | ||
@@ -331,7 +332,7 @@ async function getServer(config: Config, state: PersistentState): Promise<string | |||
331 | 332 | ||
332 | const releaseTag = config.package.releaseTag; | 333 | const releaseTag = config.package.releaseTag; |
333 | const release = await downloadWithRetryDialog(state, async () => { | 334 | const release = await downloadWithRetryDialog(state, async () => { |
334 | return await fetchRelease(releaseTag, state.githubToken); | 335 | return await fetchRelease(releaseTag, state.githubToken, config.httpProxy); |
335 | }); | 336 | }); |
336 | const artifact = release.assets.find(artifact => artifact.name === `rust-analyzer-${platform}.gz`); | 337 | const artifact = release.assets.find(artifact => artifact.name === `rust-analyzer-${platform}.gz`); |
337 | assert(!!artifact, `Bad release: ${JSON.stringify(release)}`); | 338 | assert(!!artifact, `Bad release: ${JSON.stringify(release)}`); |
@@ -343,6 +344,7 @@ async function getServer(config: Config, state: PersistentState): Promise<string | |||
343 | progressTitle: "Downloading rust-analyzer server", | 344 | progressTitle: "Downloading rust-analyzer server", |
344 | gunzip: true, | 345 | gunzip: true, |
345 | mode: 0o755, | 346 | mode: 0o755, |
347 | httpProxy: config.httpProxy, | ||
346 | }); | 348 | }); |
347 | }); | 349 | }); |
348 | 350 | ||
diff --git a/editors/code/src/net.ts b/editors/code/src/net.ts index d39dc1baf..07ebc615c 100644 --- a/editors/code/src/net.ts +++ b/editors/code/src/net.ts | |||
@@ -1,4 +1,6 @@ | |||
1 | import fetch from "node-fetch"; | 1 | import fetch from "node-fetch"; |
2 | var HttpsProxyAgent = require('https-proxy-agent'); | ||
3 | |||
2 | import * as vscode from "vscode"; | 4 | import * as vscode from "vscode"; |
3 | import * as stream from "stream"; | 5 | import * as stream from "stream"; |
4 | import * as crypto from "crypto"; | 6 | import * as crypto from "crypto"; |
@@ -17,6 +19,7 @@ const REPO = "rust-analyzer"; | |||
17 | export async function fetchRelease( | 19 | export async function fetchRelease( |
18 | releaseTag: string, | 20 | releaseTag: string, |
19 | githubToken: string | null | undefined, | 21 | githubToken: string | null | undefined, |
22 | httpProxy: string | null | undefined, | ||
20 | ): Promise<GithubRelease> { | 23 | ): Promise<GithubRelease> { |
21 | 24 | ||
22 | const apiEndpointPath = `/repos/${OWNER}/${REPO}/releases/tags/${releaseTag}`; | 25 | const apiEndpointPath = `/repos/${OWNER}/${REPO}/releases/tags/${releaseTag}`; |
@@ -30,7 +33,14 @@ export async function fetchRelease( | |||
30 | headers.Authorization = "token " + githubToken; | 33 | headers.Authorization = "token " + githubToken; |
31 | } | 34 | } |
32 | 35 | ||
33 | const response = await fetch(requestUrl, { headers: headers }); | 36 | const response = await (() => { |
37 | if (httpProxy) { | ||
38 | log.debug(`Fetching release metadata via proxy: ${httpProxy}`); | ||
39 | return fetch(requestUrl, { headers: headers, agent: new HttpsProxyAgent(httpProxy) }); | ||
40 | } | ||
41 | |||
42 | return fetch(requestUrl, { headers: headers }); | ||
43 | })(); | ||
34 | 44 | ||
35 | if (!response.ok) { | 45 | if (!response.ok) { |
36 | log.error("Error fetching artifact release info", { | 46 | log.error("Error fetching artifact release info", { |
@@ -73,6 +83,7 @@ interface DownloadOpts { | |||
73 | dest: string; | 83 | dest: string; |
74 | mode?: number; | 84 | mode?: number; |
75 | gunzip?: boolean; | 85 | gunzip?: boolean; |
86 | httpProxy?: string; | ||
76 | } | 87 | } |
77 | 88 | ||
78 | export async function download(opts: DownloadOpts) { | 89 | export async function download(opts: DownloadOpts) { |
@@ -91,7 +102,7 @@ export async function download(opts: DownloadOpts) { | |||
91 | }, | 102 | }, |
92 | async (progress, _cancellationToken) => { | 103 | async (progress, _cancellationToken) => { |
93 | let lastPercentage = 0; | 104 | let lastPercentage = 0; |
94 | await downloadFile(opts.url, tempFile, opts.mode, !!opts.gunzip, (readBytes, totalBytes) => { | 105 | await downloadFile(opts.url, tempFile, opts.mode, !!opts.gunzip, opts.httpProxy, (readBytes, totalBytes) => { |
95 | const newPercentage = Math.round((readBytes / totalBytes) * 100); | 106 | const newPercentage = Math.round((readBytes / totalBytes) * 100); |
96 | if (newPercentage !== lastPercentage) { | 107 | if (newPercentage !== lastPercentage) { |
97 | progress.report({ | 108 | progress.report({ |
@@ -113,9 +124,17 @@ async function downloadFile( | |||
113 | destFilePath: fs.PathLike, | 124 | destFilePath: fs.PathLike, |
114 | mode: number | undefined, | 125 | mode: number | undefined, |
115 | gunzip: boolean, | 126 | gunzip: boolean, |
127 | httpProxy: string | null | undefined, | ||
116 | onProgress: (readBytes: number, totalBytes: number) => void | 128 | onProgress: (readBytes: number, totalBytes: number) => void |
117 | ): Promise<void> { | 129 | ): Promise<void> { |
118 | const res = await fetch(url); | 130 | const res = await (() => { |
131 | if (httpProxy) { | ||
132 | log.debug(`Downloading ${url} via proxy: ${httpProxy}`); | ||
133 | return fetch(url, { agent: new HttpsProxyAgent(httpProxy) }); | ||
134 | } | ||
135 | |||
136 | return fetch(url); | ||
137 | })(); | ||
119 | 138 | ||
120 | if (!res.ok) { | 139 | if (!res.ok) { |
121 | log.error("Error", res.status, "while downloading file from", url); | 140 | log.error("Error", res.status, "while downloading file from", url); |