added cursor rendering
This commit is contained in:
parent
c3a23a1c09
commit
6ba082697d
@ -3,7 +3,7 @@
|
||||
pub mod commands;
|
||||
mod graphemes;
|
||||
mod selection;
|
||||
mod state;
|
||||
pub mod state;
|
||||
mod transaction;
|
||||
|
||||
pub use ropey::{Rope, RopeSlice};
|
||||
|
@ -3,8 +3,8 @@
|
||||
|
||||
/// A state represents the current editor state of a single buffer.
|
||||
pub struct State {
|
||||
pub(crate) doc: Buffer,
|
||||
pub(crate) selection: Selection,
|
||||
pub doc: Buffer,
|
||||
pub selection: Selection,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||
|
@ -14,7 +14,7 @@
|
||||
use anyhow::Error;
|
||||
|
||||
use crate::{keymap, Args};
|
||||
use helix_core::{Buffer, State};
|
||||
use helix_core::{state::coords_at_pos, Buffer, State};
|
||||
|
||||
pub struct BufferComponent<'a> {
|
||||
x: u16,
|
||||
@ -37,8 +37,7 @@ pub fn render(&self) {
|
||||
SetForegroundColor(Color::Reset),
|
||||
cursor::MoveTo(self.x + 2, self.y + line_count),
|
||||
Print(line)
|
||||
)
|
||||
.unwrap();
|
||||
);
|
||||
line_count += 1;
|
||||
}
|
||||
}
|
||||
@ -117,6 +116,16 @@ pub async fn print_events(&mut self) {
|
||||
// TODO: handle count other than 1
|
||||
command(state, 1);
|
||||
self.render();
|
||||
// render the cursor
|
||||
let pos = self.state.as_ref().unwrap().selection.primary().head;
|
||||
let coords = coords_at_pos(
|
||||
&self.state.as_ref().unwrap().doc.contents.slice(..),
|
||||
pos,
|
||||
);
|
||||
execute!(
|
||||
stdout(),
|
||||
cursor::MoveTo((coords.1 + 2) as u16, coords.0 as u16)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,11 @@
|
||||
use crossterm::event::{KeyCode, KeyEvent as Key, KeyModifiers as Modifiers};
|
||||
use crossterm::{
|
||||
event::{KeyCode, KeyEvent as Key, KeyModifiers as Modifiers},
|
||||
execute,
|
||||
style::Print,
|
||||
};
|
||||
use helix_core::commands::{self, Command};
|
||||
use std::collections::HashMap;
|
||||
use std::io::{stdout, Write};
|
||||
|
||||
// Kakoune-inspired:
|
||||
// mode = {
|
||||
|
Loading…
Reference in New Issue
Block a user