diff options
| author | Dan Nicolaescu | 2007-09-22 00:02:52 +0000 |
|---|---|---|
| committer | Dan Nicolaescu | 2007-09-22 00:02:52 +0000 |
| commit | a3f5d84dacc5ca61215c8601a658d995f4210c64 (patch) | |
| tree | a51b3cf5375e3cd35732712e714119e0ed663f8d | |
| parent | 2e2cc4e44dbba6873bc6cffe425b7dd196e74ef9 (diff) | |
| download | emacs-a3f5d84dacc5ca61215c8601a658d995f4210c64.tar.gz emacs-a3f5d84dacc5ca61215c8601a658d995f4210c64.zip | |
* files.el (file-name-sans-versions): Allow - and a-z in version
names.
* log-view.el (log-view-mode-map, log-view-mode-menu): Bind
log-view-annotate-version.
(log-view-beginning-of-defun, log-view-end-of-defun)
(log-view-annotate-version): New functions.
(log-view-mode): Use log-view-beginning-of-defun and
log-view-end-of-defun.
| -rw-r--r-- | lisp/ChangeLog | 12 | ||||
| -rw-r--r-- | lisp/files.el | 2 | ||||
| -rw-r--r-- | lisp/log-view.el | 59 |
3 files changed, 72 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c0e61af4a29..23866abc8e6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,15 @@ | |||
| 1 | 2007-09-21 Dan Nicolaescu <dann@ics.uci.edu> | ||
| 2 | |||
| 3 | * files.el (file-name-sans-versions): Allow - and a-z in version | ||
| 4 | names. | ||
| 5 | |||
| 6 | * log-view.el (log-view-mode-map, log-view-mode-menu): Bind | ||
| 7 | log-view-annotate-version. | ||
| 8 | (log-view-beginning-of-defun, log-view-end-of-defun) | ||
| 9 | (log-view-annotate-version): New functions. | ||
| 10 | (log-view-mode): Use log-view-beginning-of-defun and | ||
| 11 | log-view-end-of-defun. | ||
| 12 | |||
| 1 | 2007-09-21 Stefan Monnier <monnier@iro.umontreal.ca> | 13 | 2007-09-21 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 14 | ||
| 3 | * emacs-lisp/easy-mmode.el (define-minor-mode): Fix staging brain damage. | 15 | * emacs-lisp/easy-mmode.el (define-minor-mode): Fix staging brain damage. |
diff --git a/lisp/files.el b/lisp/files.el index 6397a5ded66..17b4a6504db 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -3188,7 +3188,7 @@ we do not remove backup version numbers, only true file version numbers." | |||
| 3188 | (length name)) | 3188 | (length name)) |
| 3189 | (if keep-backup-version | 3189 | (if keep-backup-version |
| 3190 | (length name) | 3190 | (length name) |
| 3191 | (or (string-match "\\.~[0-9.]+~\\'" name) | 3191 | (or (string-match "\\.~[-0-9a-z.]+~\\'" name) |
| 3192 | (string-match "~\\'" name) | 3192 | (string-match "~\\'" name) |
| 3193 | (length name)))))))) | 3193 | (length name)))))))) |
| 3194 | 3194 | ||
diff --git a/lisp/log-view.el b/lisp/log-view.el index 41e689f0025..4f699af69bf 100644 --- a/lisp/log-view.el +++ b/lisp/log-view.el | |||
| @@ -92,6 +92,7 @@ | |||
| 92 | ("m" . set-mark-command) | 92 | ("m" . set-mark-command) |
| 93 | ;; ("e" . cvs-mode-edit-log) | 93 | ;; ("e" . cvs-mode-edit-log) |
| 94 | ("d" . log-view-diff) | 94 | ("d" . log-view-diff) |
| 95 | ("a" . log-view-annotate-version) | ||
| 95 | ("f" . log-view-find-version) | 96 | ("f" . log-view-find-version) |
| 96 | ("n" . log-view-msg-next) | 97 | ("n" . log-view-msg-next) |
| 97 | ("p" . log-view-msg-prev) | 98 | ("p" . log-view-msg-prev) |
| @@ -114,6 +115,7 @@ | |||
| 114 | ["Mark Log Entry for Diff" set-mark-command] | 115 | ["Mark Log Entry for Diff" set-mark-command] |
| 115 | ["Diff Revisions" log-view-diff] | 116 | ["Diff Revisions" log-view-diff] |
| 116 | ["Visit Version" log-view-find-version] | 117 | ["Visit Version" log-view-find-version] |
| 118 | ["Annotate Version" log-view-annotate-version] | ||
| 117 | ["Next Log Entry" log-view-msg-next] | 119 | ["Next Log Entry" log-view-msg-next] |
| 118 | ["Previous Log Entry" log-view-msg-prev] | 120 | ["Previous Log Entry" log-view-msg-prev] |
| 119 | ["Next File" log-view-file-next] | 121 | ["Next File" log-view-file-next] |
| @@ -184,6 +186,10 @@ | |||
| 184 | "Major mode for browsing CVS log output." | 186 | "Major mode for browsing CVS log output." |
| 185 | (setq buffer-read-only t) | 187 | (setq buffer-read-only t) |
| 186 | (set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults) | 188 | (set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults) |
| 189 | (set (make-local-variable 'beginning-of-defun-function) | ||
| 190 | 'log-view-beginning-of-defun) | ||
| 191 | (set (make-local-variable 'end-of-defun-function) | ||
| 192 | 'log-view-end-of-defun) | ||
| 187 | (set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap)) | 193 | (set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap)) |
| 188 | 194 | ||
| 189 | ;;;; | 195 | ;;;; |
| @@ -237,6 +243,51 @@ | |||
| 237 | (unless (re-search-forward log-view-file-re pt t) | 243 | (unless (re-search-forward log-view-file-re pt t) |
| 238 | rev)))))) | 244 | rev)))))) |
| 239 | 245 | ||
| 246 | (defun log-view-beginning-of-defun () | ||
| 247 | ;; This assumes that a log entry starts with a line matching | ||
| 248 | ;; `log-view-message-re'. Modes that derive from `log-view-mode' | ||
| 249 | ;; for which this assumption is not valid will have to provide | ||
| 250 | ;; another implementation of this function. `log-view-msg-prev' | ||
| 251 | ;; does a similar job to this function, we can't use it here | ||
| 252 | ;; directly because it prints messages that are not appropriate in | ||
| 253 | ;; this context and it does not move to the beginning of the buffer | ||
| 254 | ;; when the point is before the first log entry. | ||
| 255 | |||
| 256 | ;; `log-view-beginning-of-defun' and `log-view-end-of-defun' have | ||
| 257 | ;; been checked to work with logs produced by RCS, CVS, git, | ||
| 258 | ;; mercurial and subversion. | ||
| 259 | |||
| 260 | (re-search-backward log-view-message-re nil 'move)) | ||
| 261 | |||
| 262 | (defun log-view-end-of-defun () | ||
| 263 | ;; The idea in this function is to search for the beginning of the | ||
| 264 | ;; next log entry using `log-view-message-re' and then go back one | ||
| 265 | ;; line when finding it. Modes that derive from `log-view-mode' for | ||
| 266 | ;; which this assumption is not valid will have to provide another | ||
| 267 | ;; implementation of this function. | ||
| 268 | |||
| 269 | ;; Look back and if there is no entry there it means we are before | ||
| 270 | ;; the first log entry, so go forward until finding one. | ||
| 271 | (unless (save-excursion (re-search-backward log-view-message-re nil t)) | ||
| 272 | (re-search-forward log-view-message-re nil t)) | ||
| 273 | |||
| 274 | ;; In case we are at the end of log entry going forward a line will | ||
| 275 | ;; make us find the next entry when searching. If we are inside of | ||
| 276 | ;; an entry going forward a line will still keep the point inside | ||
| 277 | ;; the same entry. | ||
| 278 | (forward-line 1) | ||
| 279 | |||
| 280 | ;; In case we are at the beginning of an entry, move past it. | ||
| 281 | (when (looking-at log-view-message-re) | ||
| 282 | (goto-char (match-end 0)) | ||
| 283 | (forward-line 1)) | ||
| 284 | |||
| 285 | ;; Search for the start of the next log entry. Go to the end of the | ||
| 286 | ;; buffer if we could not find a next entry. | ||
| 287 | (when (re-search-forward log-view-message-re nil 'move) | ||
| 288 | (goto-char (match-beginning 0)) | ||
| 289 | (forward-line -1))) | ||
| 290 | |||
| 240 | (defvar cvs-minor-current-files) | 291 | (defvar cvs-minor-current-files) |
| 241 | (defvar cvs-branch-prefix) | 292 | (defvar cvs-branch-prefix) |
| 242 | (defvar cvs-secondary-branch-prefix) | 293 | (defvar cvs-secondary-branch-prefix) |
| @@ -276,6 +327,14 @@ | |||
| 276 | (switch-to-buffer (vc-find-version (log-view-current-file) | 327 | (switch-to-buffer (vc-find-version (log-view-current-file) |
| 277 | (log-view-current-tag))))) | 328 | (log-view-current-tag))))) |
| 278 | 329 | ||
| 330 | (defun log-view-annotate-version (pos) | ||
| 331 | "Annotate the version at point." | ||
| 332 | (interactive "d") | ||
| 333 | (save-excursion | ||
| 334 | (goto-char pos) | ||
| 335 | (switch-to-buffer (vc-annotate (log-view-current-file) | ||
| 336 | (log-view-current-tag))))) | ||
| 337 | |||
| 279 | ;; | 338 | ;; |
| 280 | ;; diff | 339 | ;; diff |
| 281 | ;; | 340 | ;; |