summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Oram <dev@mitmaro.ca>2021-01-27 18:38:39 -0330
committerTim Oram <dev@mitmaro.ca>2021-01-27 19:03:19 -0330
commitad4020c4b8f2e7d9ca48ab650beb26fad18bfcb5 (patch)
treee8e54ff6e4702178d15ea2ccc5a22a41cc3f1b88
parentca089a55bd8ab3c7387bff0a92a4aab674e73d05 (diff)
Rewrite display and input to use Crossterm
The project has pushed the limits of what curses can support on Windows systems. Crossterm has far superior support for creating cross platform TUI applications.
-rw-r--r--.github/workflows/master-coverage.yml2
-rw-r--r--.github/workflows/pull-request.yml6
-rw-r--r--.github/workflows/release-latest.yml2
-rw-r--r--.github/workflows/release.yml4
-rw-r--r--CHANGELOG.md1
-rw-r--r--Cargo.lock278
-rw-r--r--Cargo.toml9
-rw-r--r--README.md8
-rw-r--r--about.toml1
-rw-r--r--docs/licenses.html786
-rw-r--r--readme/customization.md42
-rw-r--r--readme/install.md3
-rwxr-xr-xscripts/coverage.bash2
-rw-r--r--src/confirm_abort/mod.rs2
-rw-r--r--src/confirm_rebase/mod.rs2
-rw-r--r--src/display/color.rs22
-rw-r--r--src/display/color_manager.rs428
-rw-r--r--src/display/crossterm.rs148
-rw-r--r--src/display/curses.rs4
-rw-r--r--src/display/mockcrossterm.rs202
-rw-r--r--src/display/mod.rs523
-rw-r--r--src/display/ncurses.rs135
-rw-r--r--src/display/size.rs2
-rw-r--r--src/display/testutil.rs75
-rw-r--r--src/display/utils.rs351
-rw-r--r--src/display/virtual_curses.rs196
-rw-r--r--src/edit/mod.rs3
-rw-r--r--src/external_editor/mod.rs22
-rw-r--r--src/input/input_handler.rs629
-rw-r--r--src/input/mod.rs41
-rw-r--r--src/list/mod.rs75
-rw-r--r--src/main.rs9
-rw-r--r--src/process/error.rs2
-rw-r--r--src/process/exit_status.rs5
-rw-r--r--src/process/help.rs5
-rw-r--r--src/process/mod.rs25
-rw-r--r--src/process/modules.rs4
-rw-r--r--src/process/process_module.rs2
-rw-r--r--src/process/tests.rs7
-rw-r--r--src/process/testutil.rs252
-rw-r--r--src/process/window_size_error.rs15
-rw-r--r--src/show_commit/mod.rs2
-rw-r--r--src/show_commit/tests.rs37
-rw-r--r--src/view/mod.rs175
44 files changed, 2343 insertions, 2201 deletions
diff --git a/.github/workflows/master-coverage.yml b/.github/workflows/master-coverage.yml
index 996e06c..bc17715 100644
--- a/.github/workflows/master-coverage.yml
+++ b/.github/workflows/master-coverage.yml
@@ -11,7 +11,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Install dependencies
- run: sudo apt-get install build-essential libncursesw5-dev pkg-config liblzma-dev
+ run: sudo apt-get install build-essential pkg-config liblzma-dev
- name: Build Coverage
run: "./scripts/coverage.bash"
- name: Post to Coveralls
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 231b08a..5b74c2a 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -8,7 +8,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Install dependencies
- run: sudo apt-get install build-essential libncursesw5-dev pkg-config liblzma-dev
+ run: sudo apt-get install build-essential pkg-config liblzma-dev
- name: Update Rust
run: rustup update stable
- name: Test
@@ -23,7 +23,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Install dependencies
- run: sudo apt-get install build-essential libncursesw5-dev pkg-config liblzma-dev
+ run: sudo apt-get install build-essential pkg-config liblzma-dev
- name: Lint
run: "./scripts/lint.bash"
- name: Format
@@ -34,7 +34,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Install dependencies
- run: sudo apt-get install build-essential libncursesw5-dev pkg-config liblzma-dev
+ run: sudo apt-get install build-essential pkg-config liblzma-dev
- name: Build Coverage
run: "./scripts/coverage.bash"
- name: Post to Coveralls
diff --git a/.github/workflows/release-latest.yml b/.github/workflows/release-latest.yml
index d8b5d86..31449db 100644
--- a/.github/workflows/release-latest.yml
+++ b/.github/workflows/release-latest.yml
@@ -21,7 +21,7 @@ jobs:
- name: "System Setup"
run: |
sudo apt-get update || true;
- sudo apt-get --assume-yes -f install curl build-essential libncursesw5-dev pkg-config liblzma-dev;
+ sudo apt-get --assume-yes -f install curl build-essential pkg-config liblzma-dev;
cargo install --force cargo-deb
- name: "Build Deb"
run: cargo +stable deb --output "target/debian/git-interactive-rebase-tool-ubuntu_amd64.deb" -- --features dev
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8098a8d..df72674 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -28,7 +28,7 @@ jobs:
- name: "System Setup"
run: |
apt-get update;
- apt-get --assume-yes -f install curl build-essential libncursesw5-dev pkg-config liblzma-dev;
+ apt-get --assume-yes -f install curl build-essential pkg-config liblzma-dev;
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain stable -y;
$HOME/.cargo/bin/cargo install --force cargo-deb
- name: "Build Deb"
@@ -64,7 +64,7 @@ jobs:
- name: "System Setup"
run: |
apt-get update;
- apt-get --assume-yes -f install curl build-essential libncursesw5-dev pkg-config liblzma-dev;
+ apt-get --assume-yes -f install curl build-essential pkg-config liblzma-dev;
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain stable -y;
$HOME/.cargo/bin/cargo install --force cargo-deb
- name: "Build Deb"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ead9e16..cd067ae 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- Optional rollback on error or invalid file during external edit
### Changed
+- No longer based on Curses and instead using Crossterm
- Change page up and page down to scroll half the height of the view area
- Improved error handling for executing external editor
diff --git a/Cargo.lock b/Cargo.lock
index acd451b..23ce1ea 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -37,9 +37,9 @@ dependencies = [
[[package]]
name = "autocfg"
-version = "1.0.0"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
+checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
[[package]]
name = "bitflags"
@@ -49,9 +49,9 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
[[package]]
name = "cc"
-version = "1.0.52"
+version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3d87b23d6a92cd03af510a5ade527033f6aa6fa92161e2d5863a907d4c5e31d"
+checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48"
dependencies = [
"jobserver",
]
@@ -97,29 +97,55 @@ dependencies = [
]
[[package]]
-name = "cloudabi"
-version = "0.0.3"
+name = "concat-idents"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
+checksum = "3f29bafee6d91a80db18bcd41dbdbb8d1d117ea31676b22e7370061ccea5f76c"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "crossterm"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c36c10130df424b2f3552fcc2ddcd9b28a27b1e54b358b45874f88d1ca6888c"
dependencies = [
"bitflags",
+ "crossterm_winapi",
+ "lazy_static",
+ "libc",
+ "mio",
+ "parking_lot",
+ "signal-hook",
+ "winapi",
]
[[package]]
-name = "concat-idents"
-version = "1.1.2"
+name = "crossterm_winapi"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f29bafee6d91a80db18bcd41dbdbb8d1d117ea31676b22e7370061ccea5f76c"
+checksum = "0da8964ace4d3e4a044fd027919b2237000b24315a37c916f61809f1ff2140b9"
dependencies = [
- "quote",
- "syn",
+ "winapi",
+]
+
+[[package]]
+name = "form_urlencoded"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00"
+dependencies = [
+ "matches",
+ "percent-encoding",
]
[[package]]
name = "getrandom"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4060f4657be78b8e766215b02b18a2e862d83745545de804638e2b545e81aee6"
+checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8"
dependencies = [
"cfg-if 1.0.0",
"libc",
@@ -134,10 +160,10 @@ dependencies = [
"chrono",
"clap",
"concat-idents",
+ "crossterm",
"git2",
"lazy_static",
"num-format",
- "pancurses",
"rstest",
"serial_test",
"tempfile",
@@ -148,9 +174,9 @@ dependencies = [
[[package]]
name = "git2"
-version = "0.13.15"
+version = "0.13.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44f267c9da8a4de3c615b59e23606c75f164f84896e97f4dd6c15a4294de4359"
+checksum = "1d250f5f82326884bd39c2853577e70a121775db76818ffa452ed1e80de12986"
dependencies = [
"bitflags",
"libc",
@@ -161,9 +187,9 @@ dependencies = [
[[package]]
name = "hermit-abi"
-version = "0.1.11"
+version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a0d737e0f947a1864e93d33fdef4af8445a00d1ed8dc0c8ddb73139ea6abf15"
+checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
dependencies = [
"libc",
]
@@ -180,10 +206,19 @@ dependencies = [
]
[[package]]
+name = "instant"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
name = "itoa"
-version = "0.4.5"
+version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e"
+checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
[[package]]
name = "jobserver"
@@ -202,15 +237,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.69"
+version = "0.2.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005"
+checksum = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929"
[[package]]
name = "libgit2-sys"
-version = "0.12.17+1.1.0"
+version = "0.12.18+1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4ebdf65ca745126df8824688637aa0535a88900b83362d8ca63893bcf4e8841"
+checksum = "3da6a42da88fc37ee1ecda212ffa254c25713532980005d5f7c0b0fbe7e6e885"
dependencies = [
"cc",
"libc",
@@ -232,20 +267,20 @@ dependencies = [
[[package]]
name = "lock_api"
-version = "0.3.4"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
+checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"
dependencies = [
"scopeguard",
]
[[package]]
name = "log"
-version = "0.4.8"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
+checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
dependencies = [
- "cfg-if 0.1.10",
+ "cfg-if 1.0.0",
]
[[package]]
@@ -255,14 +290,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
[[package]]
-name = "ncurses"
-version = "5.99.0"
+name = "mio"
+version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15699bee2f37e9f8828c7b35b2bc70d13846db453f2d507713b758fabe536b82"
+checksum = "e50ae3f04d169fcc9bde0b547d1c205219b7157e07ded9c5aff03e0637cb3ed7"
dependencies = [
- "cc",
"libc",
- "pkg-config",
+ "log",
+ "miow",
+ "ntapi",
+ "winapi",
+]
+
+[[package]]
+name = "miow"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897"
+dependencies = [
+ "socket2",
+ "winapi",
]
[[package]]
@@ -272,6 +319,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
[[package]]
+name = "ntapi"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
name = "num-format"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -283,9 +339,9 @@ dependencies = [
[[package]]
name = "num-integer"
-version = "0.1.42"
+version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba"
+checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
dependencies = [
"autocfg",
"num-traits",
@@ -293,61 +349,39 @@ dependencies = [
[[package]]
name = "num-traits"
-version = "0.2.11"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096"
+checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
dependencies = [
"autocfg",
]
[[package]]
-name = "pancurses"
-version = "0.16.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3058bc37c433096b2ac7afef1c5cdfae49ede0a4ffec3dfc1df1df0959d0ff0"
-dependencies = [
- "libc",
- "log",
- "ncurses",
- "pdcurses-sys",
- "winreg",
-]
-
-[[package]]
name = "parking_lot"
-version = "0.10.2"
+version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e"
+checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
dependencies = [
+ "instant",
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
-version = "0.7.2"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3"
+checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272"
dependencies = [
- "cfg-if 0.1.10",
- "cloudabi",
+ "cfg-if 1.0.0",
+ "instant",
"libc",
- "redox_syscall 0.1.56",
+ "redox_syscall 0.1.57",
"smallvec",
"winapi",
]
[[package]]
-name = "pdcurses-sys"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "084dd22796ff60f1225d4eb6329f33afaf4c85419d51d440ab6b8c6f4529166b"
-dependencies = [
- "cc",
- "libc",
-]
-
-[[package]]
name = "percent-encoding"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -355,15 +389,15 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "pkg-config"
-version = "0.3.17"
+version = "0.3.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677"
+checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
[[package]]
name = "ppv-lite86"
-version = "0.2.9"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20"
+checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
[[package]]
name = "proc-macro2"
@@ -385,9 +419,9 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.8.1"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c24fcd450d3fa2b592732565aa4f17a27a61c65ece4726353e000939b0edee34"
+checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
dependencies = [
"libc",
"rand_chacha",
@@ -425,9 +459,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.1.56"
+version = "0.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
+checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
[[package]]
name = "redox_syscall"
@@ -513,10 +547,41 @@ dependencies = [
]
[[package]]
+name = "signal-hook"
+version = "0.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729"
+dependencies = [
+ "libc",
+ "mio",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
name = "smallvec"
-version = "1.4.0"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
+
+[[package]]
+name = "socket2"
+version = "0.3.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4"
+checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "winapi",
+]
[[package]]
name = "strsim"
@@ -526,9 +591,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "syn"
-version = "1.0.55"
+version = "1.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a571a711dddd09019ccc628e1b17fe87c59b09d513c06c026877aa708334f37a"
+checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081"
dependencies = [
"proc-macro2",
"quote",
@@ -569,6 +634,21 @@ dependencies = [
]
[[package]]
+name = "tinyvec"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+
+[[package]]
name = "unicode-bidi"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -579,11 +659,11 @@ dependencies = [
[[package]]
name = "unicode-normalization"
-version = "0.1.12"
+version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4"
+checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606"
dependencies = [
- "smallvec",
+ "tinyvec",
]
[[package]]
@@ -600,16 +680,17 @@ checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
[[package]]
name = "unicode-xid"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
+checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
[[package]]
name = "url"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb"
+checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e"
dependencies = [
+ "form_urlencoded",
"idna",
"matches",
"percent-encoding",
@@ -617,15 +698,15 @@ dependencies = [
[[package]]
name = "vcpkg"
-version = "0.2.8"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168"
+checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb"
[[package]]
name = "vec_map"
-version = "0.8.1"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "wasi"
@@ -635,9 +716,9 @@ checksum = "93c6c3420963c5c64bca373b25e77acb562081b9bb4dd5bb864187742186cea9"
[[package]]
name = "winapi"
-version = "0.3.8"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
@@ -656,15 +737,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
-name = "winreg"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a27a759395c1195c4cc5cda607ef6f8f6498f64e78f7900f5de0a127a424704a"
-dependencies = [
- "winapi",
-]
-
-[[package]]
name = "xi-unicode"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 1ab10e0..00b2b1a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ name = "git-interactive-rebase-tool"
version = "1.2.1"
authors = ["Tim Oram <dev@mitmaro.ca>"]
license = "GPL-3.0-or-later"
-description = "Full feature terminal based sequence editor for git interactive rebase. Written in Rust using ncurses."
+description = "Full feature terminal based sequence editor for git interactive rebase."
homepage = "https://gitrebasetool.mitmaro.ca/"
repository = "https://github.com/MitMaro/git-interactive-rebase-tool"
keywords = [ "git", "editor", "tool", "rebase", "cli" ]
@@ -41,10 +41,7 @@ num-format = "0.4.0"
unicode-segmentation = "1.7.1"
unicode-width = "0.1.8"
xi-unicode = "0.3.0"
-
-[dependencies.pancurses]
-version = "0.16"
-features = ["win32", "wide"]
+crossterm = "0.19.0"
[dependencies.git2]
version = "0.13.15"
@@ -65,7 +62,7 @@ dev = []
[package.metadata.deb]
license-file = ["LICENSE"]
extended-description = """\
-Full feature terminal based sequence editor for git interactive rebase. Written in Rust using ncurses."""
+Full feature terminal based sequence editor for git interactive rebase."""
section = "utility"
priority = "optional"
assets = [
diff --git a/README.md b/README.md
index d9f71b5..6fbe8a8 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
# Git Interactive Rebase Tool
-Native cross-platform full feature terminal based [sequence editor][git-sequence-editor] for interactive rebase in Git 1.7.8+. Written in Rust using ncurses.
+Native cross-platform full feature terminal based [sequence editor][git-sequence-editor] for interactive rebase in Git 1.7.8+.
[![Git Interactive Rebase Tool](/docs/assets/images/girt-demo.gif?raw=true)](https://youtu.be/q3tzb-gQC0w)
@@ -155,11 +155,9 @@ To start developing the project, you will need to [install Rust][install-rust],
#### Debian and derivatives
-You will need `build-essential` and `libncursesw5-dev` to build the project. Additionally, you will need `pkg-config` and `liblzma-dev` if you wish to build a release. They can be installed using `apt-get`:
-
- sudo apt-get install build-essential libncursesw5-dev
- sudo apt-get install pkg-config liblzma-dev
+If you plan to build a release package you will need `pkg-config` and `liblzma-dev`. They can be installed using `apt`:
+ sudo apt install pkg-config liblzma-dev
### Build and run
diff --git a/about.toml b/about.toml
index aac4235..6029789 100644
--- a/about.toml
+++ b/about.toml
@@ -1,5 +1,6 @@
accepted = [
"BSD-2-Clause",
+ "BSD-3-Clause",
"GPL-3.0",
"Apache-2.0",
"MIT",
diff --git a/docs/licenses.html b/docs/licenses.html
index b861792..939f532 100644
--- a/docs/licenses.html
+++ b/docs/licenses.html
@@ -47,10 +47,12 @@
<li><a href="#MIT">MIT License</a> (11)</li>
- <li><a href="#Apache-2.0">Apache License 2.0</a> (9)</li>
+ <li><a href="#Apache-2.0">Apache License 2.0</a> (10)</li>