]> git.eshelyaron.com Git - emacs.git/commitdiff
* add-log.el (change-log-search-file-name, change-log-find-file):
authorDan Nicolaescu <dann@ics.uci.edu>
Sun, 27 Jan 2008 19:48:44 +0000 (19:48 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Sun, 27 Jan 2008 19:48:44 +0000 (19:48 +0000)
New function.
(change-log-font-lock-keywords): Move file name matching ...
(change-log-file-names-re): ... here.  New defconst.
(change-log-mode-map): New binding C-c C-f to change-log-find-file.

lisp/ChangeLog
lisp/add-log.el

index 48c5455ea3bd0a95fe2f894279c30e9e3558d83c..c2aeff86f93fad1b94a5ca0cdb8849cc551f8f0e 100644 (file)
@@ -1,3 +1,11 @@
+2007-01-27  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+        * add-log.el (change-log-search-file-name, change-log-find-file):
+        New function.
+       (change-log-font-lock-keywords): Move file name matching ...
+       (change-log-file-names-re): ... here.  New defconst.
+        (change-log-mode-map): New binding C-c C-f to change-log-find-file.
+
 2008-01-27  Alan Mackenzie  <acm@muc.de>
 
        * progmodes/cc-awk.el, progmodes/cc-engine.el: Correct typos,
index a52aa5198199a0b3ad024e8c1bb0ebf195b64832..534dbd0746d0888ca589654651161815edd765d6 100644 (file)
@@ -240,8 +240,10 @@ Note: The search is conducted only within 10%, at the beginning of the file."
 ;; backward-compatibility alias
 (put 'change-log-acknowledgement-face 'face-alias 'change-log-acknowledgement)
 
+(defconst change-log-file-names-re "^\\( +\\|\t\\)\\* \\([^ ,:([\n]+\\)")
+
 (defvar change-log-font-lock-keywords
-  '(;;
+  `(;;
     ;; Date lines, new (2000-01-01) and old (Sat Jan  1 00:00:00 2000) styles.
     ;; Fixme: this regepx is just an approximate one and may match
     ;; wrongly with a non-date line existing as a random note.  In
@@ -255,7 +257,7 @@ Note: The search is conducted only within 10%, at the beginning of the file."
       (2 'change-log-email)))
     ;;
     ;; File names.
-    ("^\\( +\\|\t\\)\\* \\([^ ,:([\n]+\\)"
+    (,change-log-file-names-re
      (2 'change-log-file)
      ;; Possibly further names in a list:
      ("\\=, \\([^ ,:([\n]+\\)" nil nil (1 'change-log-file))
@@ -287,10 +289,27 @@ Note: The search is conducted only within 10%, at the beginning of the file."
      3 'change-log-acknowledgement))
   "Additional expressions to highlight in Change Log mode.")
 
+(defun change-log-search-file-name (where)
+  "Return the file-name for the change under point."
+  (save-excursion
+    (goto-char where)
+    (beginning-of-line 1)
+    (re-search-forward change-log-file-names-re)
+    (match-string 2)))
+
+(defun change-log-find-file ()
+  "Visit the file for the change under point."
+  (interactive)
+  (let ((file (change-log-search-file-name (point))))
+    (if (and file (file-exists-p file))
+       (find-file file)
+      (message "No such file or directory: ~s" file))))
+
 (defvar change-log-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map [?\C-c ?\C-p] 'add-log-edit-prev-comment)
     (define-key map [?\C-c ?\C-n] 'add-log-edit-next-comment)
+    (define-key map [?\C-c ?\C-f] 'change-log-find-file)
     map)
   "Keymap for Change Log major mode.")