Merge remote-tracking branch 'origin/master' into feature/pgtk

This commit is contained in:
Po Lu 2021-12-03 08:36:48 +08:00
commit 15d5af8cb0
23 changed files with 1447 additions and 704 deletions

View file

@ -1,3 +1,95 @@
2021-12-01 Juri Linkov <juri@linkov.net>
* lisp/repeat.el: Use same logic for repeat-check-key and repeat-exit-timeout.
* lisp/repeat.el (repeat-check-key): Use for repeat-check-key the same logic
as is used for repeat-exit-timeout in repeat-post-hook (bug#51390).
(repeat-post-hook): Check for repeat-exit-timeout symbol property.
2021-12-01 Juri Linkov <juri@linkov.net>
* lisp/help.el (help--analyze-key): Prefer posn-set-point over mouse-set-point
* lisp/help.el (help--analyze-key): Use posn-set-point instead of
mouse-set-point that runs the hook mouse-leave-buffer-hook via
mouse-minibuffer-check. Using posn-set-point also unnecessitates
extra conditions added in bug#51421.
* lisp/isearch.el (isearch-describe-key, isearch-describe-mode):
Add precautions to not call isearch-update when the executed
command exited isearch-mode (bug#51173).
2021-12-01 Stefan Kangas <stefan@marxist.se>
Bump Emacs version to 28.0.90
* README:
* configure.ac:
* msdos/sed2v2.inp:
* nt/README.W32: Bump Emacs version to 28.0.90.
2021-12-01 Alan Mackenzie <acm@muc.de>
CC Mode: Recognise "struct foo {" as introducing a type declaration
This fixes bug #52157.
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): If such a construct
is parsed, set the flag at-type-decl which is part of the function's return
value.
2021-12-01 Stefan Kangas <stefan@marxist.se>
Update authors.el for Emacs 28
* admin/authors.el (authors-aliases, authors-ignored-files)
(authors-renamed-files-alist): Update for Emacs 28.
2021-11-30 Juri Linkov <juri@linkov.net>
* lisp/repeat.el: Fix long-standing problem when a random key activates map
* lisp/repeat.el (repeat-check-key): New defcustom (bug#51390).
(repeat--command-property): New internal function.
(repeat-check-key): New function.
(repeat-post-hook): Use repeat--command-property and repeat-check-key.
* test/lisp/repeat-tests.el (repeat-tests-check-key): New test.
2021-11-30 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (repeat-keep-prefix): Change default to nil.
'repeat-keep-prefix' doesn't yet have sufficient support
that covers all cases in bug#51281, so it's disabled now.
2021-11-30 Juri Linkov <juri@linkov.net>
* test/lisp/repeat-tests.el (repeat-tests-call-b): Test for commit 588caf0b27.
This tests for 'repeat-map' as a variable instead of a symbol.
2021-11-30 Juri Linkov <juri@linkov.net>
* src/callint.c (Fcall_interactively): Fix inhibit_mouse_event_check.
Don't search for the next mouse event with parameters
when inhibit-mouse-event-check is non-nil (bug#50067).
2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
Fix regression in gdb-frame-handler
* lisp/progmodes/gdb-mi.el (gdb-frame-handler): Protect against
nil fullnames (bug#52196).
2021-11-30 YugaEgo <yet@ego.team> (tiny change)
Format and index concept 'predicate' in ELisp Intro
* doc/lispintro/emacs-lisp-intro.texi (Wrong Type of Argument):
Add index and format definition (bug#52197).
2021-11-29 Protesilaos Stavrou <info@protesilaos.com>
Remove problematic characters from modus-themes.org (bug#52126)
@ -130058,6 +130150,7 @@
to pacify LeakSanitizer.
2019-04-20 Michael R. Mauger <michael@mauger.com>
Fix Bug#35307.
* lisp/progmodes/sql.el(sql-product-alist): Added
@ -130067,6 +130160,7 @@
adjustments needed for Emacs to support it.
2019-04-20 Michael R. Mauger <michael@mauger.com>
Fix Bug#24483.
* lisp/progmodes/sql.el
@ -233319,9 +233413,7 @@
This file records repository revisions from
commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
2021-03-18bd67a4f40a733cb139ace3af4616bc2702282 (inclusive).
2021-02-03d9244f7cbef9f91e697ad5fc0ce49ec97 (inclusive).
commit 30553d889d733613e8e5fd22358980baa7ee148e (inclusive).
commit 334ff0232e07dad2ff5595b7f85c0f6f5efcb11c (inclusive).
See ChangeLog.2 for earlier changes.
;; Local Variables:

View file

@ -50,6 +50,7 @@ files.")
("Álvar Jesús Ibeas Martín" "Álvar Ibeas")
("Andrea Corallo" "AndreaCorallo")
("Andrew Csillag" "Drew Csillag")
("Andrew G Cohen" "Andrew Cohen")
("Anna M. Bigatti" "Anna Bigatti")
("Aurélien Aptel" "Aurelien Aptel")
("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
@ -59,6 +60,7 @@ files.")
("Bill Mann" "William F. Mann")
("Bill Rozas" "Guillermo J. Rozas")
(nil "binjo.cn@gmail.com")
(nil "bug-gnu-emacs@gnu.org") ; mistake
("Björn Torkelsson" "Bjorn Torkelsson")
("Brian Fox" "Brian J. Fox")
("Brian P Templeton" "BT Templeton")
@ -84,6 +86,7 @@ files.")
("Emilio C. Lopes" "Emilio Lopes")
("Eric M. Ludlam" "Eric Ludlam")
("Eric S. Raymond" "Eric Raymond")
("Etienne PrudHomme" "Etienne Prud'Homme")
("Fabián Ezequiel Gallina" "Fabian Ezequiel Gallina" "Fabi.n E\\. Gallina")
(nil "felix.*EmacsWiki")
(nil "foudfou")
@ -132,7 +135,6 @@ files.")
("Kim F. Storm" "Kim Storm")
("Kyle Jones" "Kyle E. Jones")
("Lars Magne Ingebrigtsen" "Lars Ingebrigtsen")
(nil "leo")
(nil "LynX@bk.ru")
(nil "lu4nx")
("Marcus G. Daniels" "Marcus Daniels")
@ -143,7 +145,8 @@ files.")
("Agustín Martín" "Agustin Martin" "Agustín Martín Domingo")
("Martin Lorentzon" "Martin Lorentzson")
("Matt Swift" "Matthew Swift")
(nil "Madhu")
("Mattias Engdegård" "Mattias Engdegard")
(nil "^Madhu")
(nil "mu@magi.net.ru")
("Maxime Edouard Robert Froumentin" "Max Froumentin")
("Michael R. Mauger" "Michael Mauger")
@ -206,7 +209,7 @@ files.")
("Takaaki Ota" "Tak Ota")
("Takahashi Naoto" "Naoto Takahashi")
("Teodor Zlatanov" "Ted Zlatanov")
(nil "TEC")
(nil "^TEC")
(nil "The PCL-CVS Trust")
("Thomas Dye" "Tom Dye")
("Thomas Horsley" "Tom Horsley") ; FIXME ?
@ -232,7 +235,7 @@ files.")
("Carlos Pita" "memeplex")
("Vinicius Jose Latorre" "viniciusjl")
("Gaby Launay" "galaunay")
("Dick R. Chiang" "dickmao" "dick")
("Dick R. Chiang" "dickmao")
)
"Alist of author aliases.

View file

@ -44,7 +44,7 @@ PD=${0%/*}
[ "$PD" = "$0" ] && PD=. # if PATH includes PWD
## This should be the admin directory.
cd $PD
cd $PD || exit
cd ../
[ -d admin ] || die "Could not locate admin directory"
@ -53,7 +53,7 @@ cd ../
usage ()
{
cat 1>&2 <<EOF
Usage: ${PN} [-f] [-c] [-q] [-A dir] [-I] [-L] [-C] [-- make-flags]
Usage: ${PN} [-f] [-c] [-q] [-A dir] [-L] [-C] [-- make-flags]
Update some auto-generated files in the Emacs tree.
By default, only does the versioned loaddefs-like files in lisp/.
This requires a build. Passes any non-option args to make (eg -- -j2).
@ -63,7 +63,6 @@ Options:
commit them (caution).
-q: be quiet; only give error messages, not status messages.
-A: only update autotools files, copying into specified dir.
-H: also update ChangeLog.${changelog_n}
-L: also update ldefs-boot.el.
-C: start from a clean state. Slower, but more correct.
EOF
@ -80,13 +79,10 @@ clean=
autogendir= # was "autogen"
ldefs_flag=1
lboot_flag=
changelog_flag=
## Parameters.
ldefs_in=lisp/loaddefs.el
ldefs_out=lisp/ldefs-boot.el
changelog_n=$(sed -n 's/CHANGELOG_HISTORY_INDEX_MAX *= *//p' Makefile.in)
changelog_files="ChangeLog.$changelog_n"
sources="configure.ac lib/Makefile.am"
## Files to copy into autogendir.
## Everything:
@ -106,10 +102,10 @@ done
tempfile=/tmp/$PN.$$
trap "rm -f $tempfile 2> /dev/null" EXIT
trap 'rm -f $tempfile 2> /dev/null' EXIT
while getopts ":hcfqA:HCIL" option ; do
while getopts ":hcfqA:CL" option ; do
case $option in
(h) usage ;;
@ -125,8 +121,6 @@ while getopts ":hcfqA:HCIL" option ; do
(C) clean=1 ;;
(H) changelog_flag=1 ;;
(L) lboot_flag=1 ;;
(\?) die "Bad option -$OPTARG" ;;
@ -321,14 +315,6 @@ modified=$(status $genfiles $ldefs_out $grammar_out) || die
commit "loaddefs" $modified || die "commit error"
## Less important than the other stuff, so do it last.
[ ! "$changelog_flag" ] || {
make change-history-nocommit || die "make change-history error"
modified=$(status $changelog_files) || die
commit "ChangeLog" $modified || die "commit error"
}
exit 0
### update_autogen ends here

View file

@ -8282,8 +8282,9 @@ images, such as U+00AD @sc{soft hyphen}.
@item bidi-control
This is a subset of @code{format-control}, but only includes
characters that are related to bi-directional control, like U+2069
@sc{pop directional isolate} and U+202A @sc{left-to-right embedding}.
characters that are related to bidirectional formatting control, like
U+2069 @sc{pop directional isolate} and U+202A @sc{left-to-right
embedding}. @xref{Bidirectional Display}.
Characters of Unicode General Category [Cf], such as U+200E
@sc{left-to-right mark}, but excluding characters that have graphic

View file

@ -966,6 +966,15 @@ use the function @code{process-tty-name} (@pxref{Process
Information}).
@end defvar
@defvar process-error-pause-time
If a process sentinel/filter function has an error, Emacs will (by
default) pause Emacs for @code{process-error-pause-time} seconds after
displaying this error, so that users will see the error in question.
However, this can lead to situations where Emacs becomes unresponsive
(if there's a lot of these errors happening), so this can be disabled
by setting @code{process-error-pause-time} to 0.
@end defvar
@node Deleting Processes
@section Deleting Processes
@cindex deleting processes

File diff suppressed because it is too large Load diff

View file

@ -43,7 +43,7 @@ development files are present on your system, and configure Emacs with
*** Double buffering is now enabled on the Haiku operating system.
Unlike X, there is no compile-time option to enable or disable
double-buffering. If you wish to disable double-buffering, change the
frame parameter `inhibit-double-buffering' instead.
frame parameter 'inhibit-double-buffering' instead.
** Emacs now installs the ".pdmp" file using a unique fingerprint in the name.
The file is typically installed using a file name akin to
@ -56,7 +56,7 @@ If your X server has support and you have the XInput 2 development headers
installed, you can configure Emacs with the option '--with-xinput2' to enable
this support.
The named feature `xinput2' can be used to test for the presence of
The named feature 'xinput2' can be used to test for the presence of
XInput 2 support from Lisp programs.
@ -75,6 +75,16 @@ time.
* Changes in Emacs 29.1
---
** 'write-file' will now copy some file mode bits.
If the current buffer is visiting a file that is executable, the
'C-c C-w' command will now make the new file executable, too.
+++
** New user option 'process-error-pause-time'.
This determines how long to pause Emacs after a process
filter/sentinel error has been handled.
+++
** New face 'variable-pitch-text'.
This face is like 'variable-pitch' (from which it inherits), but is
@ -91,7 +101,7 @@ on the mode lines (along with 'mode-line-inactive').
** The mode line now uses a proportional font by default.
To get the old monospaced mode line back, customize the
'mode-line-active' and 'mode-line-inactive' faces not to inherit from
the 'variable-pitch' face, or add this to your ~/.emacs:
the 'variable-pitch' face, or add this to your "~/.emacs":
(set-face-attribute 'mode-line-active nil :inherit 'mode-line)
(set-face-attribute 'mode-line-inactive nil :inherit 'mode-line)
@ -122,13 +132,15 @@ This is in addition to previously-supported ways of discovering 24-bit
color support: either via the "RGB" or "setf24" capabilities, or if
the 'COLORTERM' environment variable is set to the value "truecolor".
** ERT
+++
** New ERT variables 'ert-batch-print-length' and 'ert-batch-print-level'.
*** New ERT variables 'ert-batch-print-length' and 'ert-batch-print-level'.
These variables will override 'print-length' and 'print-level' when
printing Lisp values in ERT batch test results.
---
** Redefining an ERT test in batch mode now signals an error
*** Redefining an ERT test in batch mode now signals an error.
Executing 'ert-deftest' with the same name as an existing test causes
the previous definition to be discarded, which was probably not
intended when this occurs in batch mode. To remedy the error, rename
@ -168,7 +180,7 @@ command also works for non-Emoji characters.)
---
*** 'C-h b' uses outlining by default.
Set 'describe-bindings-outline' to nil to get the old behaviour.
Set 'describe-bindings-outline' to nil to get the old behavior.
---
*** Jumping to function/variable source now saves mark before moving point.
@ -310,8 +322,8 @@ the current buffer.
+++
*** Buffer names can now be stored in registers.
For instance, to enable jumping to the *Messages* buffer with
`C-x r j m':
For instance, to enable jumping to the "*Messages*" buffer with
'C-x r j m':
(set-register ?m '(buffer . "*Messages*"))
@ -382,7 +394,7 @@ the common "utm_" trackers from URLs.
To get the monospace font back, you can put something like the
following in your .gnus file:
(set-face-attribute 'gnus-header nil :inherit 'unspecified)
(set-face-attribute 'gnus-header nil :inherit 'unspecified)
---
*** The default value of 'gnus-treat-fold-headers' is now 'head'.
@ -591,8 +603,8 @@ updating the thumbnail file.
*** New user option 'dired-free-space'.
Dired will now, by default, include the free space in the first line
instead of having it on a separate line. To get the previous
behaviour back, say:
instead of having it on a separate line. To get the previous behavior
back, say:
(setq dired-free-space 'separate)
@ -741,6 +753,10 @@ with recent versions of Firefox.
** The function 'image-dired-get-exif-data' is now obsolete.
Use 'exif-parse-file' and 'exif-field' instead.
---
** 'insert-directory' alternatives should not change the free disk space line.
This change is now applied in 'dired-insert-directory'.
* Lisp Changes in Emacs 29.1
@ -761,7 +777,7 @@ This allows setting a minimum display width for a region of text.
+++
** New event type 'touch-end'.
This event is sent whenever the user's finger moves off the mouse
wheel on some mice, and when the user's finger moves off the touchpad.
wheel on some mice, or when the user's finger moves off the touchpad.
** Keymaps and key definitions
@ -1048,7 +1064,7 @@ This function is used to control where and if an xwidget stores
cookies set by web pages on disk.
** New variable 'help-buffer-under-preparation'.
This variable is bound to t during the preparation of a *Help* buffer.
This variable is bound to t during the preparation of a "*Help*" buffer.
* Changes in Emacs 29.1 on Non-Free Operating Systems

View file

@ -575,6 +575,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
(ns-scroll-event-delta-factor ns float "29.1")
;; process.c
(delete-exited-processes processes-basics boolean)
(process-error-pause-time processes-basics integer "29.1")
;; syntax.c
(parse-sexp-ignore-comments editing-basics boolean)
(words-include-escapes editing-basics boolean)

View file

@ -580,7 +580,9 @@ files in the active region if `dired-mark-region' is non-nil."
(defalias 'virtual-dired 'dired-virtual)
(defun dired-virtual (dirname &optional switches)
"Try to make the current buffer into a Dired buffer.
"Treat the current buffer as a Dired buffer showing directory DIRNAME.
Interactively, prompt for DIRNAME.
This command is rarely useful, but may be convenient if you want
to peruse and move around in the output you got from \"ls
-lR\" (or something similar), without having access to the actual
@ -588,8 +590,8 @@ file system.
Most Dired commands that don't consult the file system will work
as advertised, but commands that try to alter the file system
will usually fail. (If the output is from the current system,
most of those commands, too, will work fine.)
will usually fail. (However, if the output is from the current
system, most of those commands will work fine.)
If you have saved a Dired buffer in a file you can use \\[dired-virtual] to
resume it in a later session.

View file

@ -210,12 +210,13 @@ If a character, new links are unconditionally marked with that character."
:group 'dired-mark)
(defcustom dired-free-space 'first
"Whether to display free disk space in dired buffers.
"Whether and how to display the amount of free disk space in Dired buffers.
If nil, don't display.
If `separate', display on a separate line (along with used count).
If `first', display the free disk space on the first line."
If `first', display only the free disk space on the first line,
following the directory name."
:type '(choice (const :tag "On a separate line" separate)
(const :tag "On the first line" first)
(const :tag "On the first line, after directory name" first)
(const :tag "Don't display" nil))
:version "29.1"
:group 'dired)
@ -1658,7 +1659,10 @@ see `dired-use-ls-dired' for more details.")
(point))
((eq dired-free-space 'first)
(goto-char beg)
(when (and (looking-at " */")
(when (and (looking-at
(if (memq system-type '(windows-nt ms-dos))
" *[A-Za-z]:/"
" */"))
(progn
(end-of-line)
(eq (char-after (1- (point))) ?:)))

View file

@ -136,11 +136,12 @@ Other uses risk returning non-nil value that point to the wrong file."
(defvar macroexp--warned (make-hash-table :test #'equal :weakness 'key))
(defun macroexp--warn-wrap (msg form category)
(let ((when-compiled (lambda ()
(when (if (listp category)
(apply #'byte-compile-warning-enabled-p category)
(byte-compile-warning-enabled-p category))
(byte-compile-warn "%s" msg)))))
(let ((when-compiled
(lambda ()
(when (if (consp category)
(apply #'byte-compile-warning-enabled-p category)
(byte-compile-warning-enabled-p category))
(byte-compile-warn "%s" msg)))))
`(progn
(macroexp--funcall-if-compiled ',when-compiled)
,form)))

View file

@ -4745,7 +4745,6 @@ using \\<minibuffer-local-map>\\[next-history-element].
If optional second arg CONFIRM is non-nil, this function
asks for confirmation before overwriting an existing file.
Interactively, confirmation is required unless you supply a prefix argument."
;; (interactive "FWrite file: ")
(interactive
(list (if buffer-file-name
(read-file-name "Write file: "
@ -4756,33 +4755,44 @@ Interactively, confirmation is required unless you supply a prefix argument."
default-directory)
nil nil))
(not current-prefix-arg)))
(or (null filename) (string-equal filename "")
(progn
;; If arg is a directory name,
;; use the default file name, but in that directory.
(if (directory-name-p filename)
(setq filename (concat filename
(file-name-nondirectory
(or buffer-file-name (buffer-name))))))
(and confirm
(file-exists-p filename)
;; NS does its own confirm dialog.
(not (and (eq (framep-on-display) 'ns)
(listp last-nonmenu-event)
use-dialog-box))
(or (y-or-n-p (format-message
"File `%s' exists; overwrite? " filename))
(user-error "Canceled")))
(set-visited-file-name filename (not confirm))))
(set-buffer-modified-p t)
;; Make buffer writable if file is writable.
(and buffer-file-name
(file-writable-p buffer-file-name)
(setq buffer-read-only nil))
(save-buffer)
;; It's likely that the VC status at the new location is different from
;; the one at the old location.
(vc-refresh-state))
(let ((old-modes
(and buffer-file-name
;; File may have gone away; ignore errors in that case.
(ignore-errors (file-modes buffer-file-name)))))
(or (null filename) (string-equal filename "")
(progn
;; If arg is a directory name,
;; use the default file name, but in that directory.
(if (directory-name-p filename)
(setq filename (concat filename
(file-name-nondirectory
(or buffer-file-name (buffer-name))))))
(and confirm
(file-exists-p filename)
;; NS does its own confirm dialog.
(not (and (eq (framep-on-display) 'ns)
(listp last-nonmenu-event)
use-dialog-box))
(or (y-or-n-p (format-message
"File `%s' exists; overwrite? " filename))
(user-error "Canceled")))
(set-visited-file-name filename (not confirm))))
(set-buffer-modified-p t)
;; Make buffer writable if file is writable.
(and buffer-file-name
(file-writable-p buffer-file-name)
(setq buffer-read-only nil))
(save-buffer)
;; If the old file was executable, then make the new file
;; executable, too.
(when (and old-modes
(not (zerop (logand #o111 old-modes))))
(set-file-modes buffer-file-name
(logior (logand #o111 old-modes)
(file-modes buffer-file-name))))
;; It's likely that the VC status at the new location is different from
;; the one at the old location.
(vc-refresh-state)))
(defun file-extended-attributes (filename)
"Return an alist of extended attributes of file FILENAME.

View file

@ -2213,11 +2213,12 @@ unfolded."
(goto-char (point-max)))))))
(defun gnus--variable-pitch-p (face)
(or (eq face 'variable-pitch)
(let ((parent (face-attribute face :inherit)))
(if (eq parent 'unspecified)
nil
(seq-some #'gnus--variable-pitch-p (ensure-list parent))))))
(when face
(or (eq face 'variable-pitch)
(let ((parent (face-attribute face :inherit)))
(if (eq parent 'unspecified)
nil
(seq-some #'gnus--variable-pitch-p (ensure-list parent)))))))
(defun gnus-article-treat-fold-headers ()
"Fold message headers."

View file

@ -704,18 +704,14 @@ in the selected window."
(mouse-msg (if (or (memq 'click modifiers) (memq 'down modifiers)
(memq 'drag modifiers))
" at that spot" ""))
;; Use `mouse-set-point' to handle the case when a menu item
;; Use `posn-set-point' to handle the case when a menu item
;; is selected from the context menu that should describe KEY
;; at the position of mouse click that opened the context menu.
;; When no mouse was involved, don't use `mouse-set-point'.
(defn (if (or buffer
;; Clicks on the menu bar produce "event" that
;; is just '(menu-bar)', for which
;; `mouse-set-point' is not useful.
(and (not (windowp (posn-window (event-start event))))
(not (framep (posn-window (event-start event))))))
;; When no mouse was involved, don't use `posn-set-point'.
(defn (if buffer
(key-binding key t)
(save-excursion (mouse-set-point event) (key-binding key t)))))
(save-excursion (posn-set-point (event-end event))
(key-binding key t)))))
;; Handle the case where we faked an entry in "Select and Paste" menu.
(when (and (eq defn nil)
(stringp (aref key (1- (length key))))

View file

@ -1493,8 +1493,8 @@ Setup `char-width-table' appropriate for non-CJK language environment."
(aset char-acronym-table #x202D "LRO") ; LEFT-TO-RIGHT OVERRIDE
(aset char-acronym-table #x202E "RLO") ; RIGHT-TO-LEFT OVERRIDE
(aset char-acronym-table #x2060 "WJ") ; WORD JOINER
(aset char-acronym-table #x2066 "LTRI") ; LEFT-TO-RIGHT ISOLATE
(aset char-acronym-table #x2067 "RTLI") ; RIGHT-TO-LEFT ISOLATE
(aset char-acronym-table #x2066 "LRI") ; LEFT-TO-RIGHT ISOLATE
(aset char-acronym-table #x2067 "RLI") ; RIGHT-TO-LEFT ISOLATE
(aset char-acronym-table #x2069 "PDI") ; POP DIRECTIONAL ISOLATE
(aset char-acronym-table #x206A "ISS") ; INHIBIT SYMMETRIC SWAPPING
(aset char-acronym-table #x206B "ASS") ; ACTIVATE SYMMETRIC SWAPPING
@ -1520,16 +1520,18 @@ Setup `char-width-table' appropriate for non-CJK language environment."
(aset char-acronym-table (+ #xE0021 i) (format " %c TAG" (+ 33 i))))
(aset char-acronym-table #xE007F "->|TAG") ; CANCEL TAG
;; We can't use the \N{name} things here, because this file is used
;; too early in the build process.
(defvar glyphless--bidi-control-characters
'( ?\N{left-to-right embedding}
?\N{right-to-left embedding}
?\N{left-to-right override}
?\N{right-to-left override}
?\N{left-to-right isolate}
?\N{right-to-left isolate}
?\N{first strong isolate}
?\N{pop directional formatting}
?\N{pop directional isolate}))
'(#x202a ; ?\N{left-to-right embedding}
#x202b ; ?\N{right-to-left embedding}
#x202d ; ?\N{left-to-right override}
#x202e ; ?\N{right-to-left override}
#x2066 ; ?\N{left-to-right isolate}
#x2067 ; ?\N{right-to-left isolate}
#x2068 ; ?\N{first strong isolate}
#x202c ; ?\N{pop directional formatting}
#x2069)) ; ?\N{pop directional isolate})
(defun update-glyphless-char-display (&optional variable value)
"Make the setting of `glyphless-char-display-control' take effect.
@ -1628,8 +1630,8 @@ GROUP must be one of these symbols:
excluding characters that have graphic images,
such as U+00AD (SHY).
`bidi-control': A subset of `format-control', but only characters
that are relevant for bi-directional control, like
U+2069 (PDI) and U+202B (RLE).
that are relevant for bidirectional formatting control,
like U+2069 (PDI) and U+202B (RLE).
`variation-selectors':
Characters in the range U+FE00..U+FE0F, used for
selecting alternate glyph presentations, such as

View file

@ -521,14 +521,14 @@ This is like `describe-bindings', but displays only Isearch keys."
(interactive)
(let ((display-buffer-overriding-action isearch--display-help-action))
(call-interactively 'describe-key))
(isearch-update))
(when isearch-mode (isearch-update)))
(defun isearch-describe-mode ()
"Display documentation of Isearch mode."
(interactive)
(let ((display-buffer-overriding-action isearch--display-help-action))
(describe-function 'isearch-forward))
(isearch-update))
(when isearch-mode (isearch-update)))
(defalias 'isearch-mode-help 'isearch-describe-mode)

View file

@ -1,7 +1,7 @@
;;; ob-julia.el --- org-babel functions for julia code evaluation -*- lexical-binding: t; -*-
;; Copyright (C) 2013-2021 Free Software Foundation, Inc.
;; Authors: G. Jay Kerns, based on ob-R.el by Eric Schulte and Dan Davison
;; Authors: G. Jay Kerns
;; Maintainer: Pedro Bruel <pedro.bruel@gmail.com>
;; Keywords: literate programming, reproducible research, scientific computing
;; Homepage: https://github.com/phrb/ob-julia
@ -24,6 +24,8 @@
;;; Commentary:
;; Org-Babel support for evaluating julia code
;;
;; Based on ob-R.el by Eric Schulte and Dan Davison.
;;; Code:
(require 'cl-lib)

View file

@ -109,6 +109,18 @@ This is only effective if supported by your mouse or touchpad."
:type 'boolean
:version "29.1")
(defcustom pixel-scroll-precision-momentum-tick 0.16
"Number of seconds between each momentum scroll."
:group 'mouse
:type 'float
:version "29.1")
(defcustom pixel-scroll-precision-momentum-factor 0.95
"Factor by which to reduce scroll velocity on each momentum scroll"
:group 'mouse
:type 'float
:version "29.1")
(defun pixel-scroll-in-rush-p ()
"Return non-nil if next scroll should be non-smooth.
When scrolling request is delivered soon after the previous one,
@ -501,14 +513,14 @@ wheel."
It is a vector of the form [ VELOCITY TIME ]."
(or (window-parameter nil 'kinetic-state)
(set-window-parameter nil 'kinetic-state
(vector (make-ring 4) nil))))
(vector (make-ring 10) nil))))
(defun pixel-scroll-accumulate-velocity (delta)
"Accumulate DELTA into the current window's kinetic scroll state."
(let* ((state (pixel-scroll-kinetic-state))
(time (aref state 1)))
(when (and time (> (- (float-time) time) 0.5))
(aset state 0 (make-ring 45)))
(aset state 0 (make-ring 10)))
(ring-insert (aref state 0)
(cons (aset state 1 (float-time))
delta))))
@ -532,23 +544,26 @@ It is a vector of the form [ VELOCITY TIME ]."
(state nil))
(with-selected-window window
(setq state (pixel-scroll-kinetic-state))
(when (aref state 1)
(when (and (aref state 1)
(listp (aref state 0)))
(unwind-protect (progn
(aset state 0
(pixel-scroll-calculate-velocity state))
(/ (pixel-scroll-calculate-velocity state) 2))
(let ((velocity (aref state 0)))
(if (> velocity 0)
(while (> velocity 0)
(pixel-scroll-precision-scroll-up 1)
(setq velocity (1- velocity))
(sit-for 0.1)
(redisplay t))
(while (< velocity 0)
(pixel-scroll-precision-scroll-down 1)
(setq velocity (1+ velocity))
(sit-for 0.1)
(redisplay t)))))
(aset state 0 (make-ring 45))
(while (> velocity 1)
(pixel-scroll-precision-scroll-up (round velocity))
(setq velocity (* velocity
pixel-scroll-precision-momentum-factor))
(redisplay t)
(sit-for pixel-scroll-precision-momentum-tick)))
(while (< velocity -1)
(pixel-scroll-precision-scroll-down (round (abs velocity)))
(setq velocity (* velocity
pixel-scroll-precision-momentum-factor))
(redisplay t)
(sit-for pixel-scroll-precision-momentum-tick))))
(aset state 0 (make-ring 10))
(aset state 1 nil)))))))
;;;###autoload

View file

@ -10009,7 +10009,12 @@ This function might do hidden buffer changes."
(save-excursion
(goto-char type-start)
(let ((c-promote-possible-types t))
(c-forward-type)))))
(c-forward-type))))
;; Signal a type declaration for "struct foo {".
(when (and backup-at-type-decl
(eq (char-after) ?{))
(setq at-type-decl t)))
(setq backup-at-type at-type
backup-type-start type-start

View file

@ -345,7 +345,9 @@ For example, you can set it to <return> like `isearch-exit'."
(defcustom repeat-exit-timeout nil
"Break the repetition chain of keys after specified timeout.
When a number, exit the transient repeating mode after idle time
of the specified number of seconds."
of the specified number of seconds.
You can also set the property `repeat-exit-timeout' on the command symbol.
This property can override the value of this variable."
:type '(choice (const :tag "No timeout to exit repeating sequence" nil)
(number :tag "Timeout in seconds to exit repeating"))
:group 'convenience
@ -431,8 +433,9 @@ See `describe-repeat-maps' for a list of all repeatable commands."
(defun repeat-check-key (key map)
"Check if the last key is suitable to activate the repeating MAP."
(let ((property (repeat--command-property 'repeat-check-key)))
(or (if repeat-check-key (eq property 'no) (not (eq property t)))
(let* ((prop (repeat--command-property 'repeat-check-key))
(check-key (unless (eq prop 'no) (or prop repeat-check-key))))
(or (not check-key)
(lookup-key map (vector key))
;; Try without modifiers:
(lookup-key map (vector (event-basic-type key))))))
@ -475,14 +478,16 @@ See `describe-repeat-maps' for a list of all repeatable commands."
(cancel-timer repeat-exit-timer)
(setq repeat-exit-timer nil))
(when repeat-exit-timeout
(setq repeat-exit-timer
(run-with-idle-timer
repeat-exit-timeout nil
(lambda ()
(setq repeat-in-progress nil)
(funcall exitfun)
(funcall repeat-echo-function nil)))))))))))
(let* ((prop (repeat--command-property 'repeat-exit-timeout))
(timeout (unless (eq prop 'no) (or prop repeat-exit-timeout))))
(when timeout
(setq repeat-exit-timer
(run-with-idle-timer
timeout nil
(lambda ()
(setq repeat-in-progress nil)
(funcall exitfun)
(funcall repeat-echo-function nil))))))))))))
(setq repeat-map nil)
(setq repeat--prev-mb (cons (minibuffer-depth) current-minibuffer-command))

View file

@ -34,7 +34,7 @@ The value can be any of the groups supported by
(const :tag "C0 Control" c0-control)
(const :tag "C1 Control" c1-control)
(const :tag "Format Control" format-control)
(const :tag "Bi-directional Control" bidi-control)
(const :tag "Bidirectional Control" bidi-control)
(const :tag "Variation Selectors" variation-selectors)
(const :tag "No Font" no-font)))
:group 'display)

View file

@ -5994,7 +5994,8 @@ read_process_output_error_handler (Lisp_Object error_val)
cmd_error_internal (error_val, "error in process filter: ");
Vinhibit_quit = Qt;
update_echo_area ();
Fsleep_for (make_fixnum (2), Qnil);
if (process_error_pause_time > 0)
Fsleep_for (make_fixnum (process_error_pause_time), Qnil);
return Qt;
}
@ -7421,7 +7422,8 @@ exec_sentinel_error_handler (Lisp_Object error_val)
cmd_error_internal (error_val, "error in process sentinel: ");
Vinhibit_quit = Qt;
update_echo_area ();
Fsleep_for (make_fixnum (2), Qnil);
if (process_error_pause_time > 0)
Fsleep_for (make_fixnum (process_error_pause_time), Qnil);
return Qt;
}
@ -8577,6 +8579,12 @@ Enlarge the value only if the subprocess generates very large (megabytes)
amounts of data in one go. */);
read_process_output_max = 4096;
DEFVAR_INT ("process-error-pause-time", process_error_pause_time,
doc: /* The number of seconds to pause after handling process errors.
This isn't used for all process-related errors, but is used when a
sentinel or a process filter function has an error. */);
process_error_pause_time = 1;
DEFSYM (Qinternal_default_interrupt_process,
"internal-default-interrupt-process");
DEFSYM (Qinterrupt_process_functions, "interrupt-process-functions");

View file

@ -28817,6 +28817,21 @@ normal_char_height (struct font *font, int c)
return ascent + descent;
}
/* Return the "standard" pixel width of a character from FACE's font,
if the font is fixed-pitch, zero otherwise. */
static int
get_normal_width (struct face *face)
{
struct font *ascii_font = face->ascii_face->font;
/* Heuristics: fixed-pitch fonts have the value of MAX-WIDTH not
much larger than AVERAGE-WIDTH. */
bool fixed_pitch =
ascii_font->average_width == ascii_font->space_width
&& ascii_font->average_width != 0
&& ascii_font->max_width < 3 * ascii_font->average_width;
return fixed_pitch ? ascii_font->space_width : 0;
}
/* EXPORT for RIF:
Set *LEFT and *RIGHT to the left and right overhang of GLYPH on
frame F. Overhangs of glyphs other than type CHAR_GLYPH are
@ -30914,6 +30929,17 @@ gui_produce_glyphs (struct it *it)
it->phys_ascent = pcm->ascent + boff;
it->phys_descent = pcm->descent - boff;
it->pixel_width = pcm->width;
if (align_columns_display)
{
int unit_width = get_normal_width (face);
if (unit_width > 0)
{
int ncolumns =
(it->pixel_width - 1 + unit_width) / unit_width;
it->pixel_width = ncolumns * unit_width;
}
}
/* Don't use font-global values for ascent and descent
if they result in an exceedingly large line height. */
if (it->override_ascent < 0)
@ -31491,6 +31517,17 @@ gui_produce_glyphs (struct it *it)
it->glyph_row->contains_overlapping_glyphs_p = true;
it->pixel_width = cmp->pixel_width;
if (align_columns_display)
{
int unit_width = get_normal_width (face);
if (unit_width > 0)
{
int ncolumns =
(it->pixel_width - 1 + unit_width) / unit_width;
it->pixel_width = ncolumns * unit_width;
}
}
it->ascent = it->phys_ascent = cmp->ascent;
it->descent = it->phys_descent = cmp->descent;
IT_APPLY_FACE_BOX(it, face);
@ -31536,6 +31573,17 @@ gui_produce_glyphs (struct it *it)
it->glyph_row->contains_overlapping_glyphs_p = true;
it->ascent = it->phys_ascent = metrics.ascent;
it->descent = it->phys_descent = metrics.descent;
if (align_columns_display)
{
int unit_width = get_normal_width (face);
if (unit_width > 0)
{
int ncolumns =
(it->pixel_width - 1 + unit_width) / unit_width;
it->pixel_width = ncolumns * unit_width;
}
}
}
IT_APPLY_FACE_BOX(it, face);
@ -35612,6 +35660,15 @@ variable are ignored and the default 0.25 is used instead. */);
Value is a number or a cons (WIDTH-DPI . HEIGHT-DPI). */);
Vdisplay_pixels_per_inch = make_float (72.0);
DEFVAR_BOOL ("align-columns-display", align_columns_display,
doc: /* Whether to align columns on GUI frames.
If this is non-nil characters displayed on GUI frames will be
aligned to produce straight columns. This is achieved by
enlarging the pixel width of characters to an integral
multiple of pixels taken by ASCII characters of the same face.
This affects only fixed-pitch fonts. */);
align_columns_display = false;
#ifdef GLYPH_DEBUG
DEFVAR_INT ("debug-end-pos", debug_end_pos, doc: /* Don't ask. */);
#endif