[Cl-darcs-cvs] r81 - cl-darcs/trunk

mhenoch at common-lisp.net mhenoch at common-lisp.net
Tue Nov 28 00:15:22 UTC 2006


Author: mhenoch
Date: Mon Nov 27 19:15:21 2006
New Revision: 81

Added:
   cl-darcs/trunk/display-patch.lisp
Modified:
   cl-darcs/trunk/cl-darcs.asd
Log:
Add display-patch.lisp


Modified: cl-darcs/trunk/cl-darcs.asd
==============================================================================
--- cl-darcs/trunk/cl-darcs.asd	(original)
+++ cl-darcs/trunk/cl-darcs.asd	Mon Nov 27 19:15:21 2006
@@ -45,6 +45,7 @@
    (:file "write-patch" :depends-on ("patch-core"))
    (:file "apply-patch" :depends-on ("patch-core"))
    (:file "invert-patch" :depends-on ("patch-core"))
+   (:file "display-patch" :depends-on ("patch-core"))
    (:file "pristine" :depends-on ("patch-core"))
    (:file "touching" :depends-on ("patch-core"))
    (:file "commute" :depends-on ("patch-core"))

Added: cl-darcs/trunk/display-patch.lisp
==============================================================================
--- (empty file)
+++ cl-darcs/trunk/display-patch.lisp	Mon Nov 27 19:15:21 2006
@@ -0,0 +1,36 @@
+;;; Copyright (C) 2006 Magnus Henoch
+;;;
+;;; 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 2 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, write to the Free Software
+;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+(in-package :darcs)
+
+(defgeneric display-patch (patch stream)
+  (:documentation
+   "Print an elaborate and readable description of PATCH to STREAM."))
+
+(defmethod display-patch ((patch patch) stream)
+  "When no display method is defined, write a terse description."
+  (print patch stream))
+
+(defmethod display-patch ((patch hunk-patch) stream)
+  (format stream "~&~A: ~A~[~:;~:*-~A~]~[~:;~:*+~A~]"
+	    (patch-filename patch)
+	    (hunk-line-number patch)
+	    (length (hunk-old-lines patch))
+	    (length (hunk-new-lines patch)))
+  (dolist (old (hunk-old-lines patch))
+    (format stream "~&-~A" (bytes-to-string old)))
+  (dolist (new (hunk-new-lines patch))
+    (format stream "~&+~A" (bytes-to-string new))))



More information about the Cl-darcs-cvs mailing list