diff options
author | eivind <eivind@FreeBSD.org> | 2000-09-20 19:37:28 +0800 |
---|---|---|
committer | eivind <eivind@FreeBSD.org> | 2000-09-20 19:37:28 +0800 |
commit | d773fb5e763490cbfd1806609b60c6e20f1d3800 (patch) | |
tree | 0a818a22ee513068b91d745fbaf06e2170a7c03c /textproc/cdiff/src | |
parent | 5a55a0f850ba51b463a62faf601f3190122018b9 (diff) | |
download | freebsd-ports-gnome-d773fb5e763490cbfd1806609b60c6e20f1d3800.tar.gz freebsd-ports-gnome-d773fb5e763490cbfd1806609b60c6e20f1d3800.tar.zst freebsd-ports-gnome-d773fb5e763490cbfd1806609b60c6e20f1d3800.zip |
Colorizing diff viewing tool
Diffstat (limited to 'textproc/cdiff/src')
-rw-r--r-- | textproc/cdiff/src/cdiff.1 | 67 | ||||
-rw-r--r-- | textproc/cdiff/src/cdiff.sh | 11 |
2 files changed, 78 insertions, 0 deletions
diff --git a/textproc/cdiff/src/cdiff.1 b/textproc/cdiff/src/cdiff.1 new file mode 100644 index 000000000000..8f4309741f5c --- /dev/null +++ b/textproc/cdiff/src/cdiff.1 @@ -0,0 +1,67 @@ +.\"- +.\" Copyright (c) 2000 Eivind Eklund +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer +.\" in this position and unchanged. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. The name of the author may not be used to endorse or promote products +.\" derived from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd September 20, 2000 +.Dt CDIFF 1 +.Sh NAME +.Nm cdiff +.Nd show diffs with colors +.Sh SYNOPSIS +.Nm cdiff +.Op Ar diff ... +.Sh DESCRIPTION +.Nm +reads a unidiff or context diff from stdin or from a set of files, adds color +codes, expands tabs to 8 spaces, and passes the results to +.Xr less 1 . +If used on a color terminal, it makes diffs much easier to read. +.Sh AUTHORS +.Nm +was written by +.An Eivind Eklund Aq eivind@FreeBSD.org . +based on a sed line somebody passed around. The code is (much) smaller than +this man page. +.Sh SEE ALSO +.Xr diff 1 , +.Xr less 1 . +.Sh BUGS +.Nm +assumes standard ANSI color escape sequences (as used by xterm and most other +commonly used terminals), rather than using +.Xr curses 3 . + +.Nm +should really be a large and complex C program based on +.Xr less 1 +and a diff library. This would allow a more informative display, including +collapsing pure deletions/insertions inside a single line to one line with +colors for deleted/added material, avoiding the line-wrap problems in less +due to less not knowing the effects or lengths of the color escape codes, +and correct handling of shifted tabs (instead of just expanding them to +spaces.) diff --git a/textproc/cdiff/src/cdiff.sh b/textproc/cdiff/src/cdiff.sh new file mode 100644 index 000000000000..690f28866cd0 --- /dev/null +++ b/textproc/cdiff/src/cdiff.sh @@ -0,0 +1,11 @@ +#!/bin/sh +exec perl -pe ' +while (s/\t/" " x (8 - ((length($`)-1) % 8))/e) {} +s/^(\+.*)$/\033[31m$1\033[m/o; +s/^(-.*)$/\033[34m$1\033[m/o + if !s/^(--- \d+,\d+ ----.*)$/\033[1m$1\033[m/o; +s/^(\*\*\* \d+,\d+ *\*\*\*.*)$/\033[1m$1\033[m/o; +s/^(\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*)$/\033[1m$1\033[m/o; +s/^(!.*)$/\033[35m$1\033[m/o; +s/^(@@.*$)/\033[1m$1\033[m/o; +' $@ | less -r |