contrib/mercurial.el
changeset 1027 cb31576ed3e4
parent 1026 a5539638c5a3
child 1029 b5f0ccad8917
equal deleted inserted replaced
1026:a5539638c5a3 1027:cb31576ed3e4
   796 With a prefix argument, prompt for all of these."
   796 With a prefix argument, prompt for all of these."
   797   (interactive (list (hg-read-file-name " to diff")
   797   (interactive (list (hg-read-file-name " to diff")
   798 		     (hg-read-rev " to start with")
   798 		     (hg-read-rev " to start with")
   799 		     (let ((rev2 (hg-read-rev " to end with" 'working-dir)))
   799 		     (let ((rev2 (hg-read-rev " to end with" 'working-dir)))
   800 		       (and (not (eq rev2 'working-dir)) rev2))))
   800 		       (and (not (eq rev2 'working-dir)) rev2))))
   801   (unless rev1
       
   802     (setq rev1 "-1"))
       
   803   (hg-sync-buffers path)
   801   (hg-sync-buffers path)
   804   (let ((a-path (hg-abbrev-file-name path))
   802   (let ((a-path (hg-abbrev-file-name path))
       
   803 	(r1 (or rev1 "tip"))
   805 	diff)
   804 	diff)
   806     (hg-view-output ((if (equal rev1 rev2)
   805     (hg-view-output ((cond
   807 			 (format "Mercurial: Rev %s of %s" rev1 a-path)
   806 		      ((and (equal r1 "tip") (not rev2))
   808 		       (format "Mercurial: Rev %s to %s of %s"
   807 		       (format "Mercurial: Diff against tip of %s" a-path))
   809 			       rev1 (or rev2 "Current") a-path)))
   808 		      ((equal r1 rev2)
       
   809 		       (format "Mercurial: Diff of rev %s of %s" r1 a-path))
       
   810 		      (t
       
   811 		       (format "Mercurial: Diff from rev %s to %s of %s"
       
   812 			       r1 (or rev2 "Current") a-path))))
   810       (if rev2
   813       (if rev2
   811 	  (call-process (hg-binary) nil t nil "diff" "-r" rev1 "-r" rev2 path)
   814 	  (call-process (hg-binary) nil t nil "diff" "-r" r1 "-r" rev2 path)
   812 	(call-process (hg-binary) nil t nil "diff" "-r" rev1 path))
   815 	(call-process (hg-binary) nil t nil "diff" "-r" r1 path))
   813       (diff-mode)
   816       (diff-mode)
   814       (setq diff (not (= (point-min) (point-max))))
   817       (setq diff (not (= (point-min) (point-max))))
   815       (font-lock-fontify-buffer))
   818       (font-lock-fontify-buffer))
   816     diff))
   819     diff))
   817 
   820 
   842   (interactive)
   845   (interactive)
   843   (error "not implemented"))
   846   (error "not implemented"))
   844 
   847 
   845 (defun hg-log (path &optional rev1 rev2)
   848 (defun hg-log (path &optional rev1 rev2)
   846   "Display the revision history of PATH, between REV1 and REV2.
   849   "Display the revision history of PATH, between REV1 and REV2.
   847 REV1 defaults to the initial revision, while REV2 defaults to the tip.
   850 REV1 defaults to hg-log-limit changes from the tip revision, while
   848 With a prefix argument, prompt for each parameter.
   851 REV2 defaults to the tip.
   849 Variable hg-log-limit controls the number of log entries displayed."
   852 With a prefix argument, prompt for each parameter."
   850   (interactive (list (hg-read-file-name " to log")
   853   (interactive (list (hg-read-file-name " to log")
   851 		     (hg-read-rev " to start with" "-1")
   854 		     (hg-read-rev " to start with" "-1")
   852 		     (hg-read-rev " to end with" (format "-%d" hg-log-limit))))
   855 		     (hg-read-rev " to end with" (format "-%d" hg-log-limit))))
   853   (let ((a-path (hg-abbrev-file-name path)))
   856   (let ((a-path (hg-abbrev-file-name path))
   854     (hg-view-output ((if (equal rev1 rev2)
   857 	(r1 (or rev1 (format "-%d" hg-log-limit)))
   855 			 (format "Mercurial: Rev %s of %s" rev1 a-path)
   858 	(r2 (or rev2 rev1 "-1")))
   856 		       (format "Mercurial: Rev %s to %s of %s"
   859     (hg-view-output ((if (equal r1 r2)
   857 			       rev1 (or rev2 "Current") a-path)))
   860 			 (format "Mercurial: Log of rev %s of %s" rev1 a-path)
       
   861 		       (format "Mercurial: Log from rev %s to %s of %s"
       
   862 			       r1 r2 a-path)))
   858       (if (> (length path) (length (hg-root path)))
   863       (if (> (length path) (length (hg-root path)))
   859 	  (call-process (hg-binary) nil t nil "log" "-r" rev1 "-r" rev2 path)
   864 	  (call-process (hg-binary) nil t nil "log" "-r" r1 "-r" r2 path)
   860 	(call-process (hg-binary) nil t nil "log" "-r" rev1 "-r" rev2))
   865 	(call-process (hg-binary) nil t nil "log" "-r" r1 "-r" r2))
   861       (font-lock-fontify-buffer))))
   866       (font-lock-fontify-buffer))))
   862 
   867 
   863 (defun hg-log-repo (path &optional rev1 rev2)
   868 (defun hg-log-repo (path &optional rev1 rev2)
   864   "Display the revision history of the repository containing PATH.
   869   "Display the revision history of the repository containing PATH.
   865 History is displayed between REV1, which defaults to the tip, and
   870 History is displayed between REV1, which defaults to the tip, and