]> git.eshelyaron.com Git - emacs.git/commitdiff
2012-02-17 Tassilo Horn <tassilo@member.fsf.org>
authorTassilo Horn <tassilo@member.fsf.org>
Fri, 17 Feb 2012 20:19:30 +0000 (21:19 +0100)
committerTassilo Horn <tassilo@member.fsf.org>
Fri, 17 Feb 2012 20:19:30 +0000 (21:19 +0100)
* saveplace.el (save-place-ignore-files-regexp): New variable
allowing for excluding files from saving their location.  The
default value matches the temporary commit message editing files
from Git, SVN, Bazaar, and Mercurial.
(save-place-to-alist): Use it.

lisp/ChangeLog
lisp/saveplace.el

index 3d15010e16d92a098eedcbbc5fe3595e0cbf1201..cbb9265a35e8c5c995f2d5f50893e5356cf64b82 100644 (file)
@@ -1,3 +1,11 @@
+2012-02-17  Tassilo Horn  <tassilo@member.fsf.org>
+
+       * saveplace.el (save-place-ignore-files-regexp): New variable
+       allowing for excluding files from saving their location of point.
+       The default value matches the temporary commit message editing
+       files from Git, SVN, Bazaar, and Mercurial.
+       (save-place-to-alist): Use it.
+
 2012-02-17  Lawrence Mitchell <wence@gmx.li>
             Stefan Monnier  <monnier@iro.umontreal.ca>
 
index 0588bf258a765a60c80c0cda2daf47be8df4a087..5850d2b8d3334360e1fd8133e3b9317545f365f4 100644 (file)
@@ -130,6 +130,13 @@ Files for which such a check may be inconvenient include those on
 removable and network volumes."
   :type 'regexp :group 'save-place)
 
+(defcustom save-place-ignore-files-regexp
+  "\\(?:COMMIT_EDITMSG\\|hg-editor-[[:alnum:]]+\\.txt\\|svn-commit\\.tmp\\|bzr_log\\.[[:alnum:]]+\\)$"
+  "Regexp matching files for which no location should be recorded.
+Useful for temporary file such as commit message files that are
+automatically created by the VCS."
+  :type 'regexp :group 'save-place)
+
 (defun toggle-save-place (&optional parg)
   "Toggle whether to save your place in this file between sessions.
 If this mode is enabled, point is recorded when you kill the buffer
@@ -160,20 +167,21 @@ To save places automatically in all files, put this in your `.emacs' file:
   ;; file.  If not, do so, then feel free to modify the alist.  It
   ;; will be saved again when Emacs is killed.
   (or save-place-loaded (load-save-place-alist-from-file))
-  (if buffer-file-name
-      (progn
-        (let ((cell (assoc buffer-file-name save-place-alist))
-             (position (if (not (eq major-mode 'hexl-mode))
-                           (point)
-                         (with-no-warnings
-                           (1+ (hexl-current-address))))))
-          (if cell
-              (setq save-place-alist (delq cell save-place-alist)))
-         (if (and save-place
-                  (not (= position 1)))  ;; Optimize out the degenerate case.
-             (setq save-place-alist
-                   (cons (cons buffer-file-name position)
-                         save-place-alist)))))))
+  (when (and buffer-file-name
+            (not (string-match save-place-ignore-files-regexp
+                               buffer-file-name)))
+    (let ((cell (assoc buffer-file-name save-place-alist))
+         (position (if (not (eq major-mode 'hexl-mode))
+                       (point)
+                     (with-no-warnings
+                       (1+ (hexl-current-address))))))
+      (if cell
+         (setq save-place-alist (delq cell save-place-alist)))
+      (if (and save-place
+              (not (= position 1)))  ;; Optimize out the degenerate case.
+         (setq save-place-alist
+               (cons (cons buffer-file-name position)
+                     save-place-alist))))))
 
 (defun save-place-forget-unreadable-files ()
   "Remove unreadable files from `save-place-alist'.