summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-05-19 13:56:14 +0200
committerLaurenz <laurmaedje@gmail.com>2022-05-19 13:56:14 +0200
commitfcce3df093d0141c677608a74c25ea0d413c5050 (patch)
tree4f3df77fc073500e0042de6cbfc2aed2b3574921 /src
parenta5a6c2d83fb40c13f3fd781ec1fb7ed6c1ec5c09 (diff)
Simplify `only_in_mode` to `only_in_markup`
Diffstat (limited to 'src')
-rw-r--r--src/parse/incremental.rs11
-rw-r--r--src/syntax/mod.rs64
2 files changed, 26 insertions, 49 deletions
diff --git a/src/parse/incremental.rs b/src/parse/incremental.rs
index 38938c4b..26f97c52 100644
--- a/src/parse/incremental.rs
+++ b/src/parse/incremental.rs
@@ -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;
diff --git a/src/syntax/mod.rs b/src/syntax/mod.rs
index 29e2718b..69bcb0a0 100644
--- a/src/syntax/mod.rs
+++ b/src/syntax/mod.rs
@@ -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.