mirror of https://github.com/helix-editor/helix
Merge d4cd336b44
into 1315b7e2b1
commit
c008ac0c8e
|
@ -558,8 +558,9 @@ impl EditorView {
|
||||||
Some(OverlayHighlights::Homogeneous { highlight, ranges })
|
Some(OverlayHighlights::Homogeneous { highlight, ranges })
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Render bufferline at the top
|
/// Render bufferline at the top. Returns height of the bufferline so
|
||||||
pub fn render_bufferline(editor: &Editor, viewport: Rect, surface: &mut Surface) {
|
/// that the editor area can be clipped accordingly.
|
||||||
|
pub fn render_bufferline(editor: &Editor, viewport: Rect, surface: &mut Surface) -> u16 {
|
||||||
let scratch = PathBuf::from(SCRATCH_BUFFER_NAME); // default filename to use for scratch buffer
|
let scratch = PathBuf::from(SCRATCH_BUFFER_NAME); // default filename to use for scratch buffer
|
||||||
surface.clear_with(
|
surface.clear_with(
|
||||||
viewport,
|
viewport,
|
||||||
|
@ -582,6 +583,8 @@ impl EditorView {
|
||||||
let mut x = viewport.x;
|
let mut x = viewport.x;
|
||||||
let current_doc = view!(editor).doc;
|
let current_doc = view!(editor).doc;
|
||||||
|
|
||||||
|
let mut y = viewport.y;
|
||||||
|
|
||||||
for doc in editor.documents() {
|
for doc in editor.documents() {
|
||||||
let fname = doc
|
let fname = doc
|
||||||
.path()
|
.path()
|
||||||
|
@ -601,14 +604,14 @@ impl EditorView {
|
||||||
let used_width = viewport.x.saturating_sub(x);
|
let used_width = viewport.x.saturating_sub(x);
|
||||||
let rem_width = surface.area.width.saturating_sub(used_width);
|
let rem_width = surface.area.width.saturating_sub(used_width);
|
||||||
|
|
||||||
x = surface
|
if x + text.len() as u16 >= surface.area.right() {
|
||||||
.set_stringn(x, viewport.y, text, rem_width as usize, style)
|
x = 0;
|
||||||
.0;
|
y += 1;
|
||||||
|
}
|
||||||
|
|
||||||
if x >= surface.area.right() {
|
x = surface.set_stringn(x, y, text, rem_width as usize, style).0;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
y + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn render_gutter<'d>(
|
pub fn render_gutter<'d>(
|
||||||
|
@ -1501,19 +1504,20 @@ impl Component for EditorView {
|
||||||
_ => false,
|
_ => false,
|
||||||
};
|
};
|
||||||
|
|
||||||
// -1 for commandline and -1 for bufferline
|
// -1 for commandline
|
||||||
let mut editor_area = area.clip_bottom(1);
|
let mut editor_area = area.clip_bottom(1);
|
||||||
if use_bufferline {
|
if use_bufferline {
|
||||||
editor_area = editor_area.clip_top(1);
|
// -1 or more for the bufferline
|
||||||
|
editor_area = editor_area.clip_top(Self::render_bufferline(
|
||||||
|
cx.editor,
|
||||||
|
area.with_height(1),
|
||||||
|
surface,
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the terminal size suddenly changed, we need to trigger a resize
|
// if the terminal size suddenly changed, we need to trigger a resize
|
||||||
cx.editor.resize(editor_area);
|
cx.editor.resize(editor_area);
|
||||||
|
|
||||||
if use_bufferline {
|
|
||||||
Self::render_bufferline(cx.editor, area.with_height(1), surface);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (view, is_focused) in cx.editor.tree.views() {
|
for (view, is_focused) in cx.editor.tree.views() {
|
||||||
let doc = cx.editor.document(view.doc).unwrap();
|
let doc = cx.editor.document(view.doc).unwrap();
|
||||||
self.render_view(cx.editor, doc, view, area, surface, is_focused);
|
self.render_view(cx.editor, doc, view, area, surface, is_focused);
|
||||||
|
|
Loading…
Reference in New Issue