Skip to content

Commit

Permalink
patchy: auto-merge pull request helix-editor#8908
Browse files Browse the repository at this point in the history
`patchy` is a tool which makes it easy to declaratively manage personal forks by automatically merging pull requests.

Check it out here: https://github.com/NikitaRevenco/patchy
  • Loading branch information
nyawox committed Jan 4, 2025
2 parents 6641638 + 4e18938 commit 40b5334
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 10 deletions.
55 changes: 45 additions & 10 deletions helix-term/src/ui/editor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ use helix_core::{
use helix_view::{
annotations::diagnostics::DiagnosticFilter,
document::{Mode, SavePoint, SCRATCH_BUFFER_NAME},
editor::{CompleteAction, CursorShapeConfig},
editor::{CompleteAction, CursorShapeConfig, StatusLineRenderConfig},
graphics::{Color, CursorKind, Modifier, Rect, Style},
input::{KeyEvent, MouseButton, MouseEvent, MouseEventKind},
keyboard::{KeyCode, KeyModifiers},
Expand Down Expand Up @@ -84,7 +84,10 @@ impl EditorView {
is_focused: bool,
) {
let inner = view.inner_area(doc);
let area = view.area;
let area = match editor.config().statusline.render {
StatusLineRenderConfig::Single => view.area.clip_bottom(1),
StatusLineRenderConfig::PerView => view.area,
};
let theme = &editor.theme;
let config = editor.config();

Expand Down Expand Up @@ -219,7 +222,6 @@ impl EditorView {
for y in area.top()..area.bottom() {
surface[(x, y)]
.set_symbol(tui::symbols::line::VERTICAL)
//.set_symbol(" ")
.set_style(border_style);
}
}
Expand All @@ -230,15 +232,31 @@ impl EditorView {
Self::render_diagnostics(doc, view, inner, surface, theme);
}

let statusline_area = view
.area
.clip_top(view.area.height.saturating_sub(1))
.clip_bottom(1); // -1 from bottom to remove commandline
match editor.config().statusline.render {
StatusLineRenderConfig::PerView => {
let statusline_area = view
.area
.clip_top(view.area.height.saturating_sub(1))
.clip_bottom(1); // -1 from bottom to remove commandline

let mut context =
statusline::RenderContext::new(editor, doc, view, is_focused, &self.spinners);
let mut context =
statusline::RenderContext::new(editor, doc, view, is_focused, &self.spinners);

statusline::render(&mut context, statusline_area, surface);
statusline::render(&mut context, statusline_area, surface);
}
StatusLineRenderConfig::Single => {
// -1 for command line
if viewport.bottom() - 1 != view.area.bottom() {
let y = area.bottom();
let border_style = theme.get("ui.window");
for x in area.left()..area.right() {
surface[(x, y)]
.set_symbol(tui::symbols::line::HORIZONTAL)
.set_style(border_style);
}
}
}
};
}

pub fn render_rulers(
Expand Down Expand Up @@ -1562,6 +1580,23 @@ impl Component for EditorView {
self.render_view(cx.editor, doc, view, area, surface, is_focused);
}

if config.statusline.render == StatusLineRenderConfig::Single {
if let Some((view, is_focused)) =
cx.editor.tree.views().find(|&(_, is_focused)| is_focused)
{
let doc = cx.editor.document(view.doc).unwrap();
let mut context = statusline::RenderContext::new(
cx.editor,
doc,
view,
is_focused,
&self.spinners,
);
let statusline_area = area.clip_top(area.height.saturating_sub(2)).clip_bottom(1); // -1 from bottom to remove commandline
statusline::render(&mut context, statusline_area, surface);
}
}

if config.auto_info {
if let Some(mut info) = cx.editor.autoinfo.take() {
info.render(area, surface, cx);
Expand Down
9 changes: 9 additions & 0 deletions helix-view/src/editor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,7 @@ pub struct StatusLineConfig {
pub right: Vec<StatusLineElement>,
pub separator: String,
pub mode: ModeConfig,
pub render: StatusLineRenderConfig,
}

impl Default for StatusLineConfig {
Expand All @@ -508,6 +509,7 @@ impl Default for StatusLineConfig {
],
separator: String::from("│"),
mode: ModeConfig::default(),
render: StatusLineRenderConfig::PerView,
}
}
}
Expand All @@ -530,6 +532,13 @@ impl Default for ModeConfig {
}
}

#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum StatusLineRenderConfig {
Single,
PerView,
}

#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum StatusLineElement {
Expand Down

0 comments on commit 40b5334

Please sign in to comment.