diff --git a/src/app.rs b/src/app.rs index d50020a..cb43b1b 100644 --- a/src/app.rs +++ b/src/app.rs @@ -57,7 +57,7 @@ impl App { let mut buffers: Vec = files .iter() .filter_map(|path| { - Buffer::from_file_at(path.clone()) + Buffer::from_file_at(path) .inspect_err(|error| { error_alert = Some( Span::raw(format!("error reading '{}': {error}", path.display())).red() diff --git a/src/buffer.rs b/src/buffer.rs index 6f07fcf..8b3bf39 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -1,4 +1,4 @@ -use std::{collections::HashSet, fs::File, io::{self, Read}, path::PathBuf}; +use std::{collections::HashSet, fs::File, io::{self, Read}, path::{Path, PathBuf}}; use crossterm::event::KeyEvent; use ratatui::{style::Stylize, text::Span}; use serde::{Deserialize, Serialize}; @@ -75,7 +75,9 @@ impl TryFrom<&str> for PartialAction { } impl Buffer { - pub fn from_file_at(file_path: PathBuf) -> io::Result { + pub fn from_file_at(file_path: &Path) -> io::Result { + let file_path = file_path.canonicalize()?; + let mut file = File::open(&file_path)?; let mut contents = Vec::new(); file.read_to_end(&mut contents)?; diff --git a/src/buffer/widget.rs b/src/buffer/widget.rs index 7038599..408bd27 100644 --- a/src/buffer/widget.rs +++ b/src/buffer/widget.rs @@ -10,6 +10,9 @@ mod extra_statuses; impl Widget for &Buffer { fn render(self, area: Rect, buf: &mut ratatui::buffer::Buffer) { + // set OSC 6 (current document) + print!("\x1B]6;{}\x07", self.file_path.display()); + let screen_end = self.scroll_position + BYTES_PER_LINE * (area.height as usize - 1); let bytes_end = min(screen_end, self.contents.len());