diff --git a/crates/ra_ide/src/syntax_highlighting.rs b/crates/ra_ide/src/syntax_highlighting.rs index b3236e8210..6067207d97 100644 --- a/crates/ra_ide/src/syntax_highlighting.rs +++ b/crates/ra_ide/src/syntax_highlighting.rs @@ -553,6 +553,7 @@ fn highlight_element( T![!] if element.parent().and_then(ast::MacroCall::cast).is_some() => { Highlight::new(HighlightTag::Macro) } + p if p.is_punct() => HighlightTag::Operator.into(), k if k.is_keyword() => { let h = Highlight::new(HighlightTag::Keyword); diff --git a/crates/ra_ide/test_data/highlight_doctest.html b/crates/ra_ide/test_data/highlight_doctest.html index a77fabb68d..8170ad8952 100644 --- a/crates/ra_ide/test_data/highlight_doctest.html +++ b/crates/ra_ide/test_data/highlight_doctest.html @@ -36,67 +36,67 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd .unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
/// ```
-/// let _ = "early doctests should not go boom";
-/// ```
-struct Foo {
- bar: bool,
-}
+/// let _ = "early doctests should not go boom";
+/// ```
+struct Foo {
+ bar: bool,
+}
-impl Foo {
- pub const bar: bool = true;
+impl Foo {
+ pub const bar: bool = true;
/// Constructs a new `Foo`.
///
/// # Examples
///
/// ```
- /// # #![allow(unused_mut)]
- /// let mut foo: Foo = Foo::new();
- /// ```
- pub const fn new() -> Foo {
- Foo { bar: true }
- }
+ /// # #![allow(unused_mut)]
+ /// let mut foo: Foo = Foo::new();
+ /// ```
+ pub const fn new() -> Foo {
+ Foo { bar: true }
+ }
/// `bar` method on `Foo`.
///
/// # Examples
///
/// ```
- /// use x::y;
+ /// use x::y;
///
- /// let foo = Foo::new();
+ /// let foo = Foo::new();
///
/// // calls bar on foo
- /// assert!(foo.bar());
+ /// assert!(foo.bar());
///
- /// let bar = foo.bar || Foo::bar;
+ /// let bar = foo.bar || Foo::bar;
///
/// /* multi-line
/// comment */
///
- /// let multi_line_string = "Foo
+ /// let multi_line_string = "Foo
/// bar
- /// ";
+ /// ";
///
/// ```
///
/// ```rust,no_run
- /// let foobar = Foo::new().bar();
- /// ```
+ /// let foobar = Foo::new().bar();
+ /// ```
///
/// ```sh
/// echo 1
/// ```
- pub fn foo(&self) -> bool {
+ pub fn foo(&self) -> bool {
true
- }
-}
+ }
+}
/// ```
-/// noop!(1);
-/// ```
-macro_rules! noop {
- ($expr:expr) => {
- $expr
- }
-}
\ No newline at end of file
+/// noop!(1);
+/// ```
+macro_rules! noop {
+ ($expr:expr) => {
+ $expr
+ }
+}
\ No newline at end of file
diff --git a/crates/ra_ide/test_data/highlight_injection.html b/crates/ra_ide/test_data/highlight_injection.html
index e15234936c..62cba023dd 100644
--- a/crates/ra_ide/test_data/highlight_injection.html
+++ b/crates/ra_ide/test_data/highlight_injection.html
@@ -35,14 +35,14 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
.unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
-fn fixture(ra_fixture: &str) {}
+fn fixture(ra_fixture: &str) {}
-fn main() {
- fixture(r#"
- trait Foo {
- fn foo() {
- println!("2 + 2 = {}", 4);
- }
- }"#
- );
-}
\ No newline at end of file
+fn main() {
+ fixture(r#"
+ trait Foo {
+ fn foo() {
+ println!("2 + 2 = {}", 4);
+ }
+ }"#
+ );
+}
\ No newline at end of file
diff --git a/crates/ra_ide/test_data/highlight_strings.html b/crates/ra_ide/test_data/highlight_strings.html
index 4238133661..1ee7bdee49 100644
--- a/crates/ra_ide/test_data/highlight_strings.html
+++ b/crates/ra_ide/test_data/highlight_strings.html
@@ -35,62 +35,62 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
.unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
-macro_rules! println {
- ($($arg:tt)*) => ({
- $crate::io::_print($crate::format_args_nl!($($arg)*));
- })
-}
+macro_rules! println {
+ ($($arg:tt)*) => ({
+ $crate::io::_print($crate::format_args_nl!($($arg)*));
+ })
+}
#[rustc_builtin_macro]
-macro_rules! format_args_nl {
- ($fmt:expr) => {{ /* compiler built-in */ }};
- ($fmt:expr, $($args:tt)*) => {{ /* compiler built-in */ }};
-}
+macro_rules! format_args_nl {
+ ($fmt:expr) => {{ /* compiler built-in */ }};
+ ($fmt:expr, $($args:tt)*) => {{ /* compiler built-in */ }};
+}
-fn main() {
+fn main() {
// from https://doc.rust-lang.org/std/fmt/index.html
- println!("Hello"); // => "Hello"
- println!("Hello, {}!", "world"); // => "Hello, world!"
- println!("The number is {}", 1); // => "The number is 1"
- println!("{:?}", (3, 4)); // => "(3, 4)"
- println!("{value}", value=4); // => "4"
- println!("{} {}", 1, 2); // => "1 2"
- println!("{:04}", 42); // => "0042" with leading zerosV
- println!("{1} {} {0} {}", 1, 2); // => "2 1 1 2"
- println!("{argument}", argument = "test"); // => "test"
- println!("{name} {}", 1, name = 2); // => "2 1"
- println!("{a} {c} {b}", a="a", b='b', c=3); // => "a 3 b"
- println!("{{{}}}", 2); // => "{2}"
- println!("Hello {:5}!", "x");
- println!("Hello {:1$}!", "x", 5);
- println!("Hello {1:0$}!", 5, "x");
- println!("Hello {:width$}!", "x", width = 5);
- println!("Hello {:<5}!", "x");
- println!("Hello {:-<5}!", "x");
- println!("Hello {:^5}!", "x");
- println!("Hello {:>5}!", "x");
- println!("Hello {:+}!", 5);
- println!("{:#x}!", 27);
- println!("Hello {:05}!", 5);
- println!("Hello {:05}!", -5);
- println!("{:#010x}!", 27);
- println!("Hello {0} is {1:.5}", "x", 0.01);
- println!("Hello {1} is {2:.0$}", 5, "x", 0.01);
- println!("Hello {0} is {2:.1$}", "x", 5, 0.01);
- println!("Hello {} is {:.*}", "x", 5, 0.01);
- println!("Hello {} is {2:.*}", "x", 5, 0.01);
- println!("Hello {} is {number:.prec$}", "x", prec = 5, number = 0.01);
- println!("{}, `{name:.*}` has 3 fractional digits", "Hello", 3, name=1234.56);
- println!("{}, `{name:.*}` has 3 characters", "Hello", 3, name="1234.56");
- println!("{}, `{name:>8.*}` has 3 right-aligned characters", "Hello", 3, name="1234.56");
- println!("Hello {{}}");
- println!("{{ Hello");
+ println!("Hello"); // => "Hello"
+ println!("Hello, {}!", "world"); // => "Hello, world!"
+ println!("The number is {}", 1); // => "The number is 1"
+ println!("{:?}", (3, 4)); // => "(3, 4)"
+ println!("{value}", value=4); // => "4"
+ println!("{} {}", 1, 2); // => "1 2"
+ println!("{:04}", 42); // => "0042" with leading zerosV
+ println!("{1} {} {0} {}", 1, 2); // => "2 1 1 2"
+ println!("{argument}", argument = "test"); // => "test"
+ println!("{name} {}", 1, name = 2); // => "2 1"
+ println!("{a} {c} {b}", a="a", b='b', c=3); // => "a 3 b"
+ println!("{{{}}}", 2); // => "{2}"
+ println!("Hello {:5}!", "x");
+ println!("Hello {:1$}!", "x", 5);
+ println!("Hello {1:0$}!", 5, "x");
+ println!("Hello {:width$}!", "x", width = 5);
+ println!("Hello {:<5}!", "x");
+ println!("Hello {:-<5}!", "x");
+ println!("Hello {:^5}!", "x");
+ println!("Hello {:>5}!", "x");
+ println!("Hello {:+}!", 5);
+ println!("{:#x}!", 27);
+ println!("Hello {:05}!", 5);
+ println!("Hello {:05}!", -5);
+ println!("{:#010x}!", 27);
+ println!("Hello {0} is {1:.5}", "x", 0.01);
+ println!("Hello {1} is {2:.0$}", 5, "x", 0.01);
+ println!("Hello {0} is {2:.1$}", "x", 5, 0.01);
+ println!("Hello {} is {:.*}", "x", 5, 0.01);
+ println!("Hello {} is {2:.*}", "x", 5, 0.01);
+ println!("Hello {} is {number:.prec$}", "x", prec = 5, number = 0.01);
+ println!("{}, `{name:.*}` has 3 fractional digits", "Hello", 3, name=1234.56);
+ println!("{}, `{name:.*}` has 3 characters", "Hello", 3, name="1234.56");
+ println!("{}, `{name:>8.*}` has 3 right-aligned characters", "Hello", 3, name="1234.56");
+ println!("Hello {{}}");
+ println!("{{ Hello");
- println!(r"Hello, {}!", "world");
+ println!(r"Hello, {}!", "world");
// escape sequences
- println!("Hello\nWorld");
- println!("\u{48}\x65\x6C\x6C\x6F World");
+ println!("Hello\nWorld");
+ println!("\u{48}\x65\x6C\x6C\x6F World");
- println!("{\x41}", A = 92);
- println!("{ничоси}", ничоси = 92);
-}
\ No newline at end of file
+ println!("{\x41}", A = 92);
+ println!("{ничоси}", ничоси = 92);
+}
\ No newline at end of file
diff --git a/crates/ra_ide/test_data/highlight_unsafe.html b/crates/ra_ide/test_data/highlight_unsafe.html
index 7585fbb426..f41d775e4e 100644
--- a/crates/ra_ide/test_data/highlight_unsafe.html
+++ b/crates/ra_ide/test_data/highlight_unsafe.html
@@ -35,20 +35,20 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
.unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
-unsafe fn unsafe_fn() {}
+unsafe fn unsafe_fn() {}
-struct HasUnsafeFn;
+struct HasUnsafeFn;
-impl HasUnsafeFn {
- unsafe fn unsafe_method(&self) {}
-}
+impl HasUnsafeFn {
+ unsafe fn unsafe_method(&self) {}
+}
-fn main() {
- let x = &5 as *const usize;
- unsafe {
- unsafe_fn();
- HasUnsafeFn.unsafe_method();
- let y = *(x);
- let z = -x;
- }
-}
\ No newline at end of file
+fn main() {
+ let x = &5 as *const usize;
+ unsafe {
+ unsafe_fn();
+ HasUnsafeFn.unsafe_method();
+ let y = *(x);
+ let z = -x;
+ }
+}
\ No newline at end of file
diff --git a/crates/ra_ide/test_data/highlighting.html b/crates/ra_ide/test_data/highlighting.html
index 553811a2f2..42ffa831b6 100644
--- a/crates/ra_ide/test_data/highlighting.html
+++ b/crates/ra_ide/test_data/highlighting.html
@@ -35,94 +35,94 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
.unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
-#[derive(Clone, Debug)]
-struct Foo {
- pub x: i32,
- pub y: i32,
-}
+#[derive(Clone, Debug)]
+struct Foo {
+ pub x: i32,
+ pub y: i32,
+}
-trait Bar {
- fn bar(&self) -> i32;
-}
+trait Bar {
+ fn bar(&self) -> i32;
+}
-impl Bar for Foo {
- fn bar(&self) -> i32 {
- self.x
- }
-}
+impl Bar for Foo {
+ fn bar(&self) -> i32 {
+ self.x
+ }
+}
-impl Foo {
- fn baz(mut self) -> i32 {
- self.x
- }
+impl Foo {
+ fn baz(mut self) -> i32 {
+ self.x
+ }
- fn qux(&mut self) {
- self.x = 0;
- }
-}
+ fn qux(&mut self) {
+ self.x = 0;
+ }
+}
-static mut STATIC_MUT: i32 = 0;
+static mut STATIC_MUT: i32 = 0;
-fn foo<'a, T>() -> T {
- foo::<'a, i32>()
-}
+fn foo<'a, T>() -> T {
+ foo::<'a, i32>()
+}
-macro_rules! def_fn {
- ($($tt:tt)*) => {$($tt)*}
-}
+macro_rules! def_fn {
+ ($($tt:tt)*) => {$($tt)*}
+}
-def_fn! {
- fn bar() -> u32 {
+def_fn! {
+ fn bar() -> u32 {
100
- }
-}
+ }
+}
-macro_rules! noop {
- ($expr:expr) => {
- $expr
- }
-}
+macro_rules! noop {
+ ($expr:expr) => {
+ $expr
+ }
+}
// comment
-fn main() {
- println!("Hello, {}!", 92);
+fn main() {
+ println!("Hello, {}!", 92);
- let mut vec = Vec::new();
- if true {
- let x = 92;
- vec.push(Foo { x, y: 1 });
- }
- unsafe {
- vec.set_len(0);
- STATIC_MUT = 1;
- }
+ let mut vec = Vec::new();
+ if true {
+ let x = 92;
+ vec.push(Foo { x, y: 1 });
+ }
+ unsafe {
+ vec.set_len(0);
+ STATIC_MUT = 1;
+ }
- for e in vec {
+ for e in vec {
// Do nothing
- }
+ }
- noop!(noop!(1));
+ noop!(noop!(1));
- let mut x = 42;
- let y = &mut x;
- let z = &y;
+ let mut x = 42;
+ let y = &mut x;
+ let z = &y;
- let Foo { x: z, y } = Foo { x: z, y };
+ let Foo { x: z, y } = Foo { x: z, y };
- y;
-}
+ y;
+}
-enum Option<T> {
- Some(T),
- None,
-}
-use Option::*;
+enum Option<T> {
+ Some(T),
+ None,
+}
+use Option::*;
-impl<T> Option<T> {
- fn and<U>(self, other: Option<U>) -> Option<(T, U)> {
- match other {
- None => unimplemented!(),
- Nope => Nope,
- }
- }
-}
\ No newline at end of file
+impl<T> Option<T> {
+ fn and<U>(self, other: Option<U>) -> Option<(T, U)> {
+ match other {
+ None => unimplemented!(),
+ Nope => Nope,
+ }
+ }
+}
\ No newline at end of file
diff --git a/crates/ra_ide/test_data/rainbow_highlighting.html b/crates/ra_ide/test_data/rainbow_highlighting.html
index 84a7686b27..47c7c7d63c 100644
--- a/crates/ra_ide/test_data/rainbow_highlighting.html
+++ b/crates/ra_ide/test_data/rainbow_highlighting.html
@@ -35,15 +35,15 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
.unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
-fn main() {
- let hello = "hello";
- let x = hello.to_string();
- let y = hello.to_string();
+fn main() {
+ let hello = "hello";
+ let x = hello.to_string();
+ let y = hello.to_string();
- let x = "other color please!";
- let y = x.to_string();
-}
+ let x = "other color please!";
+ let y = x.to_string();
+}
-fn bar() {
- let mut hello = "hello";
-}
\ No newline at end of file
+fn bar() {
+ let mut hello = "hello";
+}
\ No newline at end of file