mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-27 06:30:20 +00:00
Merge pull request #779 from DioxusLabs/jk/dioxus-fmt
fix: immediate exprs in autofmt
This commit is contained in:
commit
ab967bb3d7
4 changed files with 14 additions and 8 deletions
|
@ -16,11 +16,8 @@ impl Writer<'_> {
|
|||
|
||||
// if the expr is on one line, just write it directly
|
||||
if start.line == end.line {
|
||||
write!(
|
||||
self.out,
|
||||
"{}",
|
||||
&self.src[start.line - 1][start.column - 1..end.column].trim()
|
||||
)?;
|
||||
let row = &self.src[start.line - 1][start.column..end.column].trim();
|
||||
write!(self.out, "{}", row)?;
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::writer::*;
|
||||
use collect_macros::byte_offset;
|
||||
use dioxus_rsx::CallBody;
|
||||
use dioxus_rsx::{BodyNode, CallBody};
|
||||
use proc_macro2::LineColumn;
|
||||
use syn::{ExprMacro, MacroDelimiter};
|
||||
|
||||
|
@ -105,7 +105,11 @@ pub fn fmt_file(contents: &str) -> Vec<FormattedBlock> {
|
|||
let start = byte_offset(contents, span.start()) + 1;
|
||||
let end = byte_offset(contents, span.end()) - 1;
|
||||
|
||||
if formatted.len() <= 80 && !formatted.contains('\n') {
|
||||
// Rustfmt will remove the space between the macro and the opening paren if the macro is a single expression
|
||||
let body_is_solo_expr =
|
||||
body.roots.len() == 1 && matches!(body.roots[0], BodyNode::RawExpr(_));
|
||||
|
||||
if formatted.len() <= 80 && !formatted.contains('\n') && !body_is_solo_expr {
|
||||
formatted = format!(" {} ", formatted);
|
||||
}
|
||||
|
||||
|
|
|
@ -37,5 +37,6 @@ twoway![
|
|||
long_exprs,
|
||||
ifchain_forloop,
|
||||
t2,
|
||||
reallylong
|
||||
reallylong,
|
||||
immediate_expr
|
||||
];
|
||||
|
|
4
packages/autofmt/tests/samples/immediate_expr.rsx
Normal file
4
packages/autofmt/tests/samples/immediate_expr.rsx
Normal file
|
@ -0,0 +1,4 @@
|
|||
fn it_works() {
|
||||
cx.render(rsx!(()))
|
||||
}
|
||||
|
Loading…
Reference in a new issue