summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2021-02-01 14:59:26 +0100
committerCanop <cano.petrole@gmail.com>2021-02-01 14:59:26 +0100
commit7f2246ac48845c12fe14b74e004da7e6d1999c38 (patch)
tree95ce75aece8da7a8bfda877d796801dfd5bfa684
parent46cfd1db5339613d2edf0207c4a0fc77dff01c0c (diff)
fix crash on page-down when last line of text preview is selected
Fix #339
-rw-r--r--Cargo.lock115
-rw-r--r--Cargo.toml16
-rw-r--r--src/syntactic/syntactic_view.rs8
-rw-r--r--website/docs/css/extra.css3
4 files changed, 44 insertions, 98 deletions
diff --git a/Cargo.lock b/Cargo.lock
index bcb81ae..1d509f2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -115,7 +115,7 @@ dependencies = [
[[package]]
name = "broot"
-version = "1.2.1"
+version = "1.2.2-dev"
dependencies = [
"ansi_colours",
"base64 0.13.0",
@@ -352,26 +352,16 @@ dependencies = [
[[package]]
name = "crossbeam"
-version = "0.7.3"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e"
+checksum = "fd01a6eb3daaafa260f6fc94c3a6c36390abc2080e38e3e34ced87393fb77d80"
dependencies = [
- "cfg-if 0.1.10",
- "crossbeam-channel 0.4.4",
- "crossbeam-deque 0.7.3",
- "crossbeam-epoch 0.8.2",
+ "cfg-if 1.0.0",
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-epoch",
"crossbeam-queue",
- "crossbeam-utils 0.7.2",
-]
-
-[[package]]
-name = "crossbeam-channel"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87"
-dependencies = [
- "crossbeam-utils 0.7.2",
- "maybe-uninit",
+ "crossbeam-utils",
]
[[package]]
@@ -381,18 +371,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775"
dependencies = [
"cfg-if 1.0.0",
- "crossbeam-utils 0.8.1",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
-dependencies = [
- "crossbeam-epoch 0.8.2",
- "crossbeam-utils 0.7.2",
- "maybe-uninit",
+ "crossbeam-utils",
]
[[package]]
@@ -402,23 +381,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
dependencies = [
"cfg-if 1.0.0",
- "crossbeam-epoch 0.9.1",
- "crossbeam-utils 0.8.1",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
-dependencies = [
- "autocfg",
- "cfg-if 0.1.10",
- "crossbeam-utils 0.7.2",
- "lazy_static",
- "maybe-uninit",
- "memoffset 0.5.6",
- "scopeguard",
+ "crossbeam-epoch",
+ "crossbeam-utils",
]
[[package]]
@@ -429,32 +393,20 @@ checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d"
dependencies = [
"cfg-if 1.0.0",
"const_fn",
- "crossbeam-utils 0.8.1",
+ "crossbeam-utils",
"lazy_static",
- "memoffset 0.6.1",
+ "memoffset",
"scopeguard",
]
[[package]]
name = "crossbeam-queue"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
-dependencies = [
- "cfg-if 0.1.10",
- "crossbeam-utils 0.7.2",
- "maybe-uninit",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.7.2"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
+checksum = "0f6cb3c7f5b8e51bc3ebb73a2327ad4abdbd119dc13223f14f961d2f38486756"
dependencies = [
- "autocfg",
- "cfg-if 0.1.10",
- "lazy_static",
+ "cfg-if 1.0.0",
+ "crossbeam-utils",
]
[[package]]
@@ -871,12 +823,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
[[package]]
-name = "maybe-uninit"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
-
-[[package]]
name = "memchr"
version = "2.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -894,15 +840,6 @@ dependencies = [
[[package]]
name = "memoffset"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "memoffset"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"
@@ -912,9 +849,7 @@ dependencies = [
[[package]]
name = "minimad"
-version = "0.6.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24fe6f533320d060be6644ff3967df0ddb2e3061164ab4976c9157995702e887"
+version = "0.6.9"
dependencies = [
"lazy_static",
]
@@ -1270,7 +1205,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
dependencies = [
"autocfg",
- "crossbeam-deque 0.8.0",
+ "crossbeam-deque",
"either",
"rayon-core",
]
@@ -1281,9 +1216,9 @@ version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
dependencies = [
- "crossbeam-channel 0.5.0",
- "crossbeam-deque 0.8.0",
- "crossbeam-utils 0.8.1",
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
"lazy_static",
"num_cpus",
]
@@ -1350,7 +1285,7 @@ dependencies = [
"base64 0.13.0",
"blake2b_simd",
"constant_time_eq",
- "crossbeam-utils 0.8.1",
+ "crossbeam-utils",
]
[[package]]
@@ -1573,9 +1508,7 @@ dependencies = [
[[package]]
name = "termimad"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4fae9923b92f150e76725c2b25d07767154baa597825870cc1e418ce9262dab"
+version = "0.9.5"
dependencies = [
"crossbeam",
"crossterm",
diff --git a/Cargo.toml b/Cargo.toml
index 21bcace..dbe1f25 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "broot"
-version = "1.2.1"
+version = "1.2.2-dev"
authors = ["dystroy <denys.seguret@gmail.com>"]
repository = "https://github.com/Canop/broot"
documentation = "https://dystroy.org/broot"
@@ -26,7 +26,7 @@ char_reader = "0.1"
clap = { version="2.33", default-features=false, features=["suggestions"] }
cli-log = "0.1"
chrono = "0.4"
-crossbeam = "0.7"
+crossbeam = "0.8"
crossterm = "0.17.7"
custom_error = "1.6"
deser-hjson = "0.1.7"
@@ -41,12 +41,12 @@ lazy-regex = "0.1.3"
lazy_static = "1.4"
libc = "0.2"
log = "0.4"
-minimad = "=0.6.7"
+minimad = "=0.6.9"
open = "1.4"
memmap = "0.7"
pathdiff = "0.1.0"
phf = { version = "0.8", features = ["macros"] }
-rayon = "1.4"
+rayon = "1.5"
regex = "1.3"
secular = "0.2"
serde = { version = "1.0", features = ["derive"] }
@@ -54,7 +54,7 @@ splitty = "0.1"
strict = "0.1.4"
syntect = "4.2"
tempfile = "3.1"
-termimad = "0.9.2"
+termimad = "0.9.4"
terminal-clipboard = { version = "0.1.1", optional = true }
toml = "0.5"
umask = "1.0"
@@ -74,7 +74,11 @@ is_executable = "0.1"
[build-dependencies]
clap = "2.33"
+[profile.dev]
+debug = false
+
[profile.release]
+debug = false
lto = true # link time optimization - roughly halves the size of the exec
codegen-units = 1 # this removes a few hundred bytes from the final exec size
@@ -92,7 +96,7 @@ harness = false
# minimad = { path = "../minimad" }
# termimad = { path = "../termimad" }
# crossterm = { path = "../crossterm-rs/crossterm" }
-#deser-hjson = { path = "../deser-hjson" }
+# deser-hjson = { path = "../deser-hjson" }
# umask = { path = "../umask" }
# secular = { path = "../secular" }
# strict = { path = "../strict" }
diff --git a/src/syntactic/syntactic_view.rs b/src/syntactic/syntactic_view.rs
index 60fb81b..f9c6b27 100644
--- a/src/syntactic/syntactic_view.rs
+++ b/src/syntactic/syntactic_view.rs
@@ -278,7 +278,13 @@ impl SyntacticView {
self.scroll = cmd.apply(self.scroll, self.lines.len(), self.page_height);
if let Some(idx) = self.selection_idx {
if self.scroll != old_scroll && idx >= old_scroll && idx < old_scroll + self.page_height {
- self.selection_idx = Some(idx + self.scroll - old_scroll);
+ if idx + self.scroll < old_scroll {
+ self.selection_idx = Some(0);
+ } else if idx + self.scroll - old_scroll >= self.lines.len() {
+ self.selection_idx = Some(self.lines.len() - 1);
+ } else {
+ self.selection_idx = Some(idx + self.scroll - old_scroll);
+ }
}
}
self.scroll != old_scroll
diff --git a/website/docs/css/extra.css b/website/docs/css/extra.css
index d73ec16..326fe15 100644
--- a/website/docs/css/extra.css
+++ b/website/docs/css/extra.css
@@ -47,6 +47,9 @@ kbd.b {
padding: 0 5px;
}
+.col-md-9 {
+ max-width: 1000px;
+}
.col-md-9 img {
max-width: 100%;
display: inline-block;