Merge from origin/emacs-28

# Conflicts:
#	lisp/progmodes/xref.el
This commit is contained in:
Eli Zaretskii 2022-04-28 18:37:34 +03:00
commit b3023de543
25 changed files with 308 additions and 155 deletions

View file

@ -54,12 +54,31 @@ General steps (for each step, check for possible errors):
section at the beginning of that file, and commit etc/NEWS if it
was modified.
2. Regenerate the etc/AUTHORS file:
2. Regenerate the versioned ChangeLog.N and etc/AUTHORS files.
The "M-x authors" command below will first update the current
versioned ChangeLog.N file. For this to work correctly, make sure
the top-level Makefile says
PREFERRED_BRANCH = emacs-NN
where NN is the version on the release branch from which you are
producing the tarball. If NN is incorrect, update Makefile.in and
re-run 'configure' to update Makefile.
If the versioned ChangeLog.N file is too large, start a new one
by bumping N, and also update the line in top-level Makefile.in
which says
CHANGELOG_HISTORY_INDEX_MAX = N
by incrementing the value of N by 1; then regenerate Makefile.
Now:
M-: (require 'authors) RET
M-x authors RET
(This first updates the current versioned ChangeLog.N)
If this says "Problem updating ChangeLog", find the reason for the
failure of the command it runs, viz.:
@ -315,6 +334,10 @@ looks like this:
</div>
</div>
The file download.html may need to be updated, for example if the
MS-Windows binaries will be signed by a different person/key than
those mentioned there.
Next, regenerate the various manuals in HTML, PDF, and PS formats:
Invoke ./admin/make-manuals from the top-level directory of the

View file

@ -2927,7 +2927,8 @@ modifying the attributes of a named face.
@defun face-attribute face attribute &optional frame inherit
This function returns the value of the @var{attribute} attribute for
@var{face} on @var{frame}.
@var{face} on @var{frame}. @xref{Face Attributes}, for the supported
attributes.
If @var{frame} is omitted or @code{nil}, that means the selected frame
(@pxref{Input Focus}). If @var{frame} is @code{t}, this function
@ -3010,7 +3011,8 @@ for all frames. This function is mostly intended for internal usage.
@defun set-face-attribute face frame &rest arguments
This function sets one or more attributes of @var{face} for
@var{frame}. The attributes specified in this way override the face
spec(s) belonging to @var{face}.
spec(s) belonging to @var{face}. @xref{Face Attributes}, for the
supported attributes.
The extra arguments @var{arguments} specify the attributes to set, and
the values for them. They should consist of alternating attribute
@ -3810,57 +3812,62 @@ Then, the font specifications for all but Chinese GB2312 characters have
Chinese GB2312 characters has a wild card @samp{*} in the @var{family}
field.
@defun set-fontset-font name character font-spec &optional frame add
This function modifies the existing fontset @var{name} to use the font
matching with @var{font-spec} for the specified @var{character}.
@defun set-fontset-font fontset characters font-spec &optional frame add
This function modifies the existing @var{fontset} to use the font
specified by @var{font-spec} for displaying the specified
@var{characters}.
If @var{name} is @code{nil}, this function modifies the fontset of the
selected frame or that of @var{frame} if @var{frame} is not
If @var{fontset} is @code{nil}, this function modifies the fontset of
the selected frame or that of @var{frame} if @var{frame} is not
@code{nil}.
If @var{name} is @code{t}, this function modifies the default
fontset, whose short name is @samp{fontset-default}.
If @var{fontset} is @code{t}, this function modifies the default
fontset, whose short name as a string is @samp{fontset-default}.
In addition to specifying a single codepoint, @var{character} may be a
cons @code{(@var{from} . @var{to})}, where @var{from} and @var{to} are
character codepoints. In that case, use @var{font-spec} for all the
characters in the range @var{from} and @var{to} (inclusive).
The @var{characters} argument can be a single character which should
be displayed using @var{font-spec}. It can also be a cons cell
@w{@code{(@var{from} . @var{to})}}, where @var{from} and @var{to} are
characters. In that case, use @var{font-spec} for all the characters
in the range @var{from} and @var{to} (inclusive).
@var{character} may be a charset (@pxref{Character Sets}). In that
case, use @var{font-spec} for all the characters in the charset.
@var{characters} may be a charset symbol (@pxref{Character Sets}). In
that case, use @var{font-spec} for all the characters in the charset.
@var{character} may be a script name (@pxref{Character Properties,
@var{characters} may be a script symbol (@pxref{Character Properties,
char-script-table}). In that case, use @var{font-spec} for all the
characters belonging to the script.
@var{character} may be @code{nil}, which means to use @var{font-spec}
for any character which no font-spec is specified.
@var{characters} may be @code{nil}, which means to use @var{font-spec}
for any character in @var{fontset} for which no font-spec is
specified.
@var{font-spec} may be a font-spec object created by the function
@code{font-spec} (@pxref{Low-Level Font}).
@var{font-spec} may be a cons; @code{(@var{family} . @var{registry})},
where @var{family} is a family name of a font (possibly including a
foundry name at the head), @var{registry} is a registry name of a font
(possibly including an encoding name at the tail).
@var{font-spec} may be a cons cell @w{@code{(@var{family}
. @var{registry})}}, where @var{family} is a family name of a font
(possibly including a foundry name at the head), and @var{registry} is
a registry name of a font (possibly including an encoding name at the
tail).
@var{font-spec} may be a font name, a string.
@var{font-spec} may be @code{nil}, which explicitly specifies that
there's no font for the specified @var{character}. This is useful,
there's no font for the specified @var{characters}. This is useful,
for example, to avoid expensive system-wide search for fonts for
characters that have no glyphs, like those from the Unicode Private
Use Area (PUA).
The optional argument @var{add}, if non-@code{nil}, specifies how to
add @var{font-spec} to the font specifications previously set. If it
is @code{prepend}, @var{font-spec} is prepended. If it is
@code{append}, @var{font-spec} is appended. By default,
@var{font-spec} overrides the previous settings.
add @var{font-spec} to the font specifications previously set for
@var{characters}. If it is @code{prepend}, @var{font-spec} is
prepended to the existing specs. If it is @code{append},
@var{font-spec} is appended. By default, @var{font-spec} overwrites
the previously set font specs.
For instance, this changes the default fontset to use a font of which
For instance, this changes the default fontset to use a font whose
family name is @samp{Kochi Gothic} for all characters belonging to
the charset @code{japanese-jisx0208}.
the charset @code{japanese-jisx0208}:
@smallexample
(set-fontset-font t 'japanese-jisx0208
@ -4001,12 +4008,22 @@ symbols, or @code{nil} if none is required. If @code{gsub} or
@code{gpos} is a list, a @code{nil} element in that list means that
the font must not match any of the remaining tag symbols. The
@code{gpos} element may be omitted.
@item :type
@cindex font backend
The symbol that specifies the @dfn{font backend} used to draw the
characters. The possible values depend on the platform and on how
Emacs was configured at build time. Typical values include
@code{ftcrhb} and @code{xfthb} on X, @code{harfbuzz} on MS-Windows,
@code{ns} on GNUstep, etc. It can also be @code{nil} if left
unspecified, typically in a font-spec.
@end table
@end defun
@defun font-put font-spec property value
Set the font property @var{property} in the font-spec @var{font-spec}
to @var{value}.
to @var{value}. The @var{property} can any of the ones described
above.
@end defun
@cindex font entity
@ -4050,12 +4067,28 @@ object, a font entity, or a font spec.
@defun font-get font property
This function returns the value of the font property @var{property}
for @var{font}.
for @var{font}. The @var{property} can any of the ones that
@code{font-spec} supports.
If @var{font} is a font spec and the font spec does not specify
@var{property}, the return value is @code{nil}. If @var{font} is a
font object or font entity, the value for the @var{:script} property
may be a list of scripts supported by the font.
may be a list of scripts supported by the font, and the value of the
@code{:otf} property is a cons of the form @w{@code{(@var{gsub}
. @var{gpos})}}, where @var{gsub} and @var{gpos} are lists
representing OpenType features supported by the font, of the form
@smallexample
((@var{script-tag} (@var{langsys-tag} @var{feature}@dots{}) @dots{}) @dots{})
@end smallexample
@noindent where @var{script-tag}, @var{langsys-tag}, and @var{feature}
are symbols representing OpenType layout tags.
If @var{font} is a font object, the special property
@code{:combining-capability} is non-@code{nil} if the font backend of
@var{font} supports rendering of combining characters for non-OpenType
fonts.
@end defun
@defun font-face-attributes font &optional frame

View file

@ -1943,6 +1943,7 @@ completion function is trying to complete. If the symbol matches one
of the keys in @code{completion-category-overrides}, the usual
completion behavior is overridden. @xref{Completion Variables}.
@cindex @code{annotation-function}, in completion
@item annotation-function
The value should be a function for @dfn{annotating} completions. The
function should take one argument, @var{string}, which is a possible
@ -1952,6 +1953,7 @@ Unless this function puts own face on the annotation suffix string,
the @code{completions-annotations} face is added by default to
that string.
@cindex @code{affixation-function}, in completion
@item affixation-function
The value should be a function for adding prefixes and suffixes to
completions. The function should take one argument,
@ -1962,6 +1964,7 @@ the completion string in the @file{*Completions*} buffer, and
a suffix displayed after the completion string. This function
takes priority over @code{annotation-function}.
@cindex @code{group-function}, in completion
@item group-function
The value should be a function for grouping the completion candidates.
The function must take two arguments, @var{completion}, which is a
@ -1972,12 +1975,14 @@ can also be @code{nil}. Otherwise the function must return the
transformed candidate. The transformation can for example remove a
redundant prefix, which is displayed in the group title.
@cindex @code{display-sort-function}, in completion
@item display-sort-function
The value should be a function for sorting completions. The function
should take one argument, a list of completion strings, and return a
sorted list of completion strings. It is allowed to alter the input
list destructively.
@cindex @code{cycle-sort-function}, in completion
@item cycle-sort-function
The value should be a function for sorting completions, when
@code{completion-cycle-threshold} is non-@code{nil} and the user is

View file

@ -770,7 +770,7 @@ This function returns the parser state that the parser would reach at
position @var{pos} starting from the beginning of the visible portion
of the buffer.
@iftex
See the next section for
See the next section
@end iftex
@ifnottex
@xref{Parser State},

View file

@ -451,10 +451,6 @@ you can now configure them.
(the default) or use the attachment directory of the current node, if
it is correctly configured as a Git repository.
*** Some faces now use fixed-pitch
See [[msg:875z8njaol.fsf@protesilaos.com][this thread]].
*** New option ~org-attach-sync-delete-empty-dir~
~org-attach-sync-delete-empty-dir~ controls the deletion of an empty
@ -509,7 +505,7 @@ heading, except return nil.
In the past, faces of todo keywords, emphasised text, tags, and
priority cookies inherited =default= face. The resulting headline
fontification was not always consistent, as discussed in [[https://lists.gnu.org/archive/html/emacs-orgmode/2020-09/msg00331.html][this bug
fontification was not always consistent, as discussed in [[msg::87h7sawubl.fsf@protesilaos.com][this bug
report]]. Now, the relevant faces adapt to face used to fontify the
current headline level.

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{9.5.2}
\def\orgversionnumber{9.5.3}
\def\versionyear{2021} % latest update
\input emacsver.tex

View file

@ -3285,9 +3285,14 @@ To continue searching for next match, use command \\[fileloop-continue]."
;;;###autoload
(defun dired-do-query-replace-regexp (from to &optional delimited)
"Do `query-replace-regexp' of FROM with TO, on all marked files.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
with the command \\[tags-loop-continue]."
If you exit the query-replace loop (\\[keyboard-quit], RET or q), you can
resume the query replace with the command \\[tags-loop-continue]."
(interactive
(let ((common
(query-replace-read-args
@ -3353,6 +3358,11 @@ REGEXP should use constructs supported by your local `grep' command."
(defun dired-do-find-regexp-and-replace (from to)
"Replace matches of FROM with TO, in all marked files.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
If no files are marked, use the file under point.
For any marked directory, matches in all of its files are replaced,

View file

@ -4164,7 +4164,12 @@ cursor move past the beginning of line."
"Query replace.
If a null string is supplied as the string to be replaced,
the query replace mode will toggle between string replace
and regexp replace."
and regexp replace.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time."
(interactive)
(let (str)
(setq str (viper-read-string-with-history

View file

@ -449,6 +449,10 @@ of FACE on FRAME."
(defun face-attribute (face attribute &optional frame inherit)
"Return the value of FACE's ATTRIBUTE on FRAME.
See `set-face-attribute' for the list of supported attributes
and their meanings and allowed values.
If the optional argument FRAME is given, report on face FACE in that frame.
If FRAME is t, report on the defaults for face FACE (for new frames).
If FRAME is omitted or nil, use the selected frame.

View file

@ -2331,7 +2331,12 @@ arg means replace backward. Note that using the prefix arg
is possible only when `isearch-allow-scroll' is non-nil or
`isearch-allow-prefix' is non-nil, and it doesn't always provide the
correct matches for `query-replace', so the preferred way to run word
replacements from Isearch is `M-s w ... M-%'."
replacements from Isearch is `M-s w ... M-%'.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time."
(interactive
(list current-prefix-arg))
(barf-if-buffer-read-only)
@ -2385,7 +2390,12 @@ replacements from Isearch is `M-s w ... M-%'."
(defun isearch-query-replace-regexp (&optional arg)
"Start `query-replace-regexp' with string to replace from last search string.
See `isearch-query-replace' for more information."
See `isearch-query-replace' for more information.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time."
(interactive
(list current-prefix-arg))
(isearch-query-replace arg t))

View file

@ -1205,12 +1205,18 @@ component is used as the target of the symlink."
;; The scripts could fail, for example with huge file size.
(tramp-do-file-attributes-with-ls v localname id-format))))))))
(defconst tramp-sunos-unames (regexp-opt '("SunOS 5.10" "SunOS 5.11"))
"Regexp to determine remote SunOS.")
(defun tramp-sh--quoting-style-options (vec)
"Quoting style options to be used for VEC."
(or
(tramp-get-ls-command-with
vec "--quoting-style=literal --show-control-chars")
(tramp-get-ls-command-with vec "-w")
;; ls on Solaris does not return an error in that case. We've got
;; reports for "SunOS 5.11" so far.
(unless (tramp-check-remote-uname vec tramp-sunos-unames)
(tramp-get-ls-command-with vec "-w"))
""))
(defun tramp-do-file-attributes-with-ls (vec localname &optional id-format)
@ -4036,9 +4042,6 @@ Returns the exit code of the `test' program."
switch
(tramp-shell-quote-argument localname)))))
(defconst tramp-sunos-unames (regexp-opt '("SunOS 5.10" "SunOS 5.11"))
"Regexp to determine remote SunOS.")
(defun tramp-find-executable
(vec progname dirlist &optional ignore-tilde ignore-path)
"Search for PROGNAME in $PATH and all directories mentioned in DIRLIST.

View file

@ -38,8 +38,7 @@
:group 'org-faces)
(defface org-hide
'((default :inherit fixed-pitch)
(((background light)) (:foreground "white"))
'((((background light)) (:foreground "white"))
(((background dark)) (:foreground "black")))
"Face used to hide leading stars in headlines.
The foreground color of this face should be equal to the background
@ -202,8 +201,7 @@ set the properties in the `org-column' face. For example, set
:group 'org-faces)
(defface org-date
'((default :inherit fixed-pitch)
(((class color) (background light)) (:foreground "Purple" :underline t))
'((((class color) (background light)) (:foreground "Purple" :underline t))
(((class color) (background dark)) (:foreground "Cyan" :underline t))
(t (:underline t)))
"Face for date/time stamps."
@ -379,8 +377,7 @@ changes."
(sexp :tag "Face")))))
(defface org-table ;Copied from `font-lock-function-name-face'
'((default :inherit fixed-pitch)
(((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
'((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
(((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
(((class color) (min-colors 16) (background light)) (:foreground "Blue"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
@ -396,8 +393,7 @@ changes."
:group 'org-faces)
(defface org-formula
'((default :inherit fixed-pitch)
(((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
(((class color) (min-colors 8) (background light)) (:foreground "red"))
(((class color) (min-colors 8) (background dark)) (:foreground "red"))
@ -405,12 +401,12 @@ changes."
"Face for formulas."
:group 'org-faces)
(defface org-code '((t :inherit (fixed-pitch shadow)))
(defface org-code '((t :inherit shadow))
"Face for fixed-width text like code snippets."
:group 'org-faces
:version "22.1")
(defface org-meta-line '((t :inherit (fixed-pitch font-lock-comment-face)))
(defface org-meta-line '((t :inherit font-lock-comment-face))
"Face for meta lines starting with \"#+\"."
:group 'org-faces
:version "22.1")
@ -437,7 +433,7 @@ This face applies to the #+TITLE:, #+SUBTITLE:, #+AUTHOR:,
#+EMAIL: and #+DATE: keywords."
:group 'org-faces)
(defface org-block `((t :inherit (fixed-pitch shadow)
(defface org-block `((t :inherit shadow
,@(and (>= emacs-major-version 27) '(:extend t))))
"Face used for text inside various blocks.
@ -459,7 +455,7 @@ verse and quote blocks are fontified using the `org-verse' and
"Face used for the line delimiting the end of source blocks."
:group 'org-faces)
(defface org-verbatim '((t (:inherit (fixed-pitch shadow))))
(defface org-verbatim '((t (:inherit shadow)))
"Face for fixed-with text like code snippets."
:group 'org-faces
:version "22.1")

View file

@ -5,13 +5,13 @@
(defun org-release ()
"The release version of Org.
Inserted by installing Org mode or when a release is made."
(let ((org-release "9.5.2"))
(let ((org-release "9.5.3"))
org-release))
;;;###autoload
(defun org-git-version ()
"The Git version of Org mode.
Inserted by installing Org or when a release is made."
(let ((org-git-version "release_9.5.2-38-g682ccd"))
(let ((org-git-version "release_9.5.3-3-gd54104"))
org-git-version))
(provide 'org-version)

View file

@ -9,7 +9,7 @@
;; Homepage: https://orgmode.org
;; Package-Requires: ((emacs "25.1"))
;; Version: 9.5.2
;; Version: 9.5.3
;; This file is part of GNU Emacs.
;;
@ -15012,20 +15012,24 @@ value is equivalent to `inactive'.
When at a timestamp, return the position of the point as a symbol
among `bracket', `after', `year', `month', `hour', `minute',
`day' or a number of character from the last know part of the
time stamp.
time stamp. If diary sexp timestamps, any point inside the timestamp
is considered `day' (i.e. only `bracket', `day', and `after' return
values are possible).
When matching, the match groups are the following:
group 1: year
group 2: month
group 3: day number
group 4: day name
group 1: year, if any
group 2: month, if any
group 3: day number, if any
group 4: day name, if any
group 5: hours, if any
group 6: minutes, if any"
(let* ((regexp (if extended
(if (eq extended 'agenda)
org-element--timestamp-regexp
org-ts-regexp3)
org-ts-regexp2))
(let* ((regexp
(if extended
(if (eq extended 'agenda)
(rx (or (regexp org-ts-regexp3)
(regexp org-element--timestamp-regexp)))
org-ts-regexp3)
org-ts-regexp2))
(pos (point))
(match?
(let ((boundaries (org-in-regexp regexp)))

View file

@ -3633,7 +3633,12 @@ If regular expression is nil, repeat last search."
;;;###autoload
(defun ebrowse-tags-query-replace (from to)
"Query replace FROM with TO in all files of a class tree.
With prefix arg, process files of marked classes only."
With prefix arg, process files of marked classes only.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time."
(interactive
"sTree query replace (regexp): \nsTree query replace %s by: ")
(setq ebrowse-tags-loop-call

View file

@ -1839,7 +1839,13 @@ Also see the documentation of the `tags-file-name' variable."
Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
with the command \\[fileloop-continue].
For non-interactive use, superseded by `fileloop-initialize-replace'."
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
For non-interactive use, this is superseded by `fileloop-initialize-replace'."
(declare (advertised-calling-convention (from to &optional delimited) "27.1"))
(interactive (query-replace-read-args "Tags query replace (regexp)" t t))
(fileloop-initialize-replace

View file

@ -1076,6 +1076,10 @@ command \\[fileloop-continue]."
(defun project-query-replace-regexp (from to)
"Query-replace REGEXP in all the files of the project.
Stops when a match is found and prompts for whether to replace it.
At that prompt, the user must type a character saying what to do
with the match. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
If you exit the `query-replace', you can later continue the
`query-replace' loop using the command \\[fileloop-continue]."
(interactive

View file

@ -751,6 +751,12 @@ references displayed in the current *xref* buffer.
When called interactively, it uses '.*' as FROM, which means
replace the whole name. Unless called with prefix argument, in
which case the user is prompted for both FROM and TO."
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
"
(interactive
(let* ((fr
(if current-prefix-arg

View file

@ -399,7 +399,9 @@ should a regexp."
(defun query-replace (from-string to-string &optional delimited start end backward region-noncontiguous-p)
"Replace some occurrences of FROM-STRING with TO-STRING.
As each match is found, the user must type a character saying
what to do with it. For directions, type \\[help-command] at that time.
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
In Transient Mark mode, if the mark is active, operate on the contents
of the region. Otherwise, operate from point to the end of the buffer's
@ -469,7 +471,9 @@ To customize possible responses, change the bindings in `query-replace-map'."
(defun query-replace-regexp (regexp to-string &optional delimited start end backward region-noncontiguous-p)
"Replace some things after point matching REGEXP with TO-STRING.
As each match is found, the user must type a character saying
what to do with it. For directions, type \\[help-command] at that time.
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
In Transient Mark mode, if the mark is active, operate on the contents
of the region. Otherwise, operate from point to the end of the buffer's
@ -566,7 +570,9 @@ Interactive use of this function is deprecated in favor of the
using `search-forward-regexp' and `replace-match' is preferred.
As each match is found, the user must type a character saying
what to do with it. For directions, type \\[help-command] at that time.
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
TO-EXPR is a Lisp expression evaluated to compute each replacement. It may
reference `replace-count' to get the number of replacements already made.
@ -652,6 +658,11 @@ Use \\<minibuffer-local-map>\\[next-history-element] \
to pull the last incremental search regexp to the minibuffer
that reads REGEXP.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
A prefix argument N says to use each replacement string N times
before rotating to the next.
Fourth and fifth arg START and END specify the region to operate on.

View file

@ -88,6 +88,12 @@ No active TAGS table is required."
(defun reftex-query-replace-document (&optional from to delimited)
"Do `query-replace-regexp' of FROM with TO over the entire document.
Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
with the command \\[tags-loop-continue].
No active TAGS table is required."

View file

@ -933,6 +933,12 @@ To continue searching for next match, use command \\[tags-loop-continue]."
"Do `query-replace-regexp' of FROM with TO, on all marked files.
If a directory is marked, then use the files displayed for that directory.
Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
As each match is found, the user must type a character saying
what to do with it. Type SPC or `y' to replace the match,
DEL or `n' to skip and go to the next match. For more directions,
type \\[help-command] at that time.
If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
with the command \\[tags-loop-continue]."
;; FIXME: this is almost a copy of `dired-do-query-replace-regexp'. This

View file

@ -4237,26 +4237,33 @@ merge_font_spec (Lisp_Object from, Lisp_Object to)
DEFUN ("font-get", Ffont_get, Sfont_get, 2, 2, 0,
doc: /* Return the value of FONT's property KEY.
FONT is a font-spec, a font-entity, or a font-object.
KEY is any symbol, but these are reserved for specific meanings:
:family, :weight, :slant, :width, :foundry, :adstyle, :registry,
:size, :name, :script, :otf
KEY can be any symbol, but these are reserved for specific meanings:
:foundry, :family, :adstyle, :registry, :weight, :slant, :width,
:size, :dpi, :spacing, :avgwidth, :script, :lang, :otf
See the documentation of `font-spec' for their meanings.
In addition, if FONT is a font-entity or a font-object, values of
:script and :otf are different from those of a font-spec as below:
The value of :script may be a list of scripts that are supported by the font.
If FONT is a font-entity or a font-object, then values of
:script and :otf properties are different from those of a font-spec
as below:
The value of :otf is a cons (GSUB . GPOS) where GSUB and GPOS are lists
representing the OpenType features supported by the font by this form:
((SCRIPT (LANGSYS FEATURE ...) ...) ...)
SCRIPT, LANGSYS, and FEATURE are all symbols representing OpenType
Layout tags.
The value of :script may be a list of scripts that are supported by
the font.
The value of :otf is a cons (GSUB . GPOS) where GSUB and GPOS are
lists representing the OpenType features supported by the font, of
this form: ((SCRIPT (LANGSYS FEATURE ...) ...) ...), where
SCRIPT, LANGSYS, and FEATURE are all symbols representing OpenType
Layout tags. See `otf-script-alist' for the OpenType script tags.
In addition to the keys listed above, the following keys are reserved
for the specific meanings as below:
The value of :combining-capability is non-nil if the font-backend of
FONT supports rendering of combining characters for non-OTF fonts. */)
The value of :type is a symbol that identifies the font backend to be
used, such as `ftcrhb' or `xfthb' on X , `harfbuzz' or `uniscribe' on
MS-Windows, `ns' on Cocoa/GNUstep, etc.
The value of :combining-capability is non-nil if the font-backend of
FONT supports rendering of combining characters for non-OTF fonts. */)
(Lisp_Object font, Lisp_Object key)
{
int idx;
@ -4384,7 +4391,9 @@ accepted by the function `font-spec' (which see), VAL must be what
allowed in `font-spec'.
If FONT is a font-entity or a font-object, KEY must not be the one
accepted by `font-spec'. */)
accepted by `font-spec'.
See also `font-get' for KEYs that have special meanings. */)
(Lisp_Object font, Lisp_Object prop, Lisp_Object val)
{
int idx;

View file

@ -1450,28 +1450,30 @@ static void update_auto_fontset_alist (Lisp_Object, Lisp_Object);
DEFUN ("set-fontset-font", Fset_fontset_font, Sset_fontset_font, 3, 5, 0,
doc: /*
Modify fontset NAME to use FONT-SPEC for TARGET characters.
Modify FONTSET to use font specification in FONT-SPEC for displaying CHARACTERS.
NAME is a fontset name (a string), nil for the fontset of FRAME,
or t for the default fontset.
FONTSET should be a fontset name (a string); or nil, meaning the
fontset of FRAME; or t, meaning the default fontset.
TARGET may be a single character to use FONT-SPEC for.
CHARACTERS may be a single character to use FONT-SPEC for.
TARGET may be a cons (FROM . TO), where FROM and TO are characters.
CHARACTERS may be a cons (FROM . TO), where FROM and TO are characters.
In that case, use FONT-SPEC for all the characters in the range
between FROM and TO (inclusive).
TARGET may be a script symbol. In that case, use FONT-SPEC for
CHARACTERS may be a script symbol. In that case, use FONT-SPEC for
all the characters that belong to the script. See the variable
`script-representative-chars' for the list of known scripts.
`script-representative-chars' for the list of known scripts, and
see the variable `char-script-table' for the script of any specific
character.
TARGET may be a charset. In that case, use FONT-SPEC for all
the characters in the charset. See `list-character-sets' and
CHARACTERS may be a charset symbol. In that case, use FONT-SPEC for
all the characters in the charset. See `list-character-sets' and
`list-charset-chars' for the list of character sets and their
characters.
TARGET may be nil. In that case, use FONT-SPEC for any character for
which no font-spec is specified.
CHARACTERS may be nil. In that case, use FONT-SPEC for any
character for which no font-spec is specified in FONTSET.
FONT-SPEC may one of these:
* A font-spec object made by the function `font-spec' (which see).
@ -1479,25 +1481,28 @@ FONT-SPEC may one of these:
REGISTRY is a font registry name. FAMILY may contain foundry
name, and REGISTRY may contain encoding name.
* A font name string.
* nil, which explicitly specifies that there's no font for TARGET.
* nil, which explicitly specifies that there's no font for CHARACTERS.
Optional 4th argument FRAME is a frame, or nil for the selected frame,
to be considered in the case that NAME is nil.
Optional 4th argument FRAME is a frame whose fontset should be modified;
it is used if FONTSET is nil. If FONTSET is nil and FRAME is omitted
or nil, that stands for the fontset of the selected frame.
Optional 5th argument ADD, if non-nil, specifies how to add FONT-SPEC
to the previously set font specifications for TARGET. If it is
`prepend', FONT-SPEC is prepended. If it is `append', FONT-SPEC is
appended. By default, FONT-SPEC overrides the previous settings. */)
(Lisp_Object name, Lisp_Object target, Lisp_Object font_spec, Lisp_Object frame, Lisp_Object add)
to the previously set font specifications for CHARACTERS. If it is
`prepend', FONT-SPEC is prepended to the existing font specifications.
If it is `append', FONT-SPEC is appended. By default, FONT-SPEC
overwrites the previous settings. */)
(Lisp_Object fontset, Lisp_Object characters, Lisp_Object font_spec,
Lisp_Object frame, Lisp_Object add)
{
Lisp_Object fontset;
Lisp_Object fontset_obj;
Lisp_Object font_def, registry, family;
Lisp_Object range_list;
struct charset *charset = NULL;
Lisp_Object fontname;
bool ascii_changed = 0;
fontset = check_fontset_name (name, &frame);
fontset_obj = check_fontset_name (fontset, &frame);
fontname = Qnil;
if (CONSP (font_spec))
@ -1555,18 +1560,18 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
else
font_def = Qnil;
if (CHARACTERP (target))
if (CHARACTERP (characters))
{
if (XFIXNAT (target) < 0x80)
if (XFIXNAT (characters) < 0x80)
error ("Can't set a font for partial ASCII range");
range_list = list1 (Fcons (target, target));
range_list = list1 (Fcons (characters, characters));
}
else if (CONSP (target))
else if (CONSP (characters))
{
Lisp_Object from, to;
from = Fcar (target);
to = Fcdr (target);
from = Fcar (characters);
to = Fcdr (characters);
CHECK_CHARACTER (from);
CHECK_CHARACTER (to);
if (XFIXNAT (from) < 0x80)
@ -1575,38 +1580,38 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
error ("Can't set a font for partial ASCII range");
ascii_changed = 1;
}
range_list = list1 (target);
range_list = list1 (characters);
}
else if (SYMBOLP (target) && !NILP (target))
else if (SYMBOLP (characters) && !NILP (characters))
{
Lisp_Object script_list;
Lisp_Object val;
range_list = Qnil;
script_list = XCHAR_TABLE (Vchar_script_table)->extras[0];
if (! NILP (Fmemq (target, script_list)))
if (! NILP (Fmemq (characters, script_list)))
{
if (EQ (target, Qlatin))
if (EQ (characters, Qlatin))
ascii_changed = 1;
val = list1 (target);
val = list1 (characters);
map_char_table (accumulate_script_ranges, Qnil, Vchar_script_table,
val);
range_list = Fnreverse (XCDR (val));
}
if (CHARSETP (target))
if (CHARSETP (characters))
{
CHECK_CHARSET_GET_CHARSET (target, charset);
CHECK_CHARSET_GET_CHARSET (characters, charset);
if (charset->ascii_compatible_p)
ascii_changed = 1;
}
else if (NILP (range_list))
error ("Invalid script or charset name: %s",
SDATA (SYMBOL_NAME (target)));
SDATA (SYMBOL_NAME (characters)));
}
else if (NILP (target))
else if (NILP (characters))
range_list = list1 (Qnil);
else
error ("Invalid target for setting a font");
error ("Invalid second argument for setting a font in a fontset");
if (ascii_changed)
{
@ -1614,7 +1619,7 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
if (NILP (font_spec))
error ("Can't set ASCII font to nil");
val = CHAR_TABLE_REF (fontset, 0);
val = CHAR_TABLE_REF (fontset_obj, 0);
if (! NILP (val) && EQ (add, Qappend))
/* We are going to change just an additional font for ASCII. */
ascii_changed = 0;
@ -1622,7 +1627,7 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
if (charset)
{
Lisp_Object arg = CALLN (Fvector, fontset, font_def, add,
Lisp_Object arg = CALLN (Fvector, fontset_obj, font_def, add,
ascii_changed ? Qt : Qnil, range_list);
map_charset_chars (set_fontset_font, Qnil, arg, charset,
@ -1631,15 +1636,15 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
range_list = AREF (arg, 4);
}
for (; CONSP (range_list); range_list = XCDR (range_list))
FONTSET_ADD (fontset, XCAR (range_list), font_def, add);
FONTSET_ADD (fontset_obj, XCAR (range_list), font_def, add);
if (ascii_changed)
{
Lisp_Object tail, fr;
int fontset_id = XFIXNUM (FONTSET_ID (fontset));
int fontset_id = XFIXNUM (FONTSET_ID (fontset_obj));
set_fontset_ascii (fontset, fontname);
name = FONTSET_NAME (fontset);
set_fontset_ascii (fontset_obj, fontname);
fontset = FONTSET_NAME (fontset_obj);
FOR_EACH_FRAME (tail, fr)
{
struct frame *f = XFRAME (fr);
@ -1657,17 +1662,17 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
font_object = font_open_by_spec (f, font_spec);
if (! NILP (font_object))
{
update_auto_fontset_alist (font_object, fontset);
AUTO_FRAME_ARG (arg, Qfont, Fcons (name, font_object));
update_auto_fontset_alist (font_object, fontset_obj);
AUTO_FRAME_ARG (arg, Qfont, Fcons (fontset, font_object));
Fmodify_frame_parameters (fr, arg);
}
}
}
/* Free all realized fontsets whose base is FONTSET. This way, the
/* Free all realized fontsets whose base is FONTSET_OBJ. This way, the
specified character(s) are surely redisplayed by a correct
font. */
free_realized_fontsets (fontset);
free_realized_fontsets (fontset_obj);
return Qnil;
}

View file

@ -770,7 +770,7 @@ static bool message_buf_print;
static bool message_cleared_p;
/* A scratch glyph row with contents used for generating truncation
glyphs. Also used in direct_output_for_insert. */
glyphs and overlay-arrow glyphs. */
#define MAX_SCRATCH_GLYPHS 100
static struct glyph_row scratch_glyph_row;
@ -22144,7 +22144,7 @@ get_overlay_arrow_glyph_row (struct window *w, Lisp_Object overlay_arrow_string)
struct buffer *buffer = XBUFFER (w->contents);
struct buffer *old = current_buffer;
const unsigned char *arrow_string = SDATA (overlay_arrow_string);
ptrdiff_t arrow_len = SCHARS (overlay_arrow_string);
ptrdiff_t arrow_len = SBYTES (overlay_arrow_string), char_num = 0;
const unsigned char *arrow_end = arrow_string + arrow_len;
const unsigned char *p;
struct it it;
@ -22175,7 +22175,7 @@ get_overlay_arrow_glyph_row (struct window *w, Lisp_Object overlay_arrow_string)
p += it.len;
/* Get its face. */
ilisp = make_fixnum (p - arrow_string);
ilisp = make_fixnum (char_num++);
face = Fget_text_property (ilisp, Qface, overlay_arrow_string);
it.face_id = compute_char_face (f, it.char_to_display, face);

View file

@ -1450,9 +1450,9 @@ enum xlfd_field
};
/* Order by which font selection chooses fonts. The default values
mean `first, find a best match for the font width, then for the
font height, then for weight, then for slant.' This variable can be
set via set-face-font-sort-order. */
mean "first, find a best match for the font width, then for the
font height, then for weight, then for slant." This variable can be
set via 'internal-set-font-selection-order'. */
static int font_sort_order[4];
@ -1503,16 +1503,22 @@ If FAMILY is omitted or nil, list all families.
Otherwise, FAMILY must be a string, possibly containing wildcards
`?' and `*'.
If FRAME is omitted or nil, use the selected frame.
Each element of the result is a vector [FAMILY WIDTH POINT-SIZE WEIGHT
SLANT FIXED-P FULL REGISTRY-AND-ENCODING].
FAMILY is the font family name. POINT-SIZE is the size of the
font in 1/10 pt. WIDTH, WEIGHT, and SLANT are symbols describing the
width, weight and slant of the font. These symbols are the same as for
face attributes. FIXED-P is non-nil if the font is fixed-pitch.
FULL is the full name of the font, and REGISTRY-AND-ENCODING is a string
giving the registry and encoding of the font.
The result list is sorted according to the current setting of
the face font sort order. */)
FAMILY is the font family name.
POINT-SIZE is the size of the font in 1/10 pt.
WIDTH, WEIGHT, and SLANT are symbols describing the width, weight
and slant of the font. These symbols are the same as for face
attributes, see `set-face-attribute'.
FIXED-P is non-nil if the font is fixed-pitch.
FULL is the full name of the font.
REGISTRY-AND-ENCODING is a string giving the registry and encoding of
the font.
The resulting list is sorted according to the current setting of
the face font sort order, see `face-font-selection-order'. */)
(Lisp_Object family, Lisp_Object frame)
{
Lisp_Object font_spec, list, *drivers, vec;