Improve don't save bookmark context from encrypted files
* etc/NEWS: Mention 'bookmark-inhibit-context-functions'. Fix typos. * lisp/bookmark.el (bookmark-inhibit-context-functions): New defcustom. (bookmark-make-record): Use it. * lisp/auth-source-pass.el (auth-source-pass-file-name-p): * lisp/auth-source.el (auth-source-file-name-p): New defuns. Add them to `bookmark-inhibit-context-functions'. * lisp/epa-hook.el (epa-file-name-p): * lisp/net/tramp-crypt.el (tramp-crypt-file-name-p): Add them to `bookmark-inhibit-context-functions'.
This commit is contained in:
parent
9369e4242f
commit
4cb53c0528
6 changed files with 63 additions and 18 deletions
30
etc/NEWS
30
etc/NEWS
|
|
@ -183,7 +183,10 @@ of 'user-emacs-directory'.
|
|||
+++
|
||||
*** Bookmarks no longer include context for encrypted files.
|
||||
If you're visiting an encrypted file, setting a bookmark no longer
|
||||
includes excerpts from that buffer in the bookmarks file.
|
||||
includes excerpts from that buffer in the bookmarks file. This is
|
||||
implemented by the new hook 'bookmark-inhibit-context-functions',
|
||||
where packages can register a function which returns non-nil for file
|
||||
names to be excluded from adding such excerpts.
|
||||
|
||||
---
|
||||
*** 'show-paren-mode' is now disabled in 'special-mode' buffers.
|
||||
|
|
@ -391,8 +394,8 @@ are also obsolete.
|
|||
|
||||
---
|
||||
** The linum.el library is now obsolete.
|
||||
We recommend using either the built-in `display-line-numbers-mode', or
|
||||
the `nlinum' package from GNU ELPA instead. The former has better
|
||||
We recommend using either the built-in 'display-line-numbers-mode', or
|
||||
the 'nlinum' package from GNU ELPA instead. The former has better
|
||||
performance, but the latter is closer to a drop-in replacement.
|
||||
|
||||
---
|
||||
|
|
@ -1529,7 +1532,7 @@ uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form'
|
|||
(which is now declared obsolete).
|
||||
|
||||
---
|
||||
** 'savehist.el' can now truncate variables that are too long.
|
||||
** savehist.el can now truncate variables that are too long.
|
||||
An element of 'savehist-additional-variables' can now be of the form
|
||||
'(VARIABLE . MAX-ELTS)', which means to truncate the VARIABLE's value to
|
||||
at most MAX-ELTS elements (if the value is a list) before saving the
|
||||
|
|
@ -2155,7 +2158,7 @@ nil to disable this confirmation completely.
|
|||
*** 'image-dired-thumb-size' increased to 128.
|
||||
|
||||
---
|
||||
*** 'image-dired-thumb-(height|width)' are now obsolete.
|
||||
*** 'image-dired-thumb-{height,width}' are now obsolete.
|
||||
Customize 'image-dired-thumb-size' instead, which will set both the
|
||||
height and width.
|
||||
|
||||
|
|
@ -2469,9 +2472,9 @@ Enabling this minor mode turns on hiding header material, like
|
|||
'elide-head' does; disabling it shows the header. The commands
|
||||
'elide-head' and 'elide-head-show' are now obsolete.
|
||||
|
||||
*** New package 'osc'.
|
||||
*** New package osc.el.
|
||||
Support for OSC ("Operating System Command") escape sequences has been
|
||||
extracted from 'comint.el' in order to provide interpretation of OSC
|
||||
extracted from comint.el in order to provide interpretation of OSC
|
||||
sequences in compilation buffers.
|
||||
|
||||
Adding the new function 'osc-compilation-filter' to
|
||||
|
|
@ -2482,7 +2485,6 @@ filtered out.
|
|||
The list of handlers (already covering OSC 7 and 8) has been extended
|
||||
with a handler for OSC 2, the command to set a window title.
|
||||
|
||||
|
||||
+++
|
||||
*** New user option 'project-vc-include-untracked'.
|
||||
If non-nil, files untracked by a VCS are considered to be part of
|
||||
|
|
@ -2612,12 +2614,12 @@ in-memory format is now by using ':data-width' and ':data-height'.
|
|||
** "loaddefs.el" generation has been reimplemented.
|
||||
The various "loaddefs.el" files in the Emacs tree (which contain
|
||||
information about autoloads, built-in packages and package prefixes)
|
||||
used to be generated by functions in "autoloads.el". These are now
|
||||
generated by "loaddefs-gen.el" instead. This leads to functionally
|
||||
equivalent loaddef files, but they do not use exactly the same syntax,
|
||||
so using 'M-x update-file-autoloads' no longer works. (This didn't
|
||||
work well in most files in the past, either, but it will now signal an
|
||||
error in any file.)
|
||||
used to be generated by functions in autoloads.el. These are now
|
||||
generated by loaddefs-gen.el instead. This leads to functionally
|
||||
equivalent "loaddef.el" files, but they do not use exactly the same
|
||||
syntax, so using 'M-x update-file-autoloads' no longer works. (This
|
||||
didn't work well in most files in the past, either, but it will now
|
||||
signal an error in any file.)
|
||||
|
||||
In addition, files are scanned in a slightly different way.
|
||||
Previously ';;;###' specs inside a top-level form (i.e., something
|
||||
|
|
|
|||
|
|
@ -319,6 +319,16 @@ then NAME & USER, then NAME & PORT, then just NAME."
|
|||
(list
|
||||
(format "%s" name)))))
|
||||
|
||||
(defun auth-source-pass-file-name-p (file)
|
||||
"Say whether FILE is used by `auth-source-pass'."
|
||||
(and (stringp file) (stringp auth-source-pass-filename)
|
||||
(string-equal
|
||||
(expand-file-name file) (expand-file-name auth-source-pass-filename))))
|
||||
|
||||
(with-eval-after-load 'bookmark
|
||||
(add-hook 'bookmark-inhibit-context-functions
|
||||
#'auth-source-pass-file-name-p))
|
||||
|
||||
(provide 'auth-source-pass)
|
||||
;;; auth-source-pass.el ends here
|
||||
|
||||
|
|
|
|||
|
|
@ -522,6 +522,21 @@ parameters."
|
|||
|
||||
;; (mapcar #'auth-source-backend-parse auth-sources)
|
||||
|
||||
(defun auth-source-file-name-p (file)
|
||||
"Say whether FILE is used by `auth-sources'."
|
||||
(let* ((backends (mapcar #'auth-source-backend-parse auth-sources))
|
||||
(files
|
||||
(mapcar (lambda (x)
|
||||
(when (member (slot-value x 'type) '(json netrc plstore))
|
||||
(slot-value x 'source)))
|
||||
backends)))
|
||||
(member (expand-file-name file)
|
||||
(mapcar #'expand-file-name (remq nil files)))))
|
||||
|
||||
(with-eval-after-load 'bookmark
|
||||
(add-hook 'bookmark-inhibit-context-functions
|
||||
#'auth-source-file-name-p))
|
||||
|
||||
(cl-defun auth-source-search (&rest spec
|
||||
&key max require create delete
|
||||
&allow-other-keys)
|
||||
|
|
|
|||
|
|
@ -592,6 +592,14 @@ NAME is a suggested name for the constructed bookmark. It can be nil
|
|||
in which case a default heuristic will be used. The function can also
|
||||
equivalently just return ALIST without NAME.")
|
||||
|
||||
(defcustom bookmark-inhibit-context-functions nil
|
||||
"List of functions to call before making a bookmark record.
|
||||
The functions take `buffer-file-name' as argument. If any of
|
||||
these functions returns non-nil, the bookmark does not record
|
||||
context strings from the current buffer."
|
||||
:type 'hook
|
||||
:version "29.1")
|
||||
|
||||
(defun bookmark-make-record ()
|
||||
"Return a new bookmark record (NAME . ALIST) for the current location."
|
||||
(let* ((bookmark-search-size
|
||||
|
|
@ -599,10 +607,8 @@ equivalently just return ALIST without NAME.")
|
|||
;; don't include any context in the bookmark file, because
|
||||
;; that would leak (possibly secret) data.
|
||||
(if (and buffer-file-name
|
||||
(or (and (fboundp 'epa-file-name-p)
|
||||
(epa-file-name-p buffer-file-name))
|
||||
(and (fboundp 'tramp-crypt-file-name-p)
|
||||
(tramp-crypt-file-name-p buffer-file-name))))
|
||||
(not (run-hook-with-args-until-success
|
||||
'bookmark-inhibit-context-functions buffer-file-name)))
|
||||
0
|
||||
bookmark-search-size))
|
||||
(record (funcall bookmark-make-record-function)))
|
||||
|
|
|
|||
|
|
@ -92,6 +92,10 @@ interface, update `file-name-handler-alist'."
|
|||
"Say whether FILE is handled by `epa-file'."
|
||||
(and auto-encryption-mode (string-match-p epa-file-name-regexp file)))
|
||||
|
||||
(with-eval-after-load 'bookmark
|
||||
(add-hook 'bookmark-inhibit-context-functions
|
||||
#'epa-file-name-p))
|
||||
|
||||
(define-minor-mode auto-encryption-mode
|
||||
"Toggle automatic file encryption/decryption (Auto Encryption mode)."
|
||||
:global t :init-value t :group 'epa-file :version "23.1"
|
||||
|
|
|
|||
|
|
@ -852,6 +852,14 @@ WILDCARD is not supported."
|
|||
(tramp-compat-funcall
|
||||
'unlock-file (tramp-crypt-encrypt-file-name filename))))
|
||||
|
||||
(with-eval-after-load 'bookmark
|
||||
(add-hook 'bookmark-inhibit-context-functions
|
||||
#'tramp-crypt-file-name-p)
|
||||
(add-hook 'tramp-crypt-unload-hook
|
||||
(lambda ()
|
||||
(remove-hook 'bookmark-inhibit-context-functions
|
||||
#'tramp-crypt-file-name-p))))
|
||||
|
||||
(add-hook 'tramp-unload-hook
|
||||
(lambda ()
|
||||
(unload-feature 'tramp-crypt 'force)))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue