@@ -232,7 +232,45 @@ impl EditorView {
235− // render selections
235+ // render gutters
237+ let linenr: Style = theme.get("ui.linenr");
238+ let warning: Style = theme.get("warning");
239+ let error: Style = theme.get("error");
240+ let info: Style = theme.get("info");
241+ let hint: Style = theme.get("hint");
243+ for (i, line) in (view.first_line..last_line).enumerate() {
244+ use helix_core::diagnostic::Severity;
245+ if let Some(diagnostic) = doc.diagnostics().iter().find(|d| d.line == line) {
246+ surface.set_stringn(
247+ viewport.x - OFFSET,
248+ viewport.y + i as u16,
251+ match diagnostic.severity {
252+ Some(Severity::Error) => error,
253+ Some(Severity::Warning) | None => warning,
254+ Some(Severity::Info) => info,
255+ Some(Severity::Hint) => hint,
260+ // line numbers having selections are rendered differently
261+ surface.set_stringn(
262+ viewport.x + 1 - OFFSET,
263+ viewport.y + i as u16,
264+ format!("{:>5}", line + 1),
270+ // render selections and selected linenr(s)
271+ let linenr_select: Style = theme
272+ .try_get("ui.linenr.selected")
273+ .unwrap_or_else(|| theme.get("ui.linenr"));
237 if is_focused {
275 if is_focused {
238 let screen = {
276 let screen = {
@@ -329,6 +367,13 @@ impl EditorView {
330 cursor_style,
368 cursor_style,
370+ surface.set_stringn(
371+ viewport.x + 1 - OFFSET,
372+ viewport.y + head.row as u16,
373+ format!("{:>5}", view.first_line + head.row + 1),
332 // TODO: set cursor position for IME
377 // TODO: set cursor position for IME
333 if let Some(syntax) = doc.syntax() {
378 if let Some(syntax) = doc.syntax() {
334 use helix_core::match_brackets;
379 use helix_core::match_brackets;
@@ -357,40 +402,6 @@ impl EditorView {
363− let style: Style = theme.get("ui.linenr");
364− let warning: Style = theme.get("warning");
365− let error: Style = theme.get("error");
366− let info: Style = theme.get("info");
367− let hint: Style = theme.get("hint");
369− for (i, line) in (view.first_line..last_line).enumerate() {
370− use helix_core::diagnostic::Severity;
371− if let Some(diagnostic) = doc.diagnostics().iter().find(|d| d.line == line) {
372− surface.set_stringn(
373− viewport.x - OFFSET,
374− viewport.y + i as u16,
377− match diagnostic.severity {
378− Some(Severity::Error) => error,
379− Some(Severity::Warning) | None => warning,
380− Some(Severity::Info) => info,
381− Some(Severity::Hint) => hint,
386− surface.set_stringn(
387− viewport.x + 1 - OFFSET,
388− viewport.y + i as u16,
389− format!("{:>5}", line + 1),
396 pub fn render_diagnostics(
407 pub fn render_diagnostics(