[-- Attachment #1: Type: text/plain, Size: 365 bytes --] Package: emacs,org-mode 0. emacs -Q 1. enable save-place-mode 2. visit an org file with a single line: #+DATE: 2020-11-08 The cursor always jumps to the fixed place inside the date, and doesn't remember its previous position. Here is a fix to not set buffer-file-name (that causes save-place-mode to save wrong place for that file name) in a temporary buffer: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: org-element-parse-secondary-string.patch --] [-- Type: text/x-diff, Size: 671 bytes --] diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index be74dfdbef..d1fa777aa6 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el @@ -4144,7 +4144,8 @@ org-element-parse-secondary-string (dolist (v local-variables) (ignore-errors (if (symbolp v) (makunbound v) - (set (make-local-variable (car v)) (cdr v))))) + (unless (memq (car v) '(buffer-file-name buffer-file-truename)) + (set (make-local-variable (car v)) (cdr v)))))) ;; Transferring local variables may put the temporary buffer ;; into a read-only state. Make sure we can insert STRING. (let ((inhibit-read-only t)) (insert string))
tags 44524 fixed
close 44524 28.0.50
quit
> Package: emacs,org-mode
>
> 0. emacs -Q
> 1. enable save-place-mode
> 2. visit an org file with a single line:
>
> #+DATE: 2020-11-08
>
> The cursor always jumps to the fixed place inside the date,
> and doesn't remember its previous position. Here is a fix
> to not set buffer-file-name (that causes save-place-mode to save
> wrong place for that file name) in a temporary buffer:
>
> diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
> index be74dfdbef..d1fa777aa6 100644
> --- a/lisp/org/org-element.el
> +++ b/lisp/org/org-element.el
> @@ -4144,7 +4144,8 @@ org-element-parse-secondary-string
> (dolist (v local-variables)
> (ignore-errors
> (if (symbolp v) (makunbound v)
> - (set (make-local-variable (car v)) (cdr v)))))
> + (unless (memq (car v) '(buffer-file-name buffer-file-truename))
> + (set (make-local-variable (car v)) (cdr v))))))
> ;; Transferring local variables may put the temporary buffer
> ;; into a read-only state. Make sure we can insert STRING.
> (let ((inhibit-read-only t)) (insert string))
Pushed to Emacs master, and closed.