mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-15 01:17:27 +00:00
Shorten names
This commit is contained in:
parent
c6150a3706
commit
3dfa2768ac
7 changed files with 50 additions and 67 deletions
|
@ -77,7 +77,7 @@ pub use crate::{
|
|||
runnables::{Runnable, RunnableKind, TestId},
|
||||
syntax_highlighting::{
|
||||
tags::{Highlight, HlMod, HlMods, HlTag},
|
||||
HighlightedRange,
|
||||
HlRange,
|
||||
},
|
||||
};
|
||||
pub use assists::{Assist, AssistConfig, AssistId, AssistKind, InsertUseConfig};
|
||||
|
@ -449,12 +449,12 @@ impl Analysis {
|
|||
}
|
||||
|
||||
/// Computes syntax highlighting for the given file
|
||||
pub fn highlight(&self, file_id: FileId) -> Cancelable<Vec<HighlightedRange>> {
|
||||
pub fn highlight(&self, file_id: FileId) -> Cancelable<Vec<HlRange>> {
|
||||
self.with_db(|db| syntax_highlighting::highlight(db, file_id, None, false))
|
||||
}
|
||||
|
||||
/// Computes syntax highlighting for the given file range.
|
||||
pub fn highlight_range(&self, frange: FileRange) -> Cancelable<Vec<HighlightedRange>> {
|
||||
pub fn highlight_range(&self, frange: FileRange) -> Cancelable<Vec<HlRange>> {
|
||||
self.with_db(|db| {
|
||||
syntax_highlighting::highlight(db, frange.file_id, Some(frange.range), false)
|
||||
})
|
||||
|
|
|
@ -34,7 +34,7 @@ use crate::{
|
|||
pub(crate) use html::highlight_as_html;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct HighlightedRange {
|
||||
pub struct HlRange {
|
||||
pub range: TextRange,
|
||||
pub highlight: Highlight,
|
||||
pub binding_hash: Option<u64>,
|
||||
|
@ -54,7 +54,7 @@ pub(crate) fn highlight(
|
|||
file_id: FileId,
|
||||
range_to_highlight: Option<TextRange>,
|
||||
syntactic_name_ref_highlighting: bool,
|
||||
) -> Vec<HighlightedRange> {
|
||||
) -> Vec<HlRange> {
|
||||
let _p = profile::span("highlight");
|
||||
let sema = Semantics::new(db);
|
||||
|
||||
|
@ -98,7 +98,7 @@ pub(crate) fn highlight(
|
|||
match event.clone().map(|it| it.into_node().and_then(ast::MacroCall::cast)) {
|
||||
WalkEvent::Enter(Some(mc)) => {
|
||||
if let Some(range) = macro_call_range(&mc) {
|
||||
stack.add(HighlightedRange {
|
||||
stack.add(HlRange {
|
||||
range,
|
||||
highlight: HlTag::Symbol(SymbolKind::Macro).into(),
|
||||
binding_hash: None,
|
||||
|
@ -198,7 +198,7 @@ pub(crate) fn highlight(
|
|||
}
|
||||
|
||||
if macro_rules_highlighter.highlight(element_to_highlight.clone()).is_none() {
|
||||
stack.add(HighlightedRange { range, highlight, binding_hash });
|
||||
stack.add(HlRange { range, highlight, binding_hash });
|
||||
}
|
||||
|
||||
if let Some(string) =
|
||||
|
@ -209,7 +209,7 @@ pub(crate) fn highlight(
|
|||
if let Some(char_ranges) = string.char_ranges() {
|
||||
for (piece_range, _) in char_ranges.iter().filter(|(_, char)| char.is_ok()) {
|
||||
if string.text()[piece_range.start().into()..].starts_with('\\') {
|
||||
stack.add(HighlightedRange {
|
||||
stack.add(HlRange {
|
||||
range: piece_range + range.start(),
|
||||
highlight: HlTag::EscapeSequence.into(),
|
||||
binding_hash: None,
|
||||
|
|
|
@ -4,7 +4,7 @@ use syntax::{
|
|||
AstNode, AstToken, SyntaxElement, SyntaxKind, SyntaxNode, TextRange,
|
||||
};
|
||||
|
||||
use crate::{HighlightedRange, HlTag, SymbolKind};
|
||||
use crate::{HlRange, HlTag, SymbolKind};
|
||||
|
||||
use super::highlights::Highlights;
|
||||
|
||||
|
@ -46,7 +46,7 @@ impl FormatStringHighlighter {
|
|||
if self.format_string.as_ref() == Some(&SyntaxElement::from(string.syntax().clone())) {
|
||||
string.lex_format_specifier(|piece_range, kind| {
|
||||
if let Some(highlight) = highlight_format_specifier(kind) {
|
||||
stack.add(HighlightedRange {
|
||||
stack.add(HlRange {
|
||||
range: piece_range + range.start(),
|
||||
highlight: highlight.into(),
|
||||
binding_hash: None,
|
||||
|
|
|
@ -4,33 +4,29 @@ use std::{cmp::Ordering, iter};
|
|||
use stdx::equal_range_by;
|
||||
use syntax::TextRange;
|
||||
|
||||
use crate::{HighlightedRange, HlTag};
|
||||
use crate::{HlRange, HlTag};
|
||||
|
||||
pub(super) struct Highlights {
|
||||
root: Node,
|
||||
}
|
||||
|
||||
struct Node {
|
||||
highlighted_range: HighlightedRange,
|
||||
hl_range: HlRange,
|
||||
nested: Vec<Node>,
|
||||
}
|
||||
|
||||
impl Highlights {
|
||||
pub(super) fn new(range: TextRange) -> Highlights {
|
||||
Highlights {
|
||||
root: Node::new(HighlightedRange {
|
||||
range,
|
||||
highlight: HlTag::None.into(),
|
||||
binding_hash: None,
|
||||
}),
|
||||
root: Node::new(HlRange { range, highlight: HlTag::None.into(), binding_hash: None }),
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn add(&mut self, highlighted_range: HighlightedRange) {
|
||||
self.root.add(highlighted_range);
|
||||
pub(super) fn add(&mut self, hl_range: HlRange) {
|
||||
self.root.add(hl_range);
|
||||
}
|
||||
|
||||
pub(super) fn to_vec(self) -> Vec<HighlightedRange> {
|
||||
pub(super) fn to_vec(self) -> Vec<HlRange> {
|
||||
let mut res = Vec::new();
|
||||
self.root.flatten(&mut res);
|
||||
res
|
||||
|
@ -38,59 +34,54 @@ impl Highlights {
|
|||
}
|
||||
|
||||
impl Node {
|
||||
fn new(highlighted_range: HighlightedRange) -> Node {
|
||||
Node { highlighted_range, nested: Vec::new() }
|
||||
fn new(hl_range: HlRange) -> Node {
|
||||
Node { hl_range, nested: Vec::new() }
|
||||
}
|
||||
|
||||
fn add(&mut self, highlighted_range: HighlightedRange) {
|
||||
assert!(self.highlighted_range.range.contains_range(highlighted_range.range));
|
||||
fn add(&mut self, hl_range: HlRange) {
|
||||
assert!(self.hl_range.range.contains_range(hl_range.range));
|
||||
|
||||
// Fast path
|
||||
if let Some(last) = self.nested.last_mut() {
|
||||
if last.highlighted_range.range.contains_range(highlighted_range.range) {
|
||||
return last.add(highlighted_range);
|
||||
if last.hl_range.range.contains_range(hl_range.range) {
|
||||
return last.add(hl_range);
|
||||
}
|
||||
if last.highlighted_range.range.end() <= highlighted_range.range.start() {
|
||||
return self.nested.push(Node::new(highlighted_range));
|
||||
if last.hl_range.range.end() <= hl_range.range.start() {
|
||||
return self.nested.push(Node::new(hl_range));
|
||||
}
|
||||
}
|
||||
|
||||
let (start, len) = equal_range_by(&self.nested, |n| {
|
||||
ordering(n.highlighted_range.range, highlighted_range.range)
|
||||
});
|
||||
let (start, len) =
|
||||
equal_range_by(&self.nested, |n| ordering(n.hl_range.range, hl_range.range));
|
||||
|
||||
if len == 1
|
||||
&& self.nested[start].highlighted_range.range.contains_range(highlighted_range.range)
|
||||
{
|
||||
return self.nested[start].add(highlighted_range);
|
||||
if len == 1 && self.nested[start].hl_range.range.contains_range(hl_range.range) {
|
||||
return self.nested[start].add(hl_range);
|
||||
}
|
||||
|
||||
let nested = self
|
||||
.nested
|
||||
.splice(start..start + len, iter::once(Node::new(highlighted_range)))
|
||||
.splice(start..start + len, iter::once(Node::new(hl_range)))
|
||||
.collect::<Vec<_>>();
|
||||
self.nested[start].nested = nested;
|
||||
}
|
||||
|
||||
fn flatten(&self, acc: &mut Vec<HighlightedRange>) {
|
||||
let mut start = self.highlighted_range.range.start();
|
||||
fn flatten(&self, acc: &mut Vec<HlRange>) {
|
||||
let mut start = self.hl_range.range.start();
|
||||
let mut nested = self.nested.iter();
|
||||
loop {
|
||||
let next = nested.next();
|
||||
let end = next.map_or(self.highlighted_range.range.end(), |it| {
|
||||
it.highlighted_range.range.start()
|
||||
});
|
||||
let end = next.map_or(self.hl_range.range.end(), |it| it.hl_range.range.start());
|
||||
if start < end {
|
||||
acc.push(HighlightedRange {
|
||||
acc.push(HlRange {
|
||||
range: TextRange::new(start, end),
|
||||
highlight: self.highlighted_range.highlight,
|
||||
binding_hash: self.highlighted_range.binding_hash,
|
||||
highlight: self.hl_range.highlight,
|
||||
binding_hash: self.hl_range.binding_hash,
|
||||
});
|
||||
}
|
||||
start = match next {
|
||||
Some(child) => {
|
||||
child.flatten(acc);
|
||||
child.highlighted_range.range.end()
|
||||
child.hl_range.range.end()
|
||||
}
|
||||
None => break,
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ use ide_db::call_info::ActiveParameter;
|
|||
use itertools::Itertools;
|
||||
use syntax::{ast, AstToken, SyntaxNode, SyntaxToken, TextRange, TextSize};
|
||||
|
||||
use crate::{Analysis, HighlightedRange, HlMod, HlTag, RootDatabase};
|
||||
use crate::{Analysis, HlMod, HlRange, HlTag, RootDatabase};
|
||||
|
||||
use super::{highlights::Highlights, injector::Injector};
|
||||
|
||||
|
@ -26,11 +26,7 @@ pub(super) fn highlight_injection(
|
|||
let (analysis, tmp_file_id) = Analysis::from_single_file(marker_info.cleaned_text.clone());
|
||||
|
||||
if let Some(range) = literal.open_quote_text_range() {
|
||||
acc.add(HighlightedRange {
|
||||
range,
|
||||
highlight: HlTag::StringLiteral.into(),
|
||||
binding_hash: None,
|
||||
})
|
||||
acc.add(HlRange { range, highlight: HlTag::StringLiteral.into(), binding_hash: None })
|
||||
}
|
||||
|
||||
for mut h in analysis.highlight(tmp_file_id).unwrap() {
|
||||
|
@ -42,11 +38,7 @@ pub(super) fn highlight_injection(
|
|||
}
|
||||
|
||||
if let Some(range) = literal.close_quote_text_range() {
|
||||
acc.add(HighlightedRange {
|
||||
range,
|
||||
highlight: HlTag::StringLiteral.into(),
|
||||
binding_hash: None,
|
||||
})
|
||||
acc.add(HlRange { range, highlight: HlTag::StringLiteral.into(), binding_hash: None })
|
||||
}
|
||||
|
||||
Some(())
|
||||
|
@ -116,7 +108,7 @@ const RUSTDOC_FENCE_TOKENS: &[&'static str] = &[
|
|||
/// Lastly, a vector of new comment highlight ranges (spanning only the
|
||||
/// comment prefix) is returned which is used in the syntax highlighting
|
||||
/// injection to replace the previous (line-spanning) comment ranges.
|
||||
pub(super) fn extract_doc_comments(node: &SyntaxNode) -> Option<(Vec<HighlightedRange>, Injector)> {
|
||||
pub(super) fn extract_doc_comments(node: &SyntaxNode) -> Option<(Vec<HlRange>, Injector)> {
|
||||
let mut inj = Injector::default();
|
||||
// wrap the doctest into function body to get correct syntax highlighting
|
||||
let prefix = "fn doctest() {\n";
|
||||
|
@ -166,7 +158,7 @@ pub(super) fn extract_doc_comments(node: &SyntaxNode) -> Option<(Vec<Highlighted
|
|||
pos
|
||||
};
|
||||
|
||||
new_comments.push(HighlightedRange {
|
||||
new_comments.push(HlRange {
|
||||
range: TextRange::new(
|
||||
range.start(),
|
||||
range.start() + TextSize::try_from(pos).unwrap(),
|
||||
|
@ -196,7 +188,7 @@ pub(super) fn extract_doc_comments(node: &SyntaxNode) -> Option<(Vec<Highlighted
|
|||
|
||||
/// Injection of syntax highlighting of doctests.
|
||||
pub(super) fn highlight_doc_comment(
|
||||
new_comments: Vec<HighlightedRange>,
|
||||
new_comments: Vec<HlRange>,
|
||||
inj: Injector,
|
||||
stack: &mut Highlights,
|
||||
) {
|
||||
|
@ -207,7 +199,7 @@ pub(super) fn highlight_doc_comment(
|
|||
|
||||
for h in analysis.with_db(|db| super::highlight(db, tmp_file_id, None, true)).unwrap() {
|
||||
for r in inj.map_range_up(h.range) {
|
||||
stack.add(HighlightedRange {
|
||||
stack.add(HlRange {
|
||||
range: r,
|
||||
highlight: h.highlight | HlMod::Injected,
|
||||
binding_hash: h.binding_hash,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//! Syntax highlighting for macro_rules!.
|
||||
use syntax::{SyntaxElement, SyntaxKind, SyntaxToken, TextRange, T};
|
||||
|
||||
use crate::{HighlightedRange, HlTag};
|
||||
use crate::{HlRange, HlTag};
|
||||
|
||||
#[derive(Default)]
|
||||
pub(super) struct MacroRulesHighlighter {
|
||||
|
@ -19,11 +19,11 @@ impl MacroRulesHighlighter {
|
|||
}
|
||||
}
|
||||
|
||||
pub(super) fn highlight(&self, element: SyntaxElement) -> Option<HighlightedRange> {
|
||||
pub(super) fn highlight(&self, element: SyntaxElement) -> Option<HlRange> {
|
||||
if let Some(state) = self.state.as_ref() {
|
||||
if matches!(state.rule_state, RuleState::Matcher | RuleState::Expander) {
|
||||
if let Some(range) = is_metavariable(element) {
|
||||
return Some(HighlightedRange {
|
||||
return Some(HlRange {
|
||||
range,
|
||||
highlight: HlTag::UnresolvedReference.into(),
|
||||
binding_hash: None,
|
||||
|
|
|
@ -6,9 +6,9 @@ use std::{
|
|||
|
||||
use ide::{
|
||||
Assist, AssistKind, CallInfo, CompletionItem, CompletionItemKind, Documentation, FileId,
|
||||
FileRange, FileSystemEdit, Fold, FoldKind, Highlight, HighlightedRange, HlMod, HlTag, Indel,
|
||||
InlayHint, InlayKind, InsertTextFormat, LineIndex, Markup, NavigationTarget, ReferenceAccess,
|
||||
Runnable, Severity, SourceChange, SourceFileEdit, SymbolKind, TextEdit, TextRange, TextSize,
|
||||
FileRange, FileSystemEdit, Fold, FoldKind, Highlight, HlMod, HlRange, HlTag, Indel, InlayHint,
|
||||
InlayKind, InsertTextFormat, LineIndex, Markup, NavigationTarget, ReferenceAccess, Runnable,
|
||||
Severity, SourceChange, SourceFileEdit, SymbolKind, TextEdit, TextRange, TextSize,
|
||||
};
|
||||
use itertools::Itertools;
|
||||
|
||||
|
@ -336,7 +336,7 @@ static TOKEN_RESULT_COUNTER: AtomicU32 = AtomicU32::new(1);
|
|||
pub(crate) fn semantic_tokens(
|
||||
text: &str,
|
||||
line_index: &LineIndex,
|
||||
highlights: Vec<HighlightedRange>,
|
||||
highlights: Vec<HlRange>,
|
||||
) -> lsp_types::SemanticTokens {
|
||||
let id = TOKEN_RESULT_COUNTER.fetch_add(1, Ordering::SeqCst).to_string();
|
||||
let mut builder = semantic_tokens::SemanticTokensBuilder::new(id);
|
||||
|
|
Loading…
Reference in a new issue