summaryrefslogtreecommitdiff
path: root/lisp/saveplace.el
diff options
context:
space:
mode:
authorTassilo Horn <tassilo@member.fsf.org>2012-02-17 21:19:30 +0100
committerTassilo Horn <tassilo@member.fsf.org>2012-02-17 21:19:30 +0100
commit0311a3fc3d16d3dd7b34036a0b1ae063afadafa5 (patch)
tree23ee5c68e49f8cbe8e10bcc521577e69fb272096 /lisp/saveplace.el
parenteb864a71bd9a3ecf02dc994dcefd561aca0fdd4d (diff)
downloademacs-0311a3fc3d16d3dd7b34036a0b1ae063afadafa5.tar.gz
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. The default value matches the temporary commit message editing files from Git, SVN, Bazaar, and Mercurial. (save-place-to-alist): Use it.
Diffstat (limited to 'lisp/saveplace.el')
-rw-r--r--lisp/saveplace.el36
1 files changed, 22 insertions, 14 deletions
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'.