From 0311a3fc3d16d3dd7b34036a0b1ae063afadafa5 Mon Sep 17 00:00:00 2001 From: Tassilo Horn Date: Fri, 17 Feb 2012 21:19:30 +0100 Subject: [PATCH] 2012-02-17 Tassilo Horn * 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 | 8 ++++++++ lisp/saveplace.el | 36 ++++++++++++++++++++++-------------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3d15010e16d..cbb9265a35e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2012-02-17 Tassilo Horn + + * 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 Stefan Monnier diff --git a/lisp/saveplace.el b/lisp/saveplace.el index 0588bf258a7..5850d2b8d33 100644 --- a/lisp/saveplace.el +++ b/lisp/saveplace.el @@ -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'. -- 2.39.2