mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 04:10:54 -08:00
* lisp/saveplace.el (save-place-to-alist): Add `dired-filename' as
a position when `dired-directory' is non-nil. Check integer positions with `integerp'. (toggle-save-place, save-places-to-alist): Add check for `dired-directory'. (save-place-find-file-hook): Check integer positions with `integerp'. (save-place-dired-hook): Use `dired-goto-file' when `dired-filename' is found in the assoc list. Check integer positions with `integerp'. (dired-initial-position-hook): Rename from `dired-initial-point-hook'. * lisp/dired.el (dired-initial-position-hook): Rename back from `dired-initial-point-hook'. (dired-initial-position): Rename `dired-initial-point-hook' to `dired-initial-position-hook'. (dired-file-name-at-point): Doc fix. Fixes: debbugs:15329
This commit is contained in:
parent
eea2cba48e
commit
1d42e5b639
3 changed files with 61 additions and 17 deletions
|
|
@ -1,3 +1,23 @@
|
|||
2013-12-20 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* saveplace.el (save-place-to-alist): Add `dired-filename' as
|
||||
a position when `dired-directory' is non-nil. Check integer
|
||||
positions with `integerp'.
|
||||
(toggle-save-place, save-places-to-alist): Add check for
|
||||
`dired-directory'.
|
||||
(save-place-find-file-hook): Check integer positions with
|
||||
`integerp'.
|
||||
(save-place-dired-hook): Use `dired-goto-file' when
|
||||
`dired-filename' is found in the assoc list. Check integer
|
||||
positions with `integerp'.
|
||||
(dired-initial-position-hook): Rename from `dired-initial-point-hook'.
|
||||
|
||||
* dired.el (dired-initial-position-hook): Rename back from
|
||||
`dired-initial-point-hook'.
|
||||
(dired-initial-position): Rename `dired-initial-point-hook' to
|
||||
`dired-initial-position-hook'.
|
||||
(dired-file-name-at-point): Doc fix. (Bug#15329)
|
||||
|
||||
2013-12-20 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* replace.el (read-regexp-defaults-function): New defcustom (bug#14405).
|
||||
|
|
@ -3814,7 +3834,7 @@
|
|||
|
||||
* subr.el (eval-after-load): Preserve evaluation order (bug#15389).
|
||||
|
||||
* abbrev.el (abbrev--check-chars): Fix thinko (bug#15329).
|
||||
* abbrev.el (abbrev--check-chars): Fix thinko (bug#15360).
|
||||
|
||||
2013-09-16 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ with the buffer narrowed to the listing."
|
|||
;; Note this can't simply be run inside function `dired-ls' as the hook
|
||||
;; functions probably depend on the dired-subdir-alist to be OK.
|
||||
|
||||
(defcustom dired-initial-point-hook nil
|
||||
(defcustom dired-initial-position-hook nil
|
||||
"This hook is used to position the point.
|
||||
It is run the function `dired-initial-position'."
|
||||
:group 'dired
|
||||
|
|
@ -733,7 +733,9 @@ Don't use that together with FILTER."
|
|||
|
||||
(defun dired-file-name-at-point ()
|
||||
"Try to get a file name at point in the current dired buffer.
|
||||
This hook is intended to be put in `file-name-at-point-functions'."
|
||||
This hook is intended to be put in `file-name-at-point-functions'.
|
||||
Note that it returns an abbreviated name that can't be used
|
||||
as an argument to `dired-goto-file'."
|
||||
(let ((filename (dired-get-filename nil t)))
|
||||
(when filename
|
||||
(if (file-directory-p filename)
|
||||
|
|
@ -2763,7 +2765,7 @@ It runs the hook `dired-initial-position-hook'."
|
|||
(and (featurep 'dired-x) dired-find-subdir
|
||||
(dired-goto-subdir dirname))
|
||||
(if dired-trivial-filenames (dired-goto-next-nontrivial-file))
|
||||
(run-hooks 'dired-initial-point-hook))
|
||||
(run-hooks 'dired-initial-position-hook))
|
||||
|
||||
;; These are hooks which make tree dired work.
|
||||
;; They are in this file because other parts of dired need to call them.
|
||||
|
|
|
|||
|
|
@ -152,8 +152,8 @@ file:
|
|||
|
||||
\(setq-default save-place t\)"
|
||||
(interactive "P")
|
||||
(if (not buffer-file-name)
|
||||
(message "Buffer `%s' not visiting a file" (buffer-name))
|
||||
(if (not (or buffer-file-name dired-directory))
|
||||
(message "Buffer `%s' not visiting a file or directory" (buffer-name))
|
||||
(if (and save-place (or (not parg) (<= parg 0)))
|
||||
(progn
|
||||
(message "No place will be saved in this file")
|
||||
|
|
@ -161,6 +161,8 @@ file:
|
|||
(message "Place will be saved")
|
||||
(setq save-place t))))
|
||||
|
||||
(declare-function dired-get-filename "dired" (&optional localp no-error-if-not-filep))
|
||||
|
||||
(defun save-place-to-alist ()
|
||||
;; put filename and point in a cons box and then cons that onto the
|
||||
;; front of the save-place-alist, if save-place is non-nil.
|
||||
|
|
@ -170,20 +172,29 @@ file:
|
|||
;; will be saved again when Emacs is killed.
|
||||
(or save-place-loaded (load-save-place-alist-from-file))
|
||||
(let ((item (or buffer-file-name
|
||||
(and dired-directory (expand-file-name dired-directory)))))
|
||||
(and dired-directory
|
||||
(if (consp dired-directory)
|
||||
(expand-file-name (car dired-directory))
|
||||
(expand-file-name dired-directory))))))
|
||||
(when (and item
|
||||
(or (not save-place-ignore-files-regexp)
|
||||
(not (string-match save-place-ignore-files-regexp
|
||||
item))))
|
||||
(let ((cell (assoc item save-place-alist))
|
||||
(position (if (not (eq major-mode 'hexl-mode))
|
||||
(point)
|
||||
(with-no-warnings
|
||||
(1+ (hexl-current-address))))))
|
||||
(position (cond ((eq major-mode 'hexl-mode)
|
||||
(with-no-warnings
|
||||
(1+ (hexl-current-address))))
|
||||
(dired-directory
|
||||
(let ((filename (dired-get-filename nil t)))
|
||||
(if filename
|
||||
`((dired-filename . ,filename))
|
||||
(point))))
|
||||
(t (point)))))
|
||||
(if cell
|
||||
(setq save-place-alist (delq cell save-place-alist)))
|
||||
(if (and save-place
|
||||
(not (= position 1))) ;; Optimize out the degenerate case.
|
||||
(not (and (integerp position)
|
||||
(= position 1)))) ;; Optimize out the degenerate case.
|
||||
(setq save-place-alist
|
||||
(cons (cons item position)
|
||||
save-place-alist)))))))
|
||||
|
|
@ -290,7 +301,8 @@ may have changed\) back to `save-place-alist'."
|
|||
(with-current-buffer (car buf-list)
|
||||
;; save-place checks buffer-file-name too, but we can avoid
|
||||
;; overhead of function call by checking here too.
|
||||
(and buffer-file-name (save-place-to-alist))
|
||||
(and (or buffer-file-name dired-directory)
|
||||
(save-place-to-alist))
|
||||
(setq buf-list (cdr buf-list))))))
|
||||
|
||||
(defun save-place-find-file-hook ()
|
||||
|
|
@ -299,18 +311,27 @@ may have changed\) back to `save-place-alist'."
|
|||
(if cell
|
||||
(progn
|
||||
(or revert-buffer-in-progress-p
|
||||
(goto-char (cdr cell)))
|
||||
(and (integerp (cdr cell))
|
||||
(goto-char (cdr cell))))
|
||||
;; and make sure it will be saved again for later
|
||||
(setq save-place t)))))
|
||||
|
||||
(declare-function dired-goto-file "dired" (file))
|
||||
|
||||
(defun save-place-dired-hook ()
|
||||
"Position the point in a dired buffer."
|
||||
(or save-place-loaded (load-save-place-alist-from-file))
|
||||
(let ((cell (assoc (expand-file-name dired-directory) save-place-alist)))
|
||||
(let ((cell (assoc (if (consp dired-directory)
|
||||
(expand-file-name (car dired-directory))
|
||||
(expand-file-name dired-directory))
|
||||
save-place-alist)))
|
||||
(if cell
|
||||
(progn
|
||||
(or revert-buffer-in-progress-p
|
||||
(goto-char (cdr cell)))
|
||||
(if (integerp (cdr cell))
|
||||
(goto-char (cdr cell))
|
||||
(and (assq 'dired-filename (cdr cell))
|
||||
(dired-goto-file (cdr (assq 'dired-filename (cdr cell)))))))
|
||||
;; and make sure it will be saved again for later
|
||||
(setq save-place t)))))
|
||||
|
||||
|
|
@ -324,7 +345,8 @@ may have changed\) back to `save-place-alist'."
|
|||
|
||||
(add-hook 'find-file-hook 'save-place-find-file-hook t)
|
||||
|
||||
(add-hook 'dired-initial-point-hook 'save-place-dired-hook)
|
||||
(add-hook 'dired-initial-position-hook 'save-place-dired-hook)
|
||||
|
||||
(unless noninteractive
|
||||
(add-hook 'kill-emacs-hook 'save-place-kill-emacs-hook))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue