35 |
|
|
36 |
(eval-when-compile (require 'cl)) |
(eval-when-compile (require 'cl)) |
37 |
(require 'pcvs-util) |
(require 'pcvs-util) |
38 |
|
(autoload 'vc-version-diff "vc") |
39 |
|
|
40 |
(defgroup log-view nil |
(defgroup log-view nil |
41 |
"Major mode for browsing log output of RCS/CVS/SCCS." |
"Major mode for browsing log output of RCS/CVS/SCCS." |
43 |
:prefix "log-view-") |
:prefix "log-view-") |
44 |
|
|
45 |
(easy-mmode-defmap log-view-mode-map |
(easy-mmode-defmap log-view-mode-map |
46 |
'(("n" . log-view-msg-next) |
'(("q" . quit-window) |
47 |
|
("z" . kill-this-buffer) |
48 |
|
("m" . set-mark-command) |
49 |
|
("d" . log-view-diff) |
50 |
|
("n" . log-view-msg-next) |
51 |
("p" . log-view-msg-prev) |
("p" . log-view-msg-prev) |
52 |
("N" . log-view-file-next) |
("N" . log-view-file-next) |
53 |
("P" . log-view-file-prev) |
("P" . log-view-file-prev) |
101 |
;;;###autoload |
;;;###autoload |
102 |
(define-derived-mode log-view-mode fundamental-mode "Log-View" |
(define-derived-mode log-view-mode fundamental-mode "Log-View" |
103 |
"Major mode for browsing CVS log output." |
"Major mode for browsing CVS log output." |
104 |
|
(set-buffer-modified-p nil) |
105 |
|
(setq buffer-read-only t) |
106 |
(set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults) |
(set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults) |
107 |
(set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap)) |
(set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap)) |
108 |
|
|
141 |
(dir "")) |
(dir "")) |
142 |
(let ((default-directory "")) |
(let ((default-directory "")) |
143 |
(when pcldir (setq dir (expand-file-name pcldir dir))) |
(when pcldir (setq dir (expand-file-name pcldir dir))) |
144 |
(when cvsdir (setq dir (expand-file-name cvsdir dir))) |
(when cvsdir (setq dir (expand-file-name cvsdir dir)))) |
145 |
(expand-file-name file dir))))) |
(expand-file-name file dir)))) |
146 |
|
|
147 |
(defun log-view-current-tag () |
(defun log-view-current-tag (&optional where) |
148 |
(save-excursion |
(save-excursion |
149 |
|
(when where (goto-char where)) |
150 |
(forward-line 1) |
(forward-line 1) |
151 |
(let ((pt (point))) |
(let ((pt (point))) |
152 |
(when (re-search-backward log-view-message-re nil t) |
(when (re-search-backward log-view-message-re nil t) |
174 |
(cvs-force-command "/F")) |
(cvs-force-command "/F")) |
175 |
(funcall f)))) |
(funcall f)))) |
176 |
|
|
177 |
|
;;; |
178 |
|
;;; diff |
179 |
|
;;; |
180 |
|
|
181 |
|
(defun log-view-diff (beg end) |
182 |
|
"Get the diff for several revisions. |
183 |
|
If the point is the same as the mark, get the diff for this revision. |
184 |
|
Otherwise, get the diff between the revisions |
185 |
|
were the region starts and ends." |
186 |
|
(interactive "r") |
187 |
|
(let ((fr (log-view-current-tag beg)) |
188 |
|
(to (log-view-current-tag end))) |
189 |
|
(when (string-equal fr to) |
190 |
|
(save-excursion |
191 |
|
(goto-char end) |
192 |
|
(log-view-msg-next) |
193 |
|
(setq to (log-view-current-tag)))) |
194 |
|
(vc-version-diff (log-view-current-file) to fr))) |
195 |
|
|
196 |
(provide 'log-view) |
(provide 'log-view) |
197 |
|
|
198 |
;;; Change Log: |
;;; Change Log: |
199 |
;; $Log$ |
;; $Log$ |
200 |
|
;; Revision 1.9 2001/11/12 23:01:17 sds |
201 |
|
;; * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and |
202 |
|
;; set-buffer-modified-p to nil after `vc-exec-after'. |
203 |
|
;; * log-view.el (log-view-mode-map): Bind "q", "z", "m" and "d". |
204 |
|
;; (log-view-mode): Make read-only. |
205 |
|
;; (log-view-current-file): Do final `expand-file-name' in the |
206 |
|
;; current `default-directory'. |
207 |
|
;; (log-view-current-tag): Take an optional `where' arg. |
208 |
|
;; (log-view-diff): New user command. |
209 |
|
;; |
210 |
;; Revision 1.8 2001/11/12 20:34:45 sds |
;; Revision 1.8 2001/11/12 20:34:45 sds |
211 |
;; updated (C) |
;; updated (C) |
212 |
;; |
;; |