|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "IntelliJ Rust Changelog #184" |
| 4 | +date: 2022-12-05 13:00:00 +0300 |
| 5 | +--- |
| 6 | + |
| 7 | + |
| 8 | +## An Update on Proc Macros |
| 9 | + |
| 10 | +[#9729] Enable [function-like](https://doc.rust-lang.org/reference/procedural-macros.html#function-like-procedural-macros) and [derive](https://doc.rust-lang.org/reference/procedural-macros.html#derive-macros) procedural macro expansion by default. Now the plugin provides them with syntax highlighting, completion, the [Show Macro Expansion](https://plugins.jetbrains.com/plugin/8182-rust/docs/rust-code-reference-info.html#macro-exansion) popup, and other features already available for declarative macros. Generated items are taken into account in code completion and other code insight: |
| 11 | + |
| 12 | + <img src="/assets/posts/changelog-184/derive_proc_macro.png" width="700px"/> |
| 13 | + |
| 14 | +Note that [attribute](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros) procedural macro expansion is still disabled by default. If you want to try it, you can enable `org.rust.macros.proc.attr` [experimental feature](https://plugins.jetbrains.com/plugin/8182-rust/docs/rust-faq.html#experimental-features) |
| 15 | + |
| 16 | +## New Features |
| 17 | + |
| 18 | +* [#9686] Support short [intra-doc links](https://doc.rust-lang.org/rustdoc/write-documentation/linking-to-items-by-name.html) (in format `[link]`) |
| 19 | + |
| 20 | +* [#9808] Parse half-open range patterns |
| 21 | + |
| 22 | +* [#4768] Show [coerced](https://doc.rust-lang.org/reference/type-coercions.html) type in `type info` (`ctrl`+`shift`+`P`) |
| 23 | + |
| 24 | + <img src="/assets/posts/changelog-184/type_info.png" width="350px"/> |
| 25 | + |
| 26 | +* [#9760] Notify users about changes in crate roots of procedural macro libraries to reload project model. Otherwise, the plugin won't be able to expand procedural macro calls properly |
| 27 | + |
| 28 | +* [#9711] Experimentally set `RUST_IDE_PROC_MACRO_COMPLETION` and `RUST_IDE_PROC_MACRO_COMPLETION_DUMMY_IDENTIFIER` environment variables for procedural macro when invoking them during completion. The idea is that authors of proc macros could use these variables and based on them change behavior of the macro to provide a better (possible custom) completion for IDE users |
| 29 | + |
| 30 | +## Fixes |
| 31 | + |
| 32 | +* [#9761] Fix type inference in closures on nightly Rust |
| 33 | + |
| 34 | +* [#9779] Fix false-positive errors like `Use of moved values` after invalidating caches without clearing file caches |
| 35 | + |
| 36 | +* [#9800] Fix impl search when there are multiple type aliases with the same names |
| 37 | + |
| 38 | +* [#9756] Suggest `Reload project` instead of `Attach file to a module` quick-fix for crates root files after their creation |
| 39 | + |
| 40 | +* [#9783] Fix [move statement up/down](https://www.jetbrains.com/idea/guide/tutorials/rearranging-code/moving-statements-around/) editor action being incorrectly disabled with some IDE configurations (by [@afetisov]) |
| 41 | + |
| 42 | +* [#9823] Fix completion inside local macro calls in 2022.3 |
| 43 | + |
| 44 | +* [#9767] Fixes `Go To Declaration`, highlighting, completion and other features in function-like macros used in the pattern context |
| 45 | + |
| 46 | +* [#9762] Fix find usages for variables defined by macros |
| 47 | + |
| 48 | +* [#9764] Fix handling nested blocks expanded from local macros |
| 49 | + |
| 50 | +* [#9741] Don't offer `Un-elide lifetimes` intention when there are no input lifetimes |
| 51 | + |
| 52 | +* [#9788] Don't show `File does not belong to any known Cargo project` warning for [scratch files](https://www.jetbrains.com/help/idea/scratches.html) |
| 53 | + |
| 54 | +* [#9345] Fix nesting of renamed imports (by [@afetisov]) |
| 55 | + |
| 56 | +* [#9745] Restore option `Fix all 'Unresolved reference' problems in file` which adds unambiguous imports. Note that there is also an option `Add unambiguous imports on the fly` which can be turned on in `Settings | Editor | General | Auto Import` |
| 57 | + |
| 58 | +* [#9737] Don't create separate undo entry when adding unambiguous import on the fly |
| 59 | + |
| 60 | +## Internal Improvements |
| 61 | + |
| 62 | +* [#9758] Make 2022.3 platform default for development |
| 63 | + |
| 64 | +Full set of changes can be found [here](https://github.com/intellij-rust/intellij-rust/milestone/93?closed=1) |
| 65 | + |
| 66 | +[@afetisov]: https://github.com/afetisov |
| 67 | + |
| 68 | +[#4768]: https://github.com/intellij-rust/intellij-rust/pull/4768 |
| 69 | +[#9345]: https://github.com/intellij-rust/intellij-rust/pull/9345 |
| 70 | +[#9686]: https://github.com/intellij-rust/intellij-rust/pull/9686 |
| 71 | +[#9711]: https://github.com/intellij-rust/intellij-rust/pull/9711 |
| 72 | +[#9729]: https://github.com/intellij-rust/intellij-rust/pull/9729 |
| 73 | +[#9737]: https://github.com/intellij-rust/intellij-rust/pull/9737 |
| 74 | +[#9741]: https://github.com/intellij-rust/intellij-rust/pull/9741 |
| 75 | +[#9745]: https://github.com/intellij-rust/intellij-rust/pull/9745 |
| 76 | +[#9756]: https://github.com/intellij-rust/intellij-rust/pull/9756 |
| 77 | +[#9758]: https://github.com/intellij-rust/intellij-rust/pull/9758 |
| 78 | +[#9760]: https://github.com/intellij-rust/intellij-rust/pull/9760 |
| 79 | +[#9761]: https://github.com/intellij-rust/intellij-rust/pull/9761 |
| 80 | +[#9762]: https://github.com/intellij-rust/intellij-rust/pull/9762 |
| 81 | +[#9764]: https://github.com/intellij-rust/intellij-rust/pull/9764 |
| 82 | +[#9767]: https://github.com/intellij-rust/intellij-rust/pull/9767 |
| 83 | +[#9779]: https://github.com/intellij-rust/intellij-rust/pull/9779 |
| 84 | +[#9783]: https://github.com/intellij-rust/intellij-rust/pull/9783 |
| 85 | +[#9788]: https://github.com/intellij-rust/intellij-rust/pull/9788 |
| 86 | +[#9800]: https://github.com/intellij-rust/intellij-rust/pull/9800 |
| 87 | +[#9808]: https://github.com/intellij-rust/intellij-rust/pull/9808 |
| 88 | +[#9823]: https://github.com/intellij-rust/intellij-rust/pull/9823 |
0 commit comments