Merge remote-tracking branch 'origin/master' into feature/android
This commit is contained in:
commit
822463ea5a
15 changed files with 104 additions and 49 deletions
|
@ -1038,8 +1038,7 @@ If optional argument OLD is non-nil, also scan for `defvar's."
|
|||
(and grp
|
||||
(setq grp (car (cdr-safe grp))) ; (quote foo) -> foo
|
||||
(setq ver (assq grp glist))))
|
||||
(setq alist (cons (cons var ver) alist))))
|
||||
(if form (format-message "Malformed defcustom: `%s'" form)))))
|
||||
(setq alist (cons (cons var ver) alist)))))))
|
||||
(message "%sdone" m)
|
||||
alist))
|
||||
|
||||
|
|
|
@ -221,8 +221,6 @@ The detected problematic options are stored in `cus-test-errors'."
|
|||
|
||||
;; Check the values
|
||||
(mapc (lambda (value)
|
||||
;; TODO for booleans, check for values that can be
|
||||
;; evaluated and are not t or nil. Usually a bug.
|
||||
(unless (widget-apply conv :match value)
|
||||
(let ((err (list symbol :type-error value type)))
|
||||
(unless (member err cus-test-errors)
|
||||
|
|
5
etc/NEWS
5
etc/NEWS
|
@ -36,6 +36,11 @@ See the file 'java/INSTALL' for more details.
|
|||
|
||||
* Changes in Emacs 30.1
|
||||
|
||||
** Help
|
||||
** 'describe-function' shows function inferred type when available.
|
||||
For native compiled Lisp functions 'describe-function' prints (after
|
||||
the signature) the automatically inferred function type as well.
|
||||
|
||||
---
|
||||
** New user option 'describe-bindings-outline-rules'.
|
||||
This user option controls outline visibility in the output buffer of
|
||||
|
|
|
@ -91,17 +91,17 @@ Default nil means to write characters above \\177 in octal notation."
|
|||
`((,(rx bol (group (or "Command" "Key" "Macro") ":")) 0 'edmacro-label)
|
||||
(,(rx bol
|
||||
(group ";; Keyboard Macro Editor. Press ")
|
||||
(group (*? any))
|
||||
(group (*? nonl))
|
||||
(group " to finish; press "))
|
||||
(1 'font-lock-comment-face)
|
||||
(2 'help-key-binding)
|
||||
(3 'font-lock-comment-face)
|
||||
(,(rx (group (*? any))
|
||||
(group " to cancel" (* any)))
|
||||
(,(rx (group (*? nonl))
|
||||
(group " to cancel" (* nonl)))
|
||||
nil nil
|
||||
(1 'help-key-binding)
|
||||
(2 'font-lock-comment-face)))
|
||||
(,(rx (one-or-more ";") (zero-or-more any)) 0 'font-lock-comment-face)))
|
||||
(,(rx (one-or-more ";") (zero-or-more nonl)) 0 'font-lock-comment-face)))
|
||||
|
||||
(defvar edmacro-store-hook)
|
||||
(defvar edmacro-finish-hook)
|
||||
|
|
|
@ -1685,7 +1685,8 @@ See Info node `(elisp) Integer Basics'."
|
|||
category-docstring category-set-mnemonics char-category-set
|
||||
copy-category-table get-unused-category make-category-set
|
||||
;; character.c
|
||||
char-width multibyte-char-to-unibyte string unibyte-char-to-multibyte
|
||||
char-width get-byte multibyte-char-to-unibyte string string-width
|
||||
unibyte-char-to-multibyte unibyte-string
|
||||
;; charset.c
|
||||
decode-char encode-char
|
||||
;; chartab.c
|
||||
|
@ -1715,6 +1716,8 @@ See Info node `(elisp) Integer Basics'."
|
|||
line-beginning-position line-end-position ngettext pos-bol pos-eol
|
||||
propertize region-beginning region-end string-to-char
|
||||
user-full-name user-login-name
|
||||
;; eval.c
|
||||
special-variable-p
|
||||
;; fileio.c
|
||||
car-less-than-car directory-name-p file-directory-p file-exists-p
|
||||
file-name-absolute-p file-name-concat file-newer-than-file-p
|
||||
|
@ -1723,23 +1726,28 @@ See Info node `(elisp) Integer Basics'."
|
|||
file-locked-p
|
||||
;; floatfns.c
|
||||
abs acos asin atan ceiling copysign cos exp expt fceiling ffloor
|
||||
float floor fround ftruncate isnan ldexp log logb round sin sqrt tan
|
||||
float floor frexp fround ftruncate isnan ldexp log logb round
|
||||
sin sqrt tan
|
||||
truncate
|
||||
;; fns.c
|
||||
append assq
|
||||
base64-decode-string base64-encode-string base64url-encode-string
|
||||
buffer-hash buffer-line-statistics
|
||||
compare-strings concat copy-alist copy-hash-table copy-sequence elt
|
||||
featurep get
|
||||
gethash hash-table-count hash-table-rehash-size
|
||||
hash-table-rehash-threshold hash-table-size hash-table-test
|
||||
hash-table-weakness
|
||||
length length< length= length>
|
||||
line-number-at-pos locale-info make-hash-table
|
||||
line-number-at-pos load-average locale-info make-hash-table md5
|
||||
member memq memql nth nthcdr
|
||||
object-intervals rassoc rassq reverse
|
||||
string-as-multibyte string-as-unibyte string-bytes string-distance
|
||||
object-intervals rassoc rassq reverse secure-hash
|
||||
string-as-multibyte string-as-unibyte string-bytes
|
||||
string-collate-equalp string-collate-lessp string-distance
|
||||
string-equal string-lessp string-make-multibyte string-make-unibyte
|
||||
string-search string-to-multibyte substring substring-no-properties
|
||||
string-search string-to-multibyte string-to-unibyte
|
||||
string-version-lessp
|
||||
substring substring-no-properties
|
||||
sxhash-eq sxhash-eql sxhash-equal sxhash-equal-including-properties
|
||||
take vconcat
|
||||
;; frame.c
|
||||
|
@ -1799,6 +1807,7 @@ See Info node `(elisp) Integer Basics'."
|
|||
all-threads condition-mutex condition-name mutex-name thread-live-p
|
||||
thread-name
|
||||
;; timefns.c
|
||||
current-cpu-time
|
||||
current-time-string current-time-zone decode-time encode-time
|
||||
float-time format-time-string time-add time-convert time-equal-p
|
||||
time-less-p time-subtract
|
||||
|
@ -1858,7 +1867,8 @@ See Info node `(elisp) Integer Basics'."
|
|||
;; fileio.c
|
||||
default-file-modes
|
||||
;; fns.c
|
||||
eql equal hash-table-p identity proper-list-p safe-length
|
||||
eql equal equal-including-properties
|
||||
hash-table-p identity proper-list-p safe-length
|
||||
secure-hash-algorithms
|
||||
;; frame.c
|
||||
frame-list frame-live-p framep last-nonminibuffer-frame
|
||||
|
@ -1936,10 +1946,11 @@ See Info node `(elisp) Integer Basics'."
|
|||
isnan ldexp logb round sqrt truncate
|
||||
;; fns.c
|
||||
assq base64-decode-string base64-encode-string base64url-encode-string
|
||||
concat elt eql equal hash-table-p identity length length< length=
|
||||
concat elt eql equal equal-including-properties
|
||||
hash-table-p identity length length< length=
|
||||
length> member memq memql nth nthcdr proper-list-p rassoc rassq
|
||||
safe-length string-bytes string-distance string-equal string-lessp
|
||||
string-search take
|
||||
string-search string-version-lessp take
|
||||
;; search.c
|
||||
regexp-quote
|
||||
;; syntax.c
|
||||
|
|
|
@ -1619,21 +1619,20 @@ extra args."
|
|||
(dolist (elt '(format message format-message error))
|
||||
(put elt 'byte-compile-format-like t))
|
||||
|
||||
(defun byte-compile--suspicious-defcustom-choice (type)
|
||||
"Say whether defcustom TYPE looks odd."
|
||||
;; Check whether there's anything like (choice (const :tag "foo" ;; 'bar)).
|
||||
(defun byte-compile--defcustom-type-quoted (type)
|
||||
"Whether defcustom TYPE contains an accidentally quoted value."
|
||||
;; Detect mistakes such as (const 'abc).
|
||||
;; We don't actually follow the syntax for defcustom types, but this
|
||||
;; should be good enough.
|
||||
(catch 'found
|
||||
(if (and (consp type)
|
||||
(proper-list-p type))
|
||||
(if (memq (car type) '(const other))
|
||||
(when (assq 'quote type)
|
||||
(throw 'found t))
|
||||
(when (memq t (mapcar #'byte-compile--suspicious-defcustom-choice
|
||||
type))
|
||||
(throw 'found t)))
|
||||
nil)))
|
||||
(and (consp type)
|
||||
(proper-list-p type)
|
||||
(if (memq (car type) '(const other))
|
||||
(assq 'quote type)
|
||||
(let ((elts (cdr type)))
|
||||
(while (and elts (not (byte-compile--defcustom-type-quoted
|
||||
(car elts))))
|
||||
(setq elts (cdr elts)))
|
||||
elts))))
|
||||
|
||||
;; Warn if a custom definition fails to specify :group, or :type.
|
||||
(defun byte-compile-nogroup-warn (form)
|
||||
|
@ -1647,10 +1646,10 @@ extra args."
|
|||
(byte-compile-warn-x (cadr name)
|
||||
"defcustom for `%s' fails to specify type"
|
||||
(cadr name)))
|
||||
((byte-compile--suspicious-defcustom-choice type)
|
||||
((byte-compile--defcustom-type-quoted type)
|
||||
(byte-compile-warn-x
|
||||
(cadr name)
|
||||
"defcustom for `%s' has syntactically odd type `%s'"
|
||||
"defcustom for `%s' may have accidentally quoted value in type `%s'"
|
||||
(cadr name) type)))))
|
||||
(if (and (memq (car form) '(custom-declare-face custom-declare-variable))
|
||||
byte-compile-current-group)
|
||||
|
@ -3567,6 +3566,8 @@ lambda-expression."
|
|||
;; when used on arrays, but most calls pass lists.
|
||||
nreverse sort
|
||||
|
||||
match-data
|
||||
|
||||
;; Adding these functions causes many warnings;
|
||||
;; evaluate how many of them are false first.
|
||||
delq delete
|
||||
|
|
|
@ -2398,9 +2398,9 @@ parameters SERVER and NICK."
|
|||
|
||||
(defun erc--ensure-url (input)
|
||||
(unless (string-match (rx bot "irc" (? "6") (? "s") "://") input)
|
||||
(when (and (string-match (rx (? (+ any) "@")
|
||||
(or (group (* (not "[")) ":" (* any))
|
||||
(+ any))
|
||||
(when (and (string-match (rx (? (+ nonl) "@")
|
||||
(or (group (* (not "[")) ":" (* nonl))
|
||||
(+ nonl))
|
||||
":" (+ (not (any ":]"))) eot)
|
||||
input)
|
||||
(match-beginning 1))
|
||||
|
|
|
@ -710,7 +710,11 @@ the C sources, too."
|
|||
(high-doc (cdr high)))
|
||||
(unless (and (symbolp function)
|
||||
(get function 'reader-construct))
|
||||
(insert high-usage "\n"))
|
||||
(insert high-usage "\n")
|
||||
(when (and (featurep 'native-compile)
|
||||
(subr-native-elisp-p (symbol-function function))
|
||||
(subr-type (symbol-function function)))
|
||||
(insert (format "\nInferred type: %s\n" (subr-type (symbol-function function))))))
|
||||
(fill-region fill-begin (point))
|
||||
high-doc)))))
|
||||
|
||||
|
|
|
@ -5374,7 +5374,7 @@ by a #."
|
|||
(zero-or-more (any " \t"))
|
||||
(group (group (zero-or-more (not (any " \t\n"))))
|
||||
(zero-or-more (any " \t"))
|
||||
(group (zero-or-more any)))))
|
||||
(group (zero-or-more nonl)))))
|
||||
limit t)
|
||||
(let ((beg (match-beginning 0))
|
||||
(end-of-beginline (match-end 0))
|
||||
|
@ -5400,7 +5400,7 @@ by a #."
|
|||
"#+end"
|
||||
,(match-string 4)
|
||||
word-end
|
||||
(zero-or-more any)))))
|
||||
(zero-or-more nonl)))))
|
||||
;; We look further than LIMIT on purpose.
|
||||
nil t)
|
||||
;; We do have a matching #+end line.
|
||||
|
@ -5473,7 +5473,7 @@ by a #."
|
|||
(beginning-of-line)
|
||||
(looking-at (rx (group (zero-or-more (any " \t"))
|
||||
"#+caption"
|
||||
(optional "[" (zero-or-more any) "]")
|
||||
(optional "[" (zero-or-more nonl) "]")
|
||||
":")
|
||||
(zero-or-more (any " \t")))))
|
||||
(add-text-properties (line-beginning-position) (match-end 1)
|
||||
|
|
|
@ -155,7 +155,7 @@
|
|||
,(rx bol (zero-or-more space)
|
||||
"(define-module"
|
||||
(one-or-more space)
|
||||
(group "(" (one-or-more any) ")"))
|
||||
(group "(" (one-or-more nonl) ")"))
|
||||
1)
|
||||
("Macros"
|
||||
,(rx bol (zero-or-more space) "("
|
||||
|
|
40
lisp/subr.el
40
lisp/subr.el
|
@ -205,6 +205,7 @@ buffer-local wherever it is set."
|
|||
(defun buffer-local-boundp (symbol buffer)
|
||||
"Return non-nil if SYMBOL is bound in BUFFER.
|
||||
Also see `local-variable-p'."
|
||||
(declare (side-effect-free t))
|
||||
(condition-case nil
|
||||
(buffer-local-value symbol buffer)
|
||||
(:success t)
|
||||
|
@ -298,6 +299,7 @@ value of last one, or nil if there are none."
|
|||
|
||||
(defsubst subr-primitive-p (object)
|
||||
"Return t if OBJECT is a built-in primitive function."
|
||||
(declare (side-effect-free error-free))
|
||||
(and (subrp object)
|
||||
(not (subr-native-elisp-p object))))
|
||||
|
||||
|
@ -415,6 +417,7 @@ The CONDITION argument is not evaluated. Do not quote it."
|
|||
"Return a new uninterned symbol.
|
||||
The name is made by appending `gensym-counter' to PREFIX.
|
||||
PREFIX is a string, and defaults to \"g\"."
|
||||
(declare (important-return-value t))
|
||||
(let ((num (prog1 gensym-counter
|
||||
(setq gensym-counter (1+ gensym-counter)))))
|
||||
(make-symbol (format "%s%d" (or prefix "g") num))))
|
||||
|
@ -497,6 +500,7 @@ Defaults to `error'."
|
|||
"Return non-nil if OBJECT seems to be a frame configuration.
|
||||
Any list whose car is `frame-configuration' is assumed to be a frame
|
||||
configuration."
|
||||
(declare (pure t) (side-effect-free error-free))
|
||||
(and (consp object)
|
||||
(eq (car object) 'frame-configuration)))
|
||||
|
||||
|
@ -506,6 +510,7 @@ ARGS is a list of the first N arguments to pass to FUN.
|
|||
The result is a new function which does the same as FUN, except that
|
||||
the first N arguments are fixed at the values with which this function
|
||||
was called."
|
||||
(declare (side-effect-free error-free))
|
||||
(lambda (&rest args2)
|
||||
(apply fun (append args args2))))
|
||||
|
||||
|
@ -1076,6 +1081,7 @@ any corresponding binding in PARENT, but it does not override corresponding
|
|||
bindings in other keymaps of MAPS.
|
||||
MAPS can be a list of keymaps or a single keymap.
|
||||
PARENT if non-nil should be a keymap."
|
||||
(declare (side-effect-free t))
|
||||
`(keymap
|
||||
,@(if (keymapp maps) (list maps) maps)
|
||||
,@parent))
|
||||
|
@ -1216,6 +1222,7 @@ This resolves inheritance and redefinitions. The returned keymap
|
|||
should behave identically to a copy of KEYMAP w.r.t `lookup-key'
|
||||
and use in active keymaps and menus.
|
||||
Subkeymaps may be modified but are not canonicalized."
|
||||
(declare (important-return-value t))
|
||||
;; FIXME: Problem with the difference between a nil binding
|
||||
;; that hides a binding in an inherited map and a nil binding that's ignored
|
||||
;; to let some further binding visible. Currently a nil binding hides all.
|
||||
|
@ -1538,6 +1545,7 @@ See also `current-global-map'.")
|
|||
|
||||
(defun listify-key-sequence (key)
|
||||
"Convert a key sequence to a list of events."
|
||||
(declare (side-effect-free t))
|
||||
(if (vectorp key)
|
||||
(append key nil)
|
||||
(mapcar (lambda (c)
|
||||
|
@ -1565,6 +1573,7 @@ EVENT may be an event or an event type. If EVENT is a symbol
|
|||
that has never been used in an event that has been read as input
|
||||
in the current Emacs session, then this function may fail to include
|
||||
the `click' modifier."
|
||||
(declare (side-effect-free t))
|
||||
(unless (stringp event)
|
||||
(let ((type event))
|
||||
(if (listp type)
|
||||
|
@ -1598,6 +1607,7 @@ The value is a printing character (not upper case) or a symbol.
|
|||
EVENT may be an event or an event type. If EVENT is a symbol
|
||||
that has never been used in an event that has been read as input
|
||||
in the current Emacs session, then this function may return nil."
|
||||
(declare (side-effect-free t))
|
||||
(unless (stringp event)
|
||||
(if (consp event)
|
||||
(setq event (car event)))
|
||||
|
@ -1618,6 +1628,7 @@ in the current Emacs session, then this function may return nil."
|
|||
|
||||
(defun mouse-event-p (object)
|
||||
"Return non-nil if OBJECT is a mouse click event."
|
||||
(declare (side-effect-free t))
|
||||
;; is this really correct? maybe remove mouse-movement?
|
||||
(memq (event-basic-type object) '(mouse-1 mouse-2 mouse-3 mouse-movement)))
|
||||
|
||||
|
@ -1663,6 +1674,7 @@ nil or (STRING . POSITION)'.
|
|||
`posn-timestamp': The time the event occurred, in milliseconds.
|
||||
|
||||
For more information, see Info node `(elisp)Click Events'."
|
||||
(declare (side-effect-free t))
|
||||
(or (and (consp event)
|
||||
;; Ignore touchscreen events. They store the posn in a
|
||||
;; different format, and can have multiple posns.
|
||||
|
@ -1677,6 +1689,7 @@ For more information, see Info node `(elisp)Click Events'."
|
|||
EVENT should be a click, drag, or key press event.
|
||||
|
||||
See `event-start' for a description of the value returned."
|
||||
(declare (side-effect-free t))
|
||||
(or (and (consp event)
|
||||
(not (memq (car event) '(touchscreen-begin
|
||||
touchscreen-update
|
||||
|
@ -1687,11 +1700,13 @@ See `event-start' for a description of the value returned."
|
|||
(defsubst event-click-count (event)
|
||||
"Return the multi-click count of EVENT, a click or drag event.
|
||||
The return value is a positive integer."
|
||||
(declare (side-effect-free t))
|
||||
(if (and (consp event) (integerp (nth 2 event))) (nth 2 event) 1))
|
||||
|
||||
(defsubst event-line-count (event)
|
||||
"Return the line count of EVENT, a mousewheel event.
|
||||
The return value is a positive integer."
|
||||
(declare (side-effect-free t))
|
||||
(if (and (consp event) (integerp (nth 3 event))) (nth 3 event) 1))
|
||||
|
||||
;;;; Extracting fields of the positions in an event.
|
||||
|
@ -1701,6 +1716,7 @@ The return value is a positive integer."
|
|||
A `posn' object is returned from functions such as `event-start'.
|
||||
If OBJ is a valid `posn' object, but specifies a frame rather
|
||||
than a window, return nil."
|
||||
(declare (side-effect-free error-free))
|
||||
;; FIXME: Correct the behavior of this function so that all valid
|
||||
;; `posn' objects are recognized, after updating other code that
|
||||
;; depends on its present behavior.
|
||||
|
@ -1714,12 +1730,14 @@ than a window, return nil."
|
|||
If POSITION is outside the frame where the event was initiated,
|
||||
return that frame instead. POSITION should be a list of the form
|
||||
returned by the `event-start' and `event-end' functions."
|
||||
(declare (side-effect-free t))
|
||||
(nth 0 position))
|
||||
|
||||
(defsubst posn-area (position)
|
||||
"Return the window area recorded in POSITION, or nil for the text area.
|
||||
POSITION should be a list of the form returned by the `event-start'
|
||||
and `event-end' functions."
|
||||
(declare (side-effect-free t))
|
||||
(let ((area (if (consp (nth 1 position))
|
||||
(car (nth 1 position))
|
||||
(nth 1 position))))
|
||||
|
@ -1731,6 +1749,7 @@ POSITION should be a list of the form returned by the `event-start'
|
|||
and `event-end' functions.
|
||||
Returns nil if POSITION does not correspond to any buffer location (e.g.
|
||||
a click on a scroll bar)."
|
||||
(declare (side-effect-free t))
|
||||
(or (nth 5 position)
|
||||
(let ((pt (nth 1 position)))
|
||||
(or (car-safe pt)
|
||||
|
@ -1756,6 +1775,7 @@ Select the corresponding window as well."
|
|||
The return value has the form (X . Y), where X and Y are given in
|
||||
pixels. POSITION should be a list of the form returned by
|
||||
`event-start' and `event-end'."
|
||||
(declare (side-effect-free t))
|
||||
(nth 2 position))
|
||||
|
||||
(declare-function scroll-bar-scale "scroll-bar" (num-denom whole))
|
||||
|
@ -1775,6 +1795,7 @@ corresponds to the vertical position of the click in the scroll bar.
|
|||
|
||||
POSITION should be a list of the form returned by the `event-start'
|
||||
and `event-end' functions."
|
||||
(declare (side-effect-free t))
|
||||
(let* ((pair (posn-x-y position))
|
||||
(frame-or-window (posn-window position))
|
||||
(frame (if (framep frame-or-window)
|
||||
|
@ -1820,12 +1841,14 @@ This function does not account for the width on display, like the
|
|||
number of visual columns taken by a TAB or image. If you need
|
||||
the coordinates of POSITION in character units, you should use
|
||||
`posn-col-row', not this function."
|
||||
(declare (side-effect-free t))
|
||||
(nth 6 position))
|
||||
|
||||
(defsubst posn-timestamp (position)
|
||||
"Return the timestamp of POSITION.
|
||||
POSITION should be a list of the form returned by the `event-start'
|
||||
and `event-end' functions."
|
||||
(declare (side-effect-free t))
|
||||
(nth 3 position))
|
||||
|
||||
(defun posn-string (position)
|
||||
|
@ -1833,6 +1856,7 @@ and `event-end' functions."
|
|||
Value is a cons (STRING . STRING-POS), or nil if not a string.
|
||||
POSITION should be a list of the form returned by the `event-start'
|
||||
and `event-end' functions."
|
||||
(declare (side-effect-free t))
|
||||
(let ((x (nth 4 position)))
|
||||
;; Apparently this can also be `handle' or `below-handle' (bug#13979).
|
||||
(when (consp x) x)))
|
||||
|
@ -1842,6 +1866,7 @@ and `event-end' functions."
|
|||
Value is a list (image ...), or nil if not an image.
|
||||
POSITION should be a list of the form returned by the `event-start'
|
||||
and `event-end' functions."
|
||||
(declare (side-effect-free t))
|
||||
(nth 7 position))
|
||||
|
||||
(defsubst posn-object (position)
|
||||
|
@ -1850,6 +1875,7 @@ Value is a list (image ...) for an image object, a cons cell
|
|||
\(STRING . STRING-POS) for a string object, and nil for a buffer position.
|
||||
POSITION should be a list of the form returned by the `event-start'
|
||||
and `event-end' functions."
|
||||
(declare (side-effect-free t))
|
||||
(or (posn-image position) (posn-string position)))
|
||||
|
||||
(defsubst posn-object-x-y (position)
|
||||
|
@ -1858,12 +1884,14 @@ The return value has the form (DX . DY), where DX and DY are
|
|||
given in pixels, and they are relative to the top-left corner of
|
||||
the clicked glyph of object at POSITION. POSITION should be a
|
||||
list of the form returned by `event-start' and `event-end'."
|
||||
(declare (side-effect-free t))
|
||||
(nth 8 position))
|
||||
|
||||
(defsubst posn-object-width-height (position)
|
||||
"Return the pixel width and height of the object of POSITION.
|
||||
The return value has the form (WIDTH . HEIGHT). POSITION should
|
||||
be a list of the form returned by `event-start' and `event-end'."
|
||||
(declare (side-effect-free t))
|
||||
(nth 9 position))
|
||||
|
||||
(defun values--store-value (value)
|
||||
|
@ -2624,6 +2652,7 @@ The variable list SPEC is the same as in `if-let*'."
|
|||
Uses the `derived-mode-parent' property of the symbol to trace backwards.
|
||||
If you just want to check `major-mode', use `derived-mode-p'."
|
||||
;; If MODE is an alias, then look up the real mode function first.
|
||||
(declare (side-effect-free t))
|
||||
(when-let ((alias (symbol-function mode)))
|
||||
(when (symbolp alias)
|
||||
(setq mode alias)))
|
||||
|
@ -2638,6 +2667,7 @@ If you just want to check `major-mode', use `derived-mode-p'."
|
|||
(defun derived-mode-p (&rest modes)
|
||||
"Non-nil if the current major mode is derived from one of MODES.
|
||||
Uses the `derived-mode-parent' property of the symbol to trace backwards."
|
||||
(declare (side-effect-free t))
|
||||
(apply #'provided-mode-derived-p major-mode modes))
|
||||
|
||||
(defvar-local major-mode--suspended nil)
|
||||
|
@ -2761,6 +2791,7 @@ If TOGGLE has a `:menu-tag', that is used for the menu item's label."
|
|||
|
||||
(defsubst autoloadp (object)
|
||||
"Non-nil if OBJECT is an autoload."
|
||||
(declare (side-effect-free error-free))
|
||||
(eq 'autoload (car-safe object)))
|
||||
|
||||
;; (defun autoload-type (object)
|
||||
|
@ -2805,6 +2836,7 @@ This is to `put' what `defalias' is to `fset'."
|
|||
(defun locate-eln-file (eln-file)
|
||||
"Locate a natively-compiled ELN-FILE by searching its load path.
|
||||
This function looks in directories named by `native-comp-eln-load-path'."
|
||||
(declare (important-return-value t))
|
||||
(or (locate-file-internal (concat comp-native-version-dir "/" eln-file)
|
||||
native-comp-eln-load-path)
|
||||
(locate-file-internal
|
||||
|
@ -2836,6 +2868,7 @@ instead.
|
|||
This function only works for symbols defined in Lisp files. For
|
||||
symbols that are defined in C files, use `help-C-file-name'
|
||||
instead."
|
||||
(declare (important-return-value t))
|
||||
(if (and (or (null type) (eq type 'defun))
|
||||
(symbolp symbol)
|
||||
(autoloadp (symbol-function symbol)))
|
||||
|
@ -2962,6 +2995,7 @@ argument, which will be called with the exit status of the
|
|||
program before the output is collected. If STATUS-HANDLER is
|
||||
nil, an error is signaled if the program returns with a non-zero
|
||||
exit status."
|
||||
(declare (important-return-value t))
|
||||
(with-temp-buffer
|
||||
(let ((status (apply #'call-process program nil (current-buffer) nil args)))
|
||||
(if status-handler
|
||||
|
@ -2982,12 +3016,14 @@ exit status."
|
|||
"Execute PROGRAM with ARGS, returning its output as a list of lines.
|
||||
Signal an error if the program returns with a non-zero exit status.
|
||||
Also see `process-lines-ignore-status'."
|
||||
(declare (important-return-value t))
|
||||
(apply #'process-lines-handling-status program nil args))
|
||||
|
||||
(defun process-lines-ignore-status (program &rest args)
|
||||
"Execute PROGRAM with ARGS, returning its output as a list of lines.
|
||||
The exit status of the program is ignored.
|
||||
Also see `process-lines'."
|
||||
(declare (important-return-value t))
|
||||
(apply #'process-lines-handling-status program #'ignore args))
|
||||
|
||||
(defun process-live-p (process)
|
||||
|
@ -3016,6 +3052,7 @@ process."
|
|||
(defun process-get (process propname)
|
||||
"Return the value of PROCESS' PROPNAME property.
|
||||
This is the last value stored with `(process-put PROCESS PROPNAME VALUE)'."
|
||||
(declare (side-effect-free t))
|
||||
(plist-get (process-plist process) propname))
|
||||
|
||||
(defun process-put (process propname value)
|
||||
|
@ -3962,6 +3999,7 @@ If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there."
|
|||
|
||||
(defun copy-overlay (o)
|
||||
"Return a copy of overlay O."
|
||||
(declare (important-return-value t))
|
||||
(let ((o1 (if (overlay-buffer o)
|
||||
(make-overlay (overlay-start o) (overlay-end o)
|
||||
;; FIXME: there's no easy way to find the
|
||||
|
@ -4171,6 +4209,7 @@ See Info node `(elisp)Security Considerations'.
|
|||
If the optional POSIX argument is non-nil, ARGUMENT is quoted
|
||||
according to POSIX shell quoting rules, regardless of the
|
||||
system's shell."
|
||||
(declare (important-return-value t))
|
||||
(cond
|
||||
((and (not posix) (eq system-type 'ms-dos))
|
||||
;; Quote using double quotes, but escape any existing quotes in
|
||||
|
@ -4288,6 +4327,7 @@ or byte-code."
|
|||
|
||||
(defun field-at-pos (pos)
|
||||
"Return the field at position POS, taking stickiness etc into account."
|
||||
(declare (important-return-value t))
|
||||
(let ((raw-field (get-char-property (field-beginning pos) 'field)))
|
||||
(if (eq raw-field 'boundary)
|
||||
(get-char-property (1- (field-end pos)) 'field)
|
||||
|
|
|
@ -669,10 +669,7 @@ Leave point at the first non-blank character after the tag."
|
|||
(if (assoc name attlist)
|
||||
(error "XML: (Not Well-Formed) Each attribute must be unique within an element"))
|
||||
|
||||
;; Multiple whitespace characters should be replaced with a single one
|
||||
;; in the attributes
|
||||
(let ((string (match-string-no-properties 1)))
|
||||
(replace-regexp-in-string "\\s-\\{2,\\}" " " string)
|
||||
(let ((expansion (xml-substitute-special string)))
|
||||
(unless (stringp expansion)
|
||||
;; We say this is the constraint. It is actually that
|
||||
|
|
|
@ -172,7 +172,7 @@ This function only tries to handle strings."
|
|||
(extracted-1 (dnd-tests-extract-selection-data string-data-1 t))
|
||||
(extracted (dnd-tests-extract-selection-data string-data t)))
|
||||
(should (and (stringp extracted) (stringp extracted-1)))
|
||||
(should (equal extracted extracted)))
|
||||
(should (equal extracted extracted-1)))
|
||||
;; Now check text/plain.
|
||||
(let ((string-data (dnd-tests-verify-selection-data
|
||||
'text/plain)))
|
||||
|
|
|
@ -1799,11 +1799,11 @@ EXPECTED-POINT BINDINGS (MODES \\='\\='(ruby-mode js-mode python-mode)) \
|
|||
(TEST-IN-COMMENTS t) (TEST-IN-STRINGS t) (TEST-IN-CODE t) \
|
||||
(FIXTURE-FN \\='#\\='electric-pair-mode))" fill-column)))
|
||||
|
||||
(defun test-bytecomp-defgroup-choice ()
|
||||
(should-not (byte-compile--suspicious-defcustom-choice 'integer))
|
||||
(should-not (byte-compile--suspicious-defcustom-choice
|
||||
(ert-deftest bytecomp-test-defcustom-type-quoted ()
|
||||
(should-not (byte-compile--defcustom-type-quoted 'integer))
|
||||
(should-not (byte-compile--defcustom-type-quoted
|
||||
'(choice (const :tag "foo" bar))))
|
||||
(should (byte-compile--suspicious-defcustom-choice
|
||||
(should (byte-compile--defcustom-type-quoted
|
||||
'(choice (const :tag "foo" 'bar)))))
|
||||
|
||||
(ert-deftest bytecomp-function-attributes ()
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
(ert-deftest find-cmd-test-find-cmd ()
|
||||
(should
|
||||
(string-match
|
||||
(rx "find " (+ any)
|
||||
(rx "find " (+ nonl)
|
||||
" \\( \\( -name .svn -or -name .git -or -name .CVS \\)"
|
||||
" -prune -or -true \\)"
|
||||
" \\( \\( \\(" " -name \\*.pl -or -name \\*.pm -or -name \\*.t \\)"
|
||||
|
|
Loading…
Add table
Reference in a new issue