view lib-src/vcdiff @ 5872:f9e59cd39a9a

Clean up #'read-quoted-char, support help-event-list there. lisp/changeLog addition: 2015-03-14 Aidan Kehoe <kehoea@parhasard.net> * simple.el (quoted-insert): Update the docstring here, syncing GNU's, especially mentioning read-quoted-char-radix. * cmdloop.el: * cmdloop.el (read-quoted-char-radix): Move this up here, outside the functions. * cmdloop.el (read-function-key-map): New label, reading and replacing characters from function-key-map if appropriate. * cmdloop.el (read-quoted-char): Multiple changes: -- Take advantage of help-event-list, but be careful not to have any keystrokes with character equivalents in it, so the user can type C-q C-h and have the expected result. -- Use function-key-map, as does #'read-char and #'read-exclusive-char, helpful for character composition under X11. -- Pop up the help window ourselves if, e.g. F1 arrives on a TTY via function-key-map, event-stream won't have done it. -- Error if no keystroke that can be converted into a character is specified, don't just insert ?\x00 as we used to and as does GNU -- Use #'digit-char-p instead of reimplementing it. -- Fix a bug of mine where I wasn't consistent about treating character codes as Unicode.
author Aidan Kehoe <kehoea@parhasard.net>
date Tue, 17 Mar 2015 12:22:50 +0000
parents 06dd936cde16
children
line wrap: on
line source

#! /bin/sh

# Enhanced sccs diff utility for use with vc mode.
# This version is more compatible with rcsdiff(1).

# Copyright (C) 1992, 1993, 1995, 1997, 2001, 2002, 2003, 2004, 2005,
#   2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.

# Author: Paul Eggert
# (according to authors.el)

# This file is part of XEmacs.

# XEmacs 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.

# XEmacs 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 XEmacs.  If not, see <http://www.gnu.org/licenses/>.

# Modified by: vladimir@Eng.Sun.COM on 95-06-07
# * Made sure that file arguments are specifed as s.<filename>.

# Synced up with: GNU 23.1.92.
# Synced by: Ben Wing, 2-17-10.


DIFF="diff"
usage="$0: Usage: vcdiff [--brief] [-q] [-r<sid1>] [-r<sid2>] [diffopts] sccsfile..."

# Now that we use `sccs get' rather than just `get', we don't need this.
# PATH=$PATH:/usr/ccs/bin:/usr/sccs:/usr/xpg4/bin # common SCCS hangouts

echo="echo"
sid1= sid2=

for f
do
	case $f in
	-*)
		case $f in
		--brief)
			DIFF=cmp;;
		-q)
			echo=:;;
		-r?*)
			case $sid1 in
			'')
				sid1=$f
				;;
			*) 
				case $sid2 in
				?*) echo "$usage" >&2; exit 2 ;;
				esac
				sid2=$f
				;;
			esac
			;;
		*)
			options="$options $f"
			;;
		esac
		shift
		;;
	*)
		break
		;;
	esac
done

case $# in
0)
	echo "$usage" >&2
	exit 2
esac


rev1= rev2= status=0
trap 'status=2; exit' 1 2 13 15
trap 'rm -f $rev1 $rev2 || status=2; exit $status' 0

for f
do
	s=2
	
	# For files under SCCS control, fixup the file name to be the
	# s. filename
	if [ -d SCCS ]; then
		if [ $f = `echo $f | sed -e 's|SCCS/s.||'` ]; then
			f="SCCS/s.$f"
		fi
	fi 

	case $f in
	s.* | */s.*)
		if
			rev1=`mktemp /tmp/geta.XXXXXXXX`
			sccs get -s -p -k $sid1 "$f" > $rev1 &&
			case $sid2 in
			'')
				workfile=`expr " /$f" : '.*/s.\(.*\)'`
				;;
			*)
				rev2=`mktemp /tmp/getb.XXXXXXXX`
				sccs get -s -p -k $sid2 "$f" > $rev2
				workfile=$rev2
			esac
		then
			$echo $DIFF $options $rev1 $workfile >&2
			$DIFF $options $rev1 $workfile
			s=$?
		fi
		;;
	*)
		echo "$0: $f is not an SCCS file" >&2
	esac

	if test $status -lt $s
	then status=$s
	fi
done

# arch-tag: 4344ba3a-bcbe-4f77-971c-f43c1606953a