diff options
-rw-r--r-- | docs/user/manual.adoc | 74 |
1 files changed, 48 insertions, 26 deletions
diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index b86e91772..54195adb7 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc | |||
@@ -429,24 +429,32 @@ However, if you use some other build system, you'll have to describe the structu | |||
429 | [source,TypeScript] | 429 | [source,TypeScript] |
430 | ---- | 430 | ---- |
431 | interface JsonProject { | 431 | interface JsonProject { |
432 | /// Path to the directory with *source code* of sysroot crates. | 432 | /// Path to the directory with *source code* of |
433 | /// sysroot crates. | ||
434 | /// | ||
435 | /// It should point to the directory where std, | ||
436 | /// core, and friends can be found: | ||
433 | /// | 437 | /// |
434 | /// It should point to the directory where std, core, and friends can be found: | ||
435 | /// https://github.com/rust-lang/rust/tree/master/library. | 438 | /// https://github.com/rust-lang/rust/tree/master/library. |
436 | /// | 439 | /// |
437 | /// If provided, rust-analyzer automatically adds dependencies on sysroot | 440 | /// If provided, rust-analyzer automatically adds |
438 | /// crates. Conversely, if you omit this path, you can specify sysroot | 441 | /// dependencies on sysroot crates. Conversely, |
439 | /// dependencies yourself and, for example, have several different "sysroots" in | 442 | /// if you omit this path, you can specify sysroot |
440 | /// one graph of crates. | 443 | /// dependencies yourself and, for example, have |
444 | /// several different "sysroots" in one graph of | ||
445 | /// crates. | ||
441 | sysroot_src?: string; | 446 | sysroot_src?: string; |
442 | /// The set of crates comprising the current project. | 447 | /// The set of crates comprising the current |
443 | /// Must include all transitive dependencies as well as sysroot crate (libstd, libcore and such). | 448 | /// project. Must include all transitive |
449 | /// dependencies as well as sysroot crate (libstd, | ||
450 | /// libcore and such). | ||
444 | crates: Crate[]; | 451 | crates: Crate[]; |
445 | } | 452 | } |
446 | 453 | ||
447 | interface Crate { | 454 | interface Crate { |
448 | /// Optional crate name used for display purposes, without affecting semantics. | 455 | /// Optional crate name used for display purposes, |
449 | /// See the `deps` key for semantically-significant crate names. | 456 | /// without affecting semantics. See the `deps` |
457 | /// key for semantically-significant crate names. | ||
450 | display_name?: string; | 458 | display_name?: string; |
451 | /// Path to the root module of the crate. | 459 | /// Path to the root module of the crate. |
452 | root_module: string; | 460 | root_module: string; |
@@ -454,45 +462,59 @@ interface Crate { | |||
454 | edition: "2015" | "2018" | "2021"; | 462 | edition: "2015" | "2018" | "2021"; |
455 | /// Dependencies | 463 | /// Dependencies |
456 | deps: Dep[]; | 464 | deps: Dep[]; |
457 | /// Should this crate be treated as a member of current "workspace". | 465 | /// Should this crate be treated as a member of |
466 | /// current "workspace". | ||
458 | /// | 467 | /// |
459 | /// By default, inferred from the `root_module` (members are the crates which reside | 468 | /// By default, inferred from the `root_module` |
460 | /// inside the directory opened in the editor). | 469 | /// (members are the crates which reside inside |
470 | /// the directory opened in the editor). | ||
461 | /// | 471 | /// |
462 | /// Set this to `false` for things like standard library and 3rd party crates to | 472 | /// Set this to `false` for things like standard |
463 | /// enable performance optimizations (rust-analyzer assumes that non-member crates | 473 | /// library and 3rd party crates to enable |
464 | /// don't change). | 474 | /// performance optimizations (rust-analyzer |
475 | /// assumes that non-member crates don't change). | ||
465 | is_workspace_member?: boolean; | 476 | is_workspace_member?: boolean; |
466 | /// Optionally specify the (super)set of `.rs` files comprising this crate. | 477 | /// Optionally specify the (super)set of `.rs` |
478 | /// files comprising this crate. | ||
467 | /// | 479 | /// |
468 | /// By default, rust-analyzer assumes that only files under `root_module.parent` can belong to a crate. | 480 | /// By default, rust-analyzer assumes that only |
469 | /// `include_dirs` are included recursively, unless a subdirectory is in `exclude_dirs`. | 481 | /// files under `root_module.parent` can belong |
482 | /// to a crate. `include_dirs` are included | ||
483 | /// recursively, unless a subdirectory is in | ||
484 | /// `exclude_dirs`. | ||
470 | /// | 485 | /// |
471 | /// Different crates can share the same `source`. | 486 | /// Different crates can share the same `source`. |
472 | /// | 487 | /// |
473 | /// If two crates share an `.rs` file in common, they *must* have the same `source`. | 488 | /// If two crates share an `.rs` file in common, |
474 | /// rust-analyzer assumes that files from one source can't refer to files in another source. | 489 | /// they *must* have the same `source`. |
490 | /// rust-analyzer assumes that files from one | ||
491 | /// source can't refer to files in another source. | ||
475 | source?: { | 492 | source?: { |
476 | include_dirs: string[], | 493 | include_dirs: string[], |
477 | exclude_dirs: string[], | 494 | exclude_dirs: string[], |
478 | }, | 495 | }, |
479 | /// The set of cfgs activated for a given crate, like `["unix", "feature=\"foo\"", "feature=\"bar\""]`. | 496 | /// The set of cfgs activated for a given crate, like |
497 | /// `["unix", "feature=\"foo\"", "feature=\"bar\""]`. | ||
480 | cfg: string[]; | 498 | cfg: string[]; |
481 | /// Target triple for this Crate. | 499 | /// Target triple for this Crate. |
482 | /// | 500 | /// |
483 | /// Used when running `rustc --print cfg` to get target-specific cfgs. | 501 | /// Used when running `rustc --print cfg` |
502 | /// to get target-specific cfgs. | ||
484 | target?: string; | 503 | target?: string; |
485 | /// Environment variables, used for the `env!` macro | 504 | /// Environment variables, used for |
505 | /// the `env!` macro | ||
486 | env: : { [key: string]: string; }, | 506 | env: : { [key: string]: string; }, |
487 | 507 | ||
488 | /// For proc-macro crates, path to compiles proc-macro (.so file). | 508 | /// For proc-macro crates, path to compiled |
509 | /// proc-macro (.so file). | ||
489 | proc_macro_dylib_path?: string; | 510 | proc_macro_dylib_path?: string; |
490 | } | 511 | } |
491 | 512 | ||
492 | interface Dep { | 513 | interface Dep { |
493 | /// Index of a crate in the `crates` array. | 514 | /// Index of a crate in the `crates` array. |
494 | crate: number, | 515 | crate: number, |
495 | /// Name as should appear in the (implicit) `extern crate name` declaration. | 516 | /// Name as should appear in the (implicit) |
517 | /// `extern crate name` declaration. | ||
496 | name: string, | 518 | name: string, |
497 | } | 519 | } |
498 | ---- | 520 | ---- |