From 8486be143b44a2d929430d41405124dcd1bfccb9 Mon Sep 17 00:00:00 2001
From: Teddy Wing
Date: Sat, 22 Aug 2020 00:05:11 +0200
Subject: Idea for adding diff colours
Ideas for getting diff colours from the Git config and parsing them
using 'colorparse'.
Leaving this aside and planning to add diff colours by executing
`git-diff` instead. Shelling out to `git diff` would allow us to accept
diff command line options like `--word-diff` and have them work
transparently.
---
Cargo.lock | 26 ++++++++++++
github-suggestion/Cargo.toml | 2 +
github-suggestion/src/color.rs | 91 ++++++++++++++++++++++++++++++++++++++++++
github-suggestion/src/lib.rs | 2 +
4 files changed, 121 insertions(+)
create mode 100644 github-suggestion/src/color.rs
diff --git a/Cargo.lock b/Cargo.lock
index e6fd541..b7408da 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -24,6 +24,21 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "ansi_term"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6"
+
+[[package]]
+name = "ansi_term"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+dependencies = [
+ "winapi 0.3.9",
+]
+
[[package]]
name = "autocfg"
version = "1.0.0"
@@ -100,6 +115,15 @@ dependencies = [
"bitflags",
]
+[[package]]
+name = "colorparse"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "179f9a3462d05f4c15041d8ba8bd59534731fe6ddd89a65ca61ec67655f37379"
+dependencies = [
+ "ansi_term 0.9.0",
+]
+
[[package]]
name = "crossbeam-deque"
version = "0.7.3"
@@ -277,6 +301,8 @@ dependencies = [
name = "github-suggestion"
version = "0.1.0"
dependencies = [
+ "ansi_term 0.12.1",
+ "colorparse",
"git2",
"github-rs",
"regex",
diff --git a/github-suggestion/Cargo.toml b/github-suggestion/Cargo.toml
index 34e197c..0ef1959 100644
--- a/github-suggestion/Cargo.toml
+++ b/github-suggestion/Cargo.toml
@@ -4,6 +4,8 @@ version = "0.1.0"
edition = "2018"
[dependencies]
+ansi_term = "0.12.1"
+colorparse = "2.0.1"
git2 = "0.13.8"
github-rs = "0.7.0"
regex = "1.3.9"
diff --git a/github-suggestion/src/color.rs b/github-suggestion/src/color.rs
new file mode 100644
index 0000000..5f4e954
--- /dev/null
+++ b/github-suggestion/src/color.rs
@@ -0,0 +1,91 @@
+// Copyright (c) 2020 Teddy Wing
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+
+use ansi_term::Style;
+use colorparse;
+use git2;
+use thiserror::Error;
+
+
+#[derive(Debug, Error)]
+pub enum Error {
+ #[error(transparent)]
+ Git(#[from] git2::Error),
+}
+
+
+static SLOTS: [&'static str; 6] = [
+ "commit",
+ "context",
+ "frag",
+ "func",
+ "old",
+ "new",
+];
+
+
+#[derive(Debug, Default)]
+pub struct Diff {
+ context: Option