3998: Make add_function generate functions in other modules via qualified path r=matklad a=TimoFreiberg

Additional feature for #3639 

- [x] Add tests for paths with more segments
- [x] Make generating the function in another file work
- [x] Add `pub` or `pub(crate)` to the generated function if it's generated in a different module
- [x] Make the assist jump to the edited file
- [x] Enable file support in the `check_assist` helper

4006: Syntax highlighting for format strings r=matklad a=ltentrup

I have an implementation for syntax highlighting for format string modifiers `{}`.
The first commit refactors the changes in #3826 into a separate struct.
The second commit implements the highlighting: first we check in a macro call whether the macro is a format macro from `std`. In this case, we remember the format string node. If we encounter this node during syntax highlighting, we check for the format modifiers `{}` using regular expressions.

There are a few places which I am not quite sure:
- Is the way I extract the macro names correct?
- Is the `HighlightTag::Attribute` suitable for highlighting the `{}`?

Let me know what you think, any feedback is welcome!

Co-authored-by: Timo Freiberg <timo.freiberg@gmail.com>
Co-authored-by: Leander Tentrup <leander.tentrup@gmail.com>
Co-authored-by: Leander Tentrup <ltentrup@users.noreply.github.com>
This commit is contained in:
bors[bot] 2020-04-24 20:10:54 +00:00 committed by GitHub
commit 51a0058d4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 940 additions and 95 deletions

View file

@ -65,7 +65,7 @@ Adds a stub function with a signature matching the function under the cursor.
struct Baz;
fn baz() -> Baz { Baz }
fn foo() {
bar┃("", baz());
bar┃("", baz());
}
@ -73,7 +73,7 @@ fn foo() {
struct Baz;
fn baz() -> Baz { Baz }
fn foo() {
bar("", baz());
bar("", baz());
}
fn bar(arg: &str, baz: Baz) {