1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 04:10:54 -08:00

Merge from origin/emacs-27

4b419083f9 Honor search-upper-case
310112fdc7 Fix eww-follow-link on URLs with #target

# Conflicts:
#	lisp/fileloop.el
This commit is contained in:
Glenn Morris 2020-05-06 09:28:36 -07:00
commit e292097f55
2 changed files with 27 additions and 10 deletions

View file

@ -181,8 +181,7 @@ operating on the next file and nil otherwise."
(fileloop-initialize
files
(lambda ()
(let ((case-fold-search
(if (memq case-fold '(t nil)) case-fold case-fold-search)))
(let ((case-fold-search (fileloop--case-fold regexp case-fold)))
(re-search-forward regexp nil t)))
(lambda ()
(unless (eq last-buffer (current-buffer))
@ -190,13 +189,27 @@ operating on the next file and nil otherwise."
(message "Scanning file %s...found" buffer-file-name))
nil))))
(defun fileloop--case-fold (regexp case-fold)
(let ((value
(if (memql case-fold '(nil t))
case-fold
case-fold-search)))
(if (and value search-upper-case)
(isearch-no-upper-case-p regexp t)
value)))
;;;###autoload
(defun fileloop-initialize-replace (from to files case-fold &optional delimited)
"Initialize a new round of query&replace on several files.
FROM is a regexp and TO is the replacement to use.
FILES describes the file, as in `fileloop-initialize'.
CASE-FOLD can be t, nil, or `default', the latter one meaning to obey
the default setting of `case-fold-search'.
FILES describes the files, as in `fileloop-initialize'.
CASE-FOLD can be t, nil, or `default':
if it is nil, matching of FROM is case-sensitive.
if it is t, matching of FROM is case-insensitive, except
when `search-upper-case' is non-nil and FROM includes
upper-case letters.
if it is `default', the function uses the value of
`case-fold-search' instead.
DELIMITED if non-nil means replace only word-delimited matches."
;; FIXME: Not sure how the delimited-flag interacts with the regexp-flag in
;; `perform-replace', so I just try to mimic the old code.
@ -204,8 +217,7 @@ DELIMITED if non-nil means replace only word-delimited matches."
(fileloop-initialize
files
(lambda ()
(let ((case-fold-search
(if (memql case-fold '(nil t)) case-fold case-fold-search)))
(let ((case-fold-search (fileloop--case-fold from case-fold)))
(when (re-search-forward from nil t)
;; When we find a match, save its beginning for
;; `perform-replace' (we used to just set point, but this
@ -213,9 +225,10 @@ DELIMITED if non-nil means replace only word-delimited matches."
;; `switch-to-buffer-preserve-window-point').
(puthash (current-buffer) (match-beginning 0) mstart))))
(lambda ()
(perform-replace from to t t delimited nil multi-query-replace-map
(gethash (current-buffer) mstart (point-min))
(point-max))))))
(let ((case-fold-search (fileloop--case-fold from case-fold)))
(perform-replace from to t t delimited nil multi-query-replace-map
(gethash (current-buffer) mstart (point-min))
(point-max)))))))
(provide 'fileloop)
;;; fileloop.el ends here

View file

@ -518,6 +518,10 @@ Currently this means either text/html or application/xhtml+xml."
(plist-put eww-data :dom document)
(let ((inhibit-read-only t)
(inhibit-modification-hooks t)
;; Possibly set by the caller, e.g., `eww-render' which
;; preserves the old URL #target before chasing redirects.
(shr-target-id (or shr-target-id
(url-target (url-generic-parse-url url))))
(shr-external-rendering-functions
(append
shr-external-rendering-functions