Make folds tab aware
This commit is contained in:
parent
c39b4ac229
commit
5a3d5dff42
2 changed files with 20 additions and 13 deletions
|
@ -24,6 +24,8 @@ pub use block_map::{
|
||||||
BlockDisposition, BlockId, BlockProperties, BlockStyle, RenderBlock, TransformBlock,
|
BlockDisposition, BlockId, BlockProperties, BlockStyle, RenderBlock, TransformBlock,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use self::tab_map::TabSnapshot;
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||||
pub enum FoldStatus {
|
pub enum FoldStatus {
|
||||||
Folded,
|
Folded,
|
||||||
|
@ -249,7 +251,7 @@ pub struct DisplaySnapshot {
|
||||||
folds_snapshot: fold_map::FoldSnapshot,
|
folds_snapshot: fold_map::FoldSnapshot,
|
||||||
tabs_snapshot: tab_map::TabSnapshot,
|
tabs_snapshot: tab_map::TabSnapshot,
|
||||||
wraps_snapshot: wrap_map::WrapSnapshot,
|
wraps_snapshot: wrap_map::WrapSnapshot,
|
||||||
pub blocks_snapshot: block_map::BlockSnapshot,
|
blocks_snapshot: block_map::BlockSnapshot,
|
||||||
text_highlights: TextHighlights,
|
text_highlights: TextHighlights,
|
||||||
clip_at_line_ends: bool,
|
clip_at_line_ends: bool,
|
||||||
}
|
}
|
||||||
|
@ -599,17 +601,22 @@ impl DisplaySnapshot {
|
||||||
let chars = buffer.chars_at(Point::new(range.start.row, 0));
|
let chars = buffer.chars_at(Point::new(range.start.row, 0));
|
||||||
|
|
||||||
let mut is_blank = false;
|
let mut is_blank = false;
|
||||||
let mut indent_size = 0;
|
let indent_size = TabSnapshot::expand_tabs(
|
||||||
for c in chars {
|
chars.take_while(|c| {
|
||||||
// TODO: Handle tab expansion here
|
if *c == ' ' || *c == '\t' {
|
||||||
if c == ' ' {
|
true
|
||||||
indent_size += 1;
|
} else {
|
||||||
} else {
|
if *c == '\n' {
|
||||||
is_blank = c == '\n';
|
is_blank = true;
|
||||||
break;
|
}
|
||||||
}
|
false
|
||||||
}
|
}
|
||||||
(indent_size, is_blank)
|
}),
|
||||||
|
buffer.line_len(buffer_row) as usize, // Never collapse
|
||||||
|
self.tabs_snapshot.tab_size,
|
||||||
|
);
|
||||||
|
|
||||||
|
(indent_size as u32, is_blank)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn line_len(&self, row: u32) -> u32 {
|
pub fn line_len(&self, row: u32) -> u32 {
|
||||||
|
|
|
@ -679,7 +679,7 @@ fn test_fold(cx: &mut gpui::MutableAppContext) {
|
||||||
"
|
"
|
||||||
.unindent(),
|
.unindent(),
|
||||||
);
|
);
|
||||||
dbg!("SECOND FOLD");
|
|
||||||
view.fold(&Fold, cx);
|
view.fold(&Fold, cx);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
view.display_text(cx),
|
view.display_text(cx),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue