A simple CPU rendered GUI IDE experience.
apply underlining
bendn 3 months ago
parent c118beb · commit d5a664c
-rw-r--r--src/main.rs13
-rw-r--r--src/text.rs11
2 files changed, 24 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
index c45a9e4..21cdd8c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -486,6 +486,16 @@ pub(crate) fn entry(event_loop: EventLoop<()>) {
(t_ox, 0),
x,
|(_c, _r), text, mut x| {
+ if let Some(LocationLink {
+ origin_selection_range: Some(r), ..
+ }) = def.result { _ = try {
+ let (x1, y1) = text.map_to_visual((r.start.character as _, r.start.line as _))?;
+ let (x2, y2) = text.map_to_visual((r.end.character as _, r.end.line as _))?;
+ x.get_simple((x1, y1), (x2, y2))?.iter_mut().for_each(|x| {
+ x.style.flags |= Style::UNDERLINE;
+ x.style.color = col!("#FFD173");
+ });
+ } }
if let Some((lsp, p)) = lsp!() && let uri = Url::from_file_path(p).unwrap() && let Some(diag) = lsp.diagnostics.get(&uri, &lsp.diagnostics.guard()) {
#[derive(Copy, Clone, Debug)]
enum EType {
@@ -892,6 +902,8 @@ pub(crate) fn entry(event_loop: EventLoop<()>) {
}) {
def.result = None;
}
+ } else {
+ def.result = None;
}
if let Some((_, c)) = hovering.request && c == cursor_position {
break 'out;
@@ -943,6 +955,7 @@ hovering.request = (DropH::new(handle), cursor_position).into();
// });
}
Some(Do::Hover) => {
+ def.result = None;
hovering.result = None;
window.request_redraw();
}
diff --git a/src/text.rs b/src/text.rs
index d8e4787..fd1f520 100644
--- a/src/text.rs
+++ b/src/text.rs
@@ -1672,6 +1672,17 @@ impl<'a> Output<'a> {
// self.output.from_point(b),
// )
}
+
+ // oughtnt really be multiline
+ pub fn get_simple(
+ &mut self,
+ s: (usize, usize),
+ e: (usize, usize),
+ ) -> Option<&mut [Cell]> {
+ let s = self.from_point_global(self.translate(s)?);
+ let e = self.from_point_global(self.translate(e)?);
+ self.into.get_mut(s..e)
+ }
// impl<'a> IndexMut<(usize, usize)> for Output<'a> {
// fn index_mut(&mut self, p: (usize, usize)) -> &mut Self::Output {
// let x = self.from_point_global(self.translate(p).unwrap());