mirror of
https://github.com/typst/typst
synced 2025-05-13 20:46:23 +08:00
Simplify only_in_mode
to only_in_markup
This commit is contained in:
parent
a5a6c2d83f
commit
fcce3df093
@ -4,8 +4,7 @@ use std::sync::Arc;
|
||||
use crate::syntax::{Green, GreenNode, NodeKind};
|
||||
|
||||
use super::{
|
||||
is_newline, parse, reparse_code_block, reparse_content_block,
|
||||
reparse_markup_elements, TokenMode,
|
||||
is_newline, parse, reparse_code_block, reparse_content_block, reparse_markup_elements,
|
||||
};
|
||||
|
||||
/// Refresh the given green node with as little parsing as possible.
|
||||
@ -49,7 +48,7 @@ impl Reparser<'_> {
|
||||
mut offset: usize,
|
||||
outermost: bool,
|
||||
) -> Option<Range<usize>> {
|
||||
let child_mode = green.kind().only_in_mode().unwrap_or(TokenMode::Code);
|
||||
let is_markup = matches!(green.kind(), NodeKind::Markup(_));
|
||||
let original_count = green.children().len();
|
||||
let original_offset = offset;
|
||||
|
||||
@ -75,9 +74,7 @@ impl Reparser<'_> {
|
||||
{
|
||||
// In Markup mode, we want to consider a non-whitespace
|
||||
// neighbor if the edit is on the node boundary.
|
||||
search = if child_span.end == self.replaced.end
|
||||
&& child_mode == TokenMode::Markup
|
||||
{
|
||||
search = if is_markup && child_span.end == self.replaced.end {
|
||||
SearchState::RequireNonTrivia(pos)
|
||||
} else {
|
||||
SearchState::Contained(pos)
|
||||
@ -180,7 +177,7 @@ impl Reparser<'_> {
|
||||
|
||||
if start.offset == self.replaced.start
|
||||
|| ahead_kind.only_at_start()
|
||||
|| ahead_kind.only_in_mode() != Some(TokenMode::Markup)
|
||||
|| !ahead_kind.only_in_markup()
|
||||
{
|
||||
start = ahead;
|
||||
at_start = ahead_at_start;
|
||||
|
@ -14,7 +14,6 @@ pub use span::*;
|
||||
|
||||
use self::ast::{MathNode, RawNode, TypedNode, Unit};
|
||||
use crate::diag::Error;
|
||||
use crate::parse::TokenMode;
|
||||
use crate::source::SourceId;
|
||||
use crate::util::EcoString;
|
||||
|
||||
@ -809,47 +808,28 @@ impl NodeKind {
|
||||
}
|
||||
}
|
||||
|
||||
/// Which mode this node can appear in, in both if `None`.
|
||||
pub fn only_in_mode(&self) -> Option<TokenMode> {
|
||||
match self {
|
||||
Self::Markup(_)
|
||||
| Self::Linebreak { .. }
|
||||
| Self::Text(_)
|
||||
| Self::NonBreakingSpace
|
||||
| Self::EnDash
|
||||
| Self::EmDash
|
||||
| Self::Ellipsis
|
||||
| Self::Quote { .. }
|
||||
| Self::Escape(_)
|
||||
| Self::Strong
|
||||
| Self::Emph
|
||||
| Self::Heading
|
||||
| Self::Enum
|
||||
| Self::EnumNumbering(_)
|
||||
| Self::List
|
||||
| Self::Raw(_)
|
||||
| Self::Math(_) => Some(TokenMode::Markup),
|
||||
Self::ContentBlock
|
||||
| Self::Space(_)
|
||||
| Self::Ident(_)
|
||||
| Self::CodeBlock
|
||||
| Self::LetExpr
|
||||
| Self::SetExpr
|
||||
| Self::ShowExpr
|
||||
| Self::WrapExpr
|
||||
| Self::IfExpr
|
||||
| Self::WhileExpr
|
||||
| Self::ForExpr
|
||||
| Self::ImportExpr
|
||||
| Self::FuncCall
|
||||
| Self::IncludeExpr
|
||||
| Self::LineComment
|
||||
| Self::BlockComment
|
||||
| Self::Error(_, _)
|
||||
| Self::Minus
|
||||
| Self::Eq => None,
|
||||
_ => Some(TokenMode::Code),
|
||||
}
|
||||
/// Whether this is a node that only appears in markup.
|
||||
pub fn only_in_markup(&self) -> bool {
|
||||
matches!(
|
||||
self,
|
||||
Self::Text(_)
|
||||
| Self::Linebreak { .. }
|
||||
| Self::NonBreakingSpace
|
||||
| Self::Shy
|
||||
| Self::EnDash
|
||||
| Self::EmDash
|
||||
| Self::Ellipsis
|
||||
| Self::Quote { .. }
|
||||
| Self::Escape(_)
|
||||
| Self::Strong
|
||||
| Self::Emph
|
||||
| Self::Raw(_)
|
||||
| Self::Math(_)
|
||||
| Self::Heading
|
||||
| Self::List
|
||||
| Self::Enum
|
||||
| Self::EnumNumbering(_)
|
||||
)
|
||||
}
|
||||
|
||||
/// A human-readable name for the kind.
|
||||
|
Loading…
x
Reference in New Issue
Block a user