]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/vc/log-edit.el (log-edit-changelog-entries): Don't both visiting
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 9 Jul 2014 18:54:06 +0000 (14:54 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 9 Jul 2014 18:54:06 +0000 (14:54 -0400)
a non-existing file.

Fixes: debbugs:17970
lisp/ChangeLog
lisp/vc/log-edit.el

index 1ad086acf612c17d45143e05db1459fb627d57a8..a236e0470bc72c1c6a3fcb3c20f2faac8639e59f 100644 (file)
@@ -1,5 +1,8 @@
 2014-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * vc/log-edit.el (log-edit-changelog-entries): Don't both visiting
+       a non-existing file (bug#17970).
+
        * faces.el (face-name): Undo last change.
        (x-resolve-font-name): Don't call face-name (bug#17956).
 
index 1d75411ec1f8161e75e0feab4240abd7768f7838..322a9057fbc6e9b70b49b152a6fa62b0018ff9ee 100644 (file)
@@ -905,44 +905,45 @@ where LOGBUFFER is the name of the ChangeLog buffer, and each
              ;; that memoizing which is undesired here.
              (setq change-log-default-name nil)
              (find-change-log)))))
-    (with-current-buffer (find-file-noselect changelog-file-name)
-      (unless (eq major-mode 'change-log-mode) (change-log-mode))
-      (goto-char (point-min))
-      (if (looking-at "\\s-*\n") (goto-char (match-end 0)))
-      (if (not (log-edit-changelog-ours-p))
-         (list (current-buffer))
-       (save-restriction
-         (log-edit-narrow-changelog)
-         (goto-char (point-min))
-
-         ;; Search for the name of FILE relative to the ChangeLog.  If that
-         ;; doesn't occur anywhere, they're not using full relative
-         ;; filenames in the ChangeLog, so just look for FILE; we'll accept
-         ;; some false positives.
-         (let ((pattern (file-relative-name
-                         file (file-name-directory changelog-file-name))))
-           (if (or (string= pattern "")
-                   (not (save-excursion
-                          (search-forward pattern nil t))))
-               (setq pattern (file-name-nondirectory file)))
-
-            (setq pattern (concat "\\(^\\|[^[:alnum:]]\\)"
-                                  (regexp-quote pattern)
-                                  "\\($\\|[^[:alnum:]]\\)"))
-
-           (let (texts
-                  (pos (point)))
-             (while (and (not (eobp)) (re-search-forward pattern nil t))
-               (let ((entry (log-edit-changelog-entry)))
-                  (if (< (elt entry 1) (max (1+ pos) (point)))
-                      ;; This is not relevant, actually.
-                      nil
-                    (push entry texts))
-                  ;; Make sure we make progress.
-                  (setq pos (max (1+ pos) (elt entry 1)))
-                 (goto-char pos)))
-
-             (cons (current-buffer) texts))))))))
+    (when (file-exists-p changelog-file-name)
+      (with-current-buffer (find-file-noselect changelog-file-name)
+        (unless (eq major-mode 'change-log-mode) (change-log-mode))
+        (goto-char (point-min))
+        (if (looking-at "\\s-*\n") (goto-char (match-end 0)))
+        (if (not (log-edit-changelog-ours-p))
+            (list (current-buffer))
+          (save-restriction
+            (log-edit-narrow-changelog)
+            (goto-char (point-min))
+
+            ;; Search for the name of FILE relative to the ChangeLog.  If that
+            ;; doesn't occur anywhere, they're not using full relative
+            ;; filenames in the ChangeLog, so just look for FILE; we'll accept
+            ;; some false positives.
+            (let ((pattern (file-relative-name
+                            file (file-name-directory changelog-file-name))))
+              (if (or (string= pattern "")
+                      (not (save-excursion
+                             (search-forward pattern nil t))))
+                  (setq pattern (file-name-nondirectory file)))
+
+              (setq pattern (concat "\\(^\\|[^[:alnum:]]\\)"
+                                    (regexp-quote pattern)
+                                    "\\($\\|[^[:alnum:]]\\)"))
+
+              (let (texts
+                    (pos (point)))
+                (while (and (not (eobp)) (re-search-forward pattern nil t))
+                  (let ((entry (log-edit-changelog-entry)))
+                    (if (< (elt entry 1) (max (1+ pos) (point)))
+                        ;; This is not relevant, actually.
+                        nil
+                      (push entry texts))
+                    ;; Make sure we make progress.
+                    (setq pos (max (1+ pos) (elt entry 1)))
+                    (goto-char pos)))
+
+                (cons (current-buffer) texts)))))))))
 
 (defun log-edit-changelog-insert-entries (buffer beg end &rest files)
   "Insert the text from BUFFER between BEG and END.