Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'src/rnd.rs')
-rw-r--r--src/rnd.rs103
1 files changed, 67 insertions, 36 deletions
diff --git a/src/rnd.rs b/src/rnd.rs
index 41d877c..181f48b 100644
--- a/src/rnd.rs
+++ b/src/rnd.rs
@@ -102,7 +102,27 @@ pub fn render(
),
_ => None,
};
-
+ let sym_sel =
+ if let State::Symbols(Rq { result: Some(menu), .. }) =
+ &ed.state
+ && let Some(Ok(UsedSI {
+ at: GoTo { at: At::R(x), .. },
+ ..
+ })) = menu.sel(None)
+ {
+ Some(x)
+ } else {
+ None
+ };
+ let gen_sel = if let State::GoToL(menu) = &ed.state
+ && let Some(Ok((GoTo { at: At::R(r), path }, _))) =
+ menu.sel(None)
+ && Some(&*path) == ed.origin.as_deref()
+ {
+ Some(r)
+ } else {
+ None
+ };
text.line_numbers(
(c, r - 1),
[67, 76, 87],
@@ -110,22 +130,12 @@ pub fn render(
(cells, (c, r)),
(1, 0),
|_text, mut f, y| {
- if let State::GoToL(menu) = &ed.state
- && let Some(Ok((GoTo { at: At::R(r), path }, _))) =
- menu.sel(None)
- && Some(&*path) == ed.origin.as_deref()
- {
+ if let Some(r) = gen_sel {
if (r.start.line..=r.end.line).contains(&(y as _)) {
f.style.fg = col!("#FFCC66");
}
}
- if let State::Symbols(Rq { result: Some(menu), .. }) =
- &ed.state
- && let Some(Ok(UsedSI {
- at: GoTo { at: At::R(x), .. },
- ..
- })) = menu.sel(None)
- {
+ if let Some(x) = sym_sel {
if (x.start.line..=x.end.line).contains(&(y as _)) {
f.style.fg = col!("#FFCC66");
}
@@ -252,14 +262,23 @@ pub fn render(
.flat_map(|diag| {
let sev = diag
.severity
- .unwrap_or(DiagnosticSeverity::ERROR);
+ .unwrap_or(DiagnosticSeverity::Error);
let sev_ = match sev {
- DiagnosticSeverity::ERROR => EType::Error,
- DiagnosticSeverity::WARNING => EType::Warning,
- DiagnosticSeverity::HINT => EType::Hint,
+ DiagnosticSeverity::Error => EType::Error,
+ DiagnosticSeverity::Warning => EType::Warning,
+ DiagnosticSeverity::Hint => EType::Hint,
_ => EType::Info,
};
- once((diag.range, &*diag.message, sev_)).chain(
+ once((
+ diag.range,
+ match &diag.message {
+ Message::String(x) => &**x,
+ Message::MarkupContent(x) =>
+ unimplemented!(),
+ },
+ sev_,
+ ))
+ .chain(
diag.related_information
.iter()
.flatten()
@@ -275,7 +294,7 @@ pub fn render(
})
.for_each(|(mut r, m, sev)| {
if let EType::Related(x) = sev
- && x != DiagnosticSeverity::ERROR
+ && x != DiagnosticSeverity::Error
{
return;
}
@@ -291,7 +310,7 @@ pub fn render(
| EType::Hint
| EType::Info => col!("#9469242c"),
EType::Related(
- DiagnosticSeverity::ERROR,
+ DiagnosticSeverity::Error,
) => col!("#dfbfff26"),
EType::Related(_) => col!("#ffad6625"),
});
@@ -332,7 +351,7 @@ pub fn render(
col!("#ff942f1b", "#f26462")
}
EType::Related(
- DiagnosticSeverity::WARNING,
+ DiagnosticSeverity::Warning,
) => {
col!("#dfbfff26", "#DFBFFF")
}
@@ -373,7 +392,7 @@ pub fn render(
z,
wt,
ed.origin.as_deref(),
- lsp!(ed).and_then(|x| x.legend()),
+ lsp!(&ed).and_then(|x| x.legend()),
ed.language,
);
@@ -385,7 +404,7 @@ pub fn render(
ed.origin
.as_ref()
.map(|x| {
- ed.workspace
+ ed.git_dir
.as_ref()
.and_then(|w| x.strip_prefix(w).ok())
.unwrap_or(&x)
@@ -571,13 +590,13 @@ pub fn render(
continue;
}
- let r = if let Some(r) = e.sticky_range {
- let r = text.l_range(r).unwrap();
- text.char_to_line(r.start)..=text.char_to_line(r.end)
- } else {
- let x = text.char_to_line(p);
- x..=x
- };
+ // let r = if let Some(r) = e.sticky_range {
+ // let r = text.l_range(r).unwrap();
+ // text.char_to_line(r.start)..=text.char_to_line(r.end)
+ // } else {
+ let x = text.char_to_line(p);
+ let r = x..=x;
+ // };
let d = Cell {
style: Style {
@@ -592,7 +611,7 @@ pub fn render(
// chain([Cell::default()], x.to_string().chars().map(Cell::basic)).chain([Cell::default()]).collect();
for (x, rel, mut cell) in text
- .colored_lines(r, lsp!(ed).and_then(|x| x.legend()))
+ .colored_lines(r, lsp!(&ed).and_then(|x| x.legend()))
{
if rel == 0 {
let rem = cells.len() % c;
@@ -847,22 +866,28 @@ pub fn render(
);
}
State::Command(x) if x.should_render() => {
- let ws = ed.workspace.as_deref().unwrap();
+ let ws = ed.git_dir.as_deref().unwrap();
let c = x.cells(50, ws, None);
drawb(&c, 50);
}
State::Symbols(Rq { result: Some(x), .. }) => {
- let ws = ed.workspace.as_deref().unwrap();
+ let ws = ed.git_dir.as_deref().unwrap();
let c = x.cells(50, ws, Some(freq));
drawb(&c, 50);
}
+ #[cfg(target_family = "unix")]
State::Runnables(Rq { result: Some(x), .. }) => {
- let ws = ed.workspace.as_deref().unwrap();
+ let ws = ed.git_dir.as_deref().unwrap();
let c = x.cells(50, ws, None);
drawb(&c, 50);
}
State::GoToL(y) => {
- let ws = ed.workspace.as_deref().unwrap();
+ let ws = ed.git_dir.as_deref().unwrap();
+ let c = y.cells(50, ws, None);
+ drawb(&c, 50);
+ }
+ State::KillRing(y) => {
+ let ws = ed.git_dir.as_deref().unwrap();
let c = y.cells(50, ws, None);
drawb(&c, 50);
}
@@ -1088,7 +1113,13 @@ pub fn simplify_path(x: &str) -> String {
static RUST_SRC: LazyLock<Regex> = LazyLock::new(|| {
Regex::new(r".rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library").unwrap()
});
- let x = x.replace(env!("HOME"), " ");
+ let x = x.replace(
+ #[cfg(target_family = "unix")]
+ env!("HOME"),
+ #[cfg(target_family = "windows")]
+ env!("HOMEPATH"),
+ " ",
+ );
[(&*RUST_SRC, " "), (&*DEP, " /$name"), (&*DEP2, " /$name")]
.into_iter()
.fold(x, |acc, (r, repl)| r.replace(&acc, repl).into_owned())