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 |